Extração de Linhas de Produtos de Software

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

Download "Extração de Linhas de Produtos de Software"

Transcrição

1 Extração de Linhas de Produtos de Software Um Estudo de Caso Usando Diretivas de Pré-Processamento Marcus Vinícius de Ávila Couto Instituto de Informática Pontifícia Universidade Católica de Minas Gerais Marco Túlio Valente, Eduardo Figueiredo Departamento de Ciência da Computação Universidade Federal de Minas Gerais Resumo Abordagens de desenvolvimento de Linhas de Produtos de Software (LPS) estão cada vez mais atraindo a atenção da indústria e da academia. Tais abordagens propõem o reúso sistemático e em larga escala de componentes que implementam funcionalidades comuns (chamadas features) a mais de um produto em um domínio específico. Apesar do ganho de popularidade, ainda são escassas implementações públicas de LPS de médio a grande porte. A pesquisa atual nesta área geralmente se vale de pequenos sistemas sintetizados em laboratório para demonstrar ou avaliar conceitos e princípios básicos de LPS. Esses estudos são certamente úteis, mas limitados, por não permitirem uma avaliação mais ampla da escalabilidade de abordagens de LPS. Para minimizar esse problema, este artigo relata uma experiência prática de extração de uma linha de produtos de software a partir de um sistema real chamado ArgoUML. O código responsável por quatro features que abrangem cerca de 23% das 76 KLOC do sistema foi delimitado usando diretivas de pré-processamento. O artigo faz então uma análise quantitativa do código das features delimitadas sobre quatro perspectivas: tamanho, granularidade, transversalidade e localização. O resultado de tal análise nos permite identificar cenários propícios ou não para utilização das diversas técnicas existentes para implementação de LPS. I. Introdução Linhas de Produtos de Software (LPS) constitui uma abordagem emergente para projeto e implementação de sistemas que procura promover o reúso sistemático de componentes de software [1], [2]. O objetivo final é migrar para uma cultura de desenvolvimento onde novos sistemas são sempre derivados a partir de um conjunto de componentes e artefatos comuns (os quais constituem o núcleo da linha de produtos). Além de componentes do núcleo, uma linha de produtos inclui componentes responsáveis pela implementação de features que somente são necessárias em determinados domínios ou ambientes de uso. Assim, um produto específico de uma LPS é gerado compondo-se os componentes do núcleo com componentes que implementam as features particulares desse produto. Os princípios básicos de linhas de produtos de software foram propostos a cerca de 10 anos (ou até há mais tempo, visto que em essência eles apenas procuram sistematizar estratégias de reúso que sempre nortearam o projeto e implementação de sistemas [3]). No entanto, de um ponto de vista de implementação, ainda não se tem conhecimento de implementações públicas de linhas de produtos de software envolvendo sistemas de médio para grande porte. Normalmente, trabalhos de pesquisa nessa área se valem de sistemas de pequeno porte, que foram integralmente implementados em laboratório pelos próprios autores desses trabalhos. Como exemplo, podemos citar as seguintes linhas de produtos: Expression Product Line [4], Graph Product Line [5] e Mobile Media Product Line [6]. Certamente, linhas de produtos sintetizadas em laboratórios são úteis para demonstrar, avaliar e promover os princípios básicos dessa abordagem de desenvolvimento. Adicionalmente, elas tornam mais simples a investigação e aplicação de novas técnicas, ferramentas e linguagens com suporte a linhas de produtos. Por outro lado, devido a sua própria natureza, sistemas de laboratório não permitem uma avaliação mais precisa sobre a escalabilidade e aplicabilidade de abordagens de desenvolvimento orientadas por linhas de produtos. Em resumo, sendo um recurso para reúso em larga escala, é fundamental avaliar se os resultados recentes de pesquisas na área de LPS via de regra obtidos em laboratórios podem ser extrapolados para ambientes e sistemas reais de programação. Assim, descreve-se neste artigo uma experiência prática de extração de uma linha de produtos de software a partir de um sistema real. O sistema alvo dessa experiência foi o ArgoUML, uma ferramenta de código aberto largamente utilizada para projeto de sistemas em UML. Na versão analisada do sistema, a implementação de diversas features opcionais encontra-se entrelaçada com a implementação de funcionalidades mandatórias da ferramenta. Mais especificamente, descreve-se no trabalho uma experiência por meio da qual o código responsável por quatro features importantes porém não imprescindíveis ao funcionamento do sistema foi delimitado usando-se diretivas de pré-processamento. Com isso, viabilizou-se a geração de produtos de ArgoUML sem uma ou mais destas features opcionais. A versão analisada do ArgoUML possui cerca de 76 KLOC, sendo que dessas linhas cerca de 14 KLOC foram marcadas como pertencentes a pelo menos uma das quatro features consideradas no estudo. Tais números são bastante superiores a qualquer outra experiência que conhecemos de extração de features documentada na literatura.

2 Adicionalmente, apresenta-se no artigo uma análise e caracterização detalhada da LPS extraída. Basicamente, nessa análise procura-se fornecer informações sobre o tamanho das features extraídas (em linhas de código), sobre o grau de transversalidade das features extraídas, sobre a granularidade dos componentes responsáveis pela implementação das features e sobre localização sintática dos trechos de código responsáveis pela implementação das features extraídas. O restante desse artigo está organizado conforme descrito a seguir. Na Seção II, apresenta-se uma visão geral da linha de produtos proposta, denominada ArgoUML- SPL, incluindo uma descrição da arquitetura do sistema base (ArgoUML) e das features extraídas para essa linha de produtos. Na Seção III, descreve-se o processo de extração, detalhando a metodologia usada para delimitação das features por meio de diretivas de pré-processamento. Na Seção IV, realiza-se uma análise quantitativa das features extraídas, usando para isso métricas de tamanho, transversalidade, granularidade e localização no código. A Seção V discute como as features extraídas podem ser classificadas, de acordo com alguns padrões normalmente utilizados na literatura. Essa seção apresenta também alguns desafios e problemas que seriam enfrentados caso se desejasse modularizar as features consideradas no trabalho usando orientação por aspectos. Por fim, a Seção VI discute trabalhos relacionados e a Seção VII conclui o artigo, apresentando também possíveis linhas de trabalhos futuros. linguagens Java, C++ e Python são exemplos de subsistemas carregáveis. Baixo Nível: são subsistemas responsáveis por tarefas como configuração, internacionalização, gerenciamento de tarefas, gerenciamento de modelos e para implementação de interfaces gráficas. Controle e Visão: são subsistemas responsáveis por controlar os outros subsistemas. Alto Nível: é o subsistema responsável por inicializar os demais subsistemas, ou seja, contém o método main() da aplicação. Cada subsistema que é utilizado por outros subsistemas deve prover dois meios de comunicação: uma classe de fachada (Padrão Facade [9]) e uma API com métodos públicos ou protegidos. A classe de fachada provê as funções mais comuns para que os subsistemas comuniquemse uns com os outros. Isto reduz a necessidade de utilizar outros métodos além daqueles providos pelas classes de fachada. As APIs que proveem acesso a métodos públicos ou protegidos são utilizadas quando não é conveniente a utilização de classes de fachada em uma determinada implementação. Em resumo, na arquitetura planejada do ArgoUML, uma classe de fachada é parte de uma API ou uma versão simplificada de uma API. II. ArgoUML-SPL A extração de uma LPS a partir de uma versão monolítica da ferramenta ArgoUML teve como objetivo principal disponibilizar à comunidade de pesquisadores da área uma linha de produtos real, criada a partir de um software relevante, maduro e de relativa complexidade. A ferramenta ArgoUML é um sistema de código aberto, largamente utilizada para modelagem de sistemas em UML. O sistema encontra-se implementado em Java e possui aproximadamente 76 KLOC. A. Arquitetura O ArgoUML possui uma arquitetura em camadas, apresentada na Figura 1. Essa arquitetura inclui os seguintes subsistemas [8]: Externos: são bibliotecas de terceiros utilizadas no ArgoUML e que não são mantidas pelo projeto, tais como bibliotecas para edição gráfica e para especificação de restrições em OCL. Carregáveis: são subsistemas que devem ser conectados ao ArgoUML apenas por meio de interfaces providas por outros subsistemas, o que permite habilitá-los ou desabilitá-los através de um módulo de carregamento. Esses módulos funcionam como plugins que podem ser acrescentados ao ArgoUML. Os módulos de geração de código e engenharia reversa para as B. Features Figura 1. Arquitetura do ArgoUML-SPL. Para criação do ArgoUML-SPL, foram selecionadas quatro features representando requisitos funcionais e não funcionais do sistema. A feature Logging é um representante dos requisitos não funcionais do sistema. Essa feature tem por finalidade registrar eventos de exceções e informações para debug, sendo que a sua escolha deveu-se à sua natureza espalhada e entrelaçada ao código base do sistema. As outras três features escolhidas representam requisitos funcionais. São elas: Suporte Cognitivo, Diagrama de Estados e Diagrama de Atividades. A feature Suporte Cognitivo tem por finalidade prover informações aos projetistas para auxiliá-los a detectar

3 e resolver problemas em seus projetos [10]. A feature é implementada por agentes de software que ficam em execução contínua em segundo plano efetuando análises sobre os diagramas criados, com a finalidade de detectar eventuais problemas nos mesmos. Esses agentes podem recomendar boas práticas a serem seguidas na construção do modelo, fornecer lembretes sobre partes do projeto que ainda não foram finalizadas ou sobre a presença de erros de sintaxe, dentre outras tarefas. A feature Diagrama de Estados tem por finalidade acrescentar ao sistema a opção de criação de diagramas de estado, que são diagramas UML usados para mapear os possíveis estados de um objeto. A feature Diagrama de Atividades acrescenta ao sistema a possibilidade de criação de diagramas de atividade, que são diagramas UML que descrevem o do fluxo de dados de um sistema. Além de representarem funcionalidades relevantes do sistema, essas duas features foram selecionados pelo fato de possuírem código compartilhado e, portanto, podem fornecer cenários interessantes ao se efetuar a refatoração do sistema. O modelo de features atual da linha de produtos ArgoUML-SPL é mostrado na Figura 2. Nesse modelo, define-se que os diagramas de classes, caso de uso, colaboração, implantação e sequência são obrigatórios 1 ; já Diagrama de Estados, Diagrama de Atividades, Suporte Cognitivo e Logging são consideradas features opcionais. ao utilizar pré-processadores no trabalho, pretendeu-se disponibilizar uma LPS que servisse como benchmark [14] para outras tecnologias de modularização, como orientação por aspectos. Em outras palavras, pretende-se com o ArgoUML-SPL disponibilizar um sistema-desafio, que contribua para avaliar o real poder de expressão de técnicas modernas de modularização e separação de interesses. Como Java não possui suporte nativo para diretivas de pré-processamento, foi utilizada uma ferramenta denominada javapp 2. Essa ferramenta disponibiliza diretivas similares àquelas existentes em C/C++, incluindo #ifdef, #ifndef e #else. Basicamente, tais diretivas informam ao pré-processador se o código fonte delimitado pela diretiva deve ou não ser compilado. Dessa maneira, é possível selecionar os trechos de código que estarão presentes na versão final de um determinado produto. A Figura 3 apresenta um exemplo de código anotado. Nessa figura, o código da linha 3 foi anotado como pertencente à feature Suporte Cognitivo, ou seja, essa linha será incluída apenas em produtos que incluam tal feature. Por outro lado, o código da linha 5 somente será incluído em produtos que não incluam a feature Suporte Cognitivo. 1 JPanel todopanel ; 2 //#i f COGNITIVE 3 todopanel = new ToDoPane ( s p l a s h ) ; 4 //#e l s e 5 todopanel = new JPanel ( ) ; 6 //#e n d i f Figura 3. Exemplo de código anotado Figura 2. Modelo de Features atualmente implementado. III. Processo de Extração A tecnologia de pré-processadores foi empregada na extração da linha de produto de software que originou o projeto ArgoUML-SPL. Claramente, diretivas de préprocessamento são conhecidas por sua capacidade de poluir o código com anotações extras, tornando-o menos legível e mais difícil de entender, manter e evoluir [11], [12], [13]. Por outro lado, pré-processadores também possuem algumas vantagens, incluindo a facilidade de utilização e entendimento. Mais importante, pré-processadores permitem a anotação de qualquer trecho de código. Ou seja, eles constituem a tecnologia mais primitiva e ao mesmo tempo mais poderosa para marcação de features. Assim, 1 O modelo de features mostrado representa a versão atual da LPS extraída no trabalho. Por isso, os diagramas UML não delimitados com diretivas de pré-processamento foram considerados mandatórios. Para automatizar a geração dos dezesseis possíveis produtos da LPS implementada, foi utilizado um conjunto de scripts ant. Basicamente, esses scripts permitem que os desenvolvedores informem quais features devem ser incluídas em um determinado produto. Feito isso, eles se encarregam da execução do pré-processador javapp, bem como da compilação e empacotamento do produto selecionado pelo desenvolvedor. Anotação do Código: A identificação dos elementos de código do ArgoUML pertencentes a uma determinada feature foi feita manualmente por um dos pesquisadores envolvidos na criação da LPS. Como esse pesquisador não era especialista na ferramenta, o primeiro passo para essa extração consistiu em um estudo detalhado da arquitetura do sistema, principalmente com o auxílio de seu cookbook [8]. Após um entendimento básico da arquitetura do ArgoUML, o seu código fonte foi estudado a fim de identificar os pontos em que cada feature era demandada. Nesta tarefa de exploração do código fonte, utilizou-se o ambiente de desenvolvimento Eclipse. Os recursos de busca textual e busca por referências dessa IDE foram extensivamente usados para auxiliar na localização dos trechos de código 2 Disponível em

4 relativos a cada uma das features. Neste processo, uma vez identificado que um determinado trecho de código X apenas deveria ser compilado caso uma determinada feature F fosse selecionada, procedia-se à sua delimitação por meio de anotações tais como #ifdef e #endif. O ArgoUML possui diversas classes responsáveis pela automatização de testes unitários. Essas classes, criadas com apoio do framework JUnit, não foram anotadas e portanto, não fazem parte do ArgoUML-SPL. Inicialmente, a validação dos diversos produtos gerados pela LPS extraída foi feita por meio de testes funcionais, do tipo caixa preta. Esses testes visaram principalmente a validação do produto gerado de acordo com a seleção de features efetuada. Em tais testes foi avaliada a estabilidade do sistema e comparado o funcionamento do ArgoUML original com o produto gerado pela LPS. Por exemplo, suponha um produto com todas as features, exceto Diagrama de Estados. Durante os testes, esse produto foi gerado e então executado para avaliar o seu correto funcionamento (isto é, se no produto gerado a opção de criação de diagrama de estados tinha sido de fato removida). Esse procedimento foi repetido para todos as features opcionais da LPS extraída. A segunda parte da validação consistiu em uma inspeção manual de todo código fonte do sistema, a fim de verificar se os elementos sintáticos responsáveis por cada feature haviam sido de fato anotados. Ao final desse processo, a LPS extraída foi enviada para os projetistas do sistema ArgoUML, que após avaliação aprovaram a sua hospedagem no website oficial da comunidade. O principal critério para aprovação do ArgoUML- SPL como um dos sub-projetos de ArgoUML foi a sua potencial contribuição para evolução e modernização da ferramenta. Espera-se que essa hospedagem pública no repositório de versões do ArgoUML possa atrair desenvolvedores interessados em ampliar o número de features atualmente disponibilizadas pela LPS. IV. Caracterização da LPS Extraída A fim de estudar propriedades das features anotadas, foram coletados quatro conjuntos de métricas: métricas de tamanho, métricas de transversalidade, métricas de granularidade e métricas de localização. Essas métricas e os valores coletados para elas serão detalhados nas próximas subseções. A. Métricas de Tamanho Essas métricas se destinam a medir o total de linhas de código, classes e pacotes envolvidos em cada feature do sistema. Mais especificamente, foram coletadas as seguintes métricas: LOC (Lines Of Code): conta o total de linhas de código, sem comentários e linhas em branco, para cada produto gerado pela LPS; #Pacotes: conta o número de pacotes presentes em cada produto gerado pela LPS; #Classes: conta o número de classes presentes em cada produto gerado pela LPS; LOF (Lines Of Feature): proposta por Liebig et al. [15], essa métrica conta o total de linhas de código, sem comentários e linhas em branco, responsáveis pela implementação de cada feature, ou seja, a quantidade de linhas de código no interior das diretivas #ifdef e #endif que delimitam cada feature extraída na LPS. Logo, a métrica LOF equivale à diferença entre o LOC do produto com todas as features e o LOC do produto gerado sem a feature correspondente. A Tabela I apresenta os valores medidos para as métricas de tamanho em diferentes produtos do ArgoUML- SPL. A primeira coluna dessa tabela informa qual feature foi removida no produto onde a métrica foi medida. Análise de Tamanho: Como pode ser observado na Tabela I, Suporte Cognitivo é a feature que possui maior LOF. Além disso, o produto gerado sem essa feature é aquele com o menor número de classes e pacotes, o que nos leva a observar que ela se encontra devidamente modularizada em módulos específicos do sistema. Por outro lado, as features Diagrama de Atividades e Diagrama de Estados compartilham vários trechos de código e possuem implementações equivalentes, o que faz com que elas possuam tamanhos semelhantes. Logging diferencia-se das demais features por ser a única cuja remoção não implica em diminuição no número de classes do sistema. Esta característica deve-se ao fato de a feature utilizar uma biblioteca externa (Log4J 3 ). Assim, nenhuma classe do sistema implementa exclusivamente Logging. No entanto, esta feature se espalha por diversas classes do ArgoUML-SPL. Por fim, é interessante notar que um produto que não tenha nenhuma das features propostas terá um tamanho 22,58% menor do que um produto que tenha todas as features, o que sugere benefícios em termos de customização e personalização. Ou seja, em vez de uma abordagem monolítica do tipo one-size-fits-all a linha de produtos permite que usuários possam dispor de um sistema com um tamanho mais adequado às suas reais necessidades. B. Métricas de Transversalidade Essas métricas se destinam a medir o comportamento transversal das features extraídas no ArgoUML-SPL. Mais especificamente, foram coletadas as seguintes métricas: SD (Scattering Degree): proposta por Liebig et al. [15], essa métrica conta o número de ocorrências das constantes que definem cada feature. Ou seja, dada uma constante que define uma determinada feature, SD conta em quantas expressões do tipo #ifdef ela está presente. TD (Tangling Degree): para cada par de features da LPS, essa métrica conta o número de ocorrências de 3 Disponível em

5 Tabela I Métricas de tamanho Métricas Feature Removida LOC #Pacotes #Classes LOF ArgoUML-SPL (Sem remoção de nenhuma Features) Suporte Cognitivo ,04% Diagrama de Atividades ,98% Diagrama de Estados ,67% Logging ,07% Todas ,58% operadores do tipo AND e OR envolvendo essas features em diretivas usadas para anotação do código fonte. A Figura 4 apresenta um trecho de código em que essa situação ocorre. Nesse trecho, TD(Diagrama de Atividades, Diagrama de Estados) = 3, pois existe um #ifdef no qual essas duas features estão combinadas por meio de um operador AND (linha 10 8) e dois #ifdefs nos quais as duas features estão //#e n d i f 11 combinadas por um OR (linhas 1 e 22). Proposta12 //#i f ACTIVITYDIAGRAM originalmente neste artigo, o objetivo da métrica TD13 14 é medir trechos de código responsáveis por interações type == DiagramType. A c t i v i t y //#e n d i f entre as features consideradas na LPS ) && machine == null ) { ND (Nested Degree): para cada par de features da17 diagram = creatediagram (... ) ; 18 } else { LPS, essa métrica conta o número de ocorrências de 19 aninhamento de trechos de código fonte anotado. A20 //#e n d i f Figura 4 apresenta um trecho de código em que essa21 diagram = creatediagram (... ) ; 22 //#i f UMLSTATEDIAGRAM or ACTIVITYDIAGRAM situação ocorre. Nesse trecho, o código da linha 5 23 } somente será incluído na compilação do sistema se a24 //#e n d i f feature Diagrama de Estados estiver selecionada ou se ambas as features Diagrama de Estados e Diagrama de Atividades estiverem selecionadas, Figura 4. Exemplo de aninhamento e entrelaçamento de código devido ao aninhamento desse trecho de código em Tabela III relação ao código da linha 1. Proposta originalmente Métricas de entrelaçamento e aninhamento neste artigo, o objetivo da métrica ND é medir a dependência entre as features consideradas na LPS. Features envolvidas TD ND A Tabela II apresenta os valores coletados para a métrica SD. Já a Tabela III apresenta os valores coletados Diagrama de Estados Diagrama de Atividades + para as métricas que medem os graus de entrelaçamento Diagrama de Atividades + e aninhamento das features consideradas no estudo. Para Logging 0 9 Diagrama de Estados + simplificar a leitura desta tabela, não é mostrado as linhas Logging 0 30 nas quais ambas as métricas TD e ND possuem valor zero. Suporte Cognitivo + Logging Tabela II Métrica de Espalhamento 1 //#i f UMLSTATEDIAGRAM or ACTIVITYDIAGRAM 2 i f ( ( 3 4 //#i f UMLSTATEDIAGRAM 5 type == DiagramType. S t a t e 6 //#e n d i f 7 8 //#i f UMLSTATEDIAGRAM and ACTIVITYDIAGRAM 9 Feature SD Suporte Cognitivo 319 Diagrama de Atividades 114 Diagrama de Estados 113 Logging 1428 Análise de Transversalidade: De acordo com os valores apresentados na Tabela II, observa-se que a feature Logging destaca-se por possuir o maior grau de espalhamento. Existem 1428 pontos do sistema onde Logging é demandado. Esse resultado comprova as citações recorrentes na literatura, nas quais Logging é sempre mencionado como um exemplo clássico de requisito transversal. No entanto, veja que Logging possui a segunda menor LOF entre as features consideradas no estudo (Tabela I). Ou seja, Logging é usado em várias partes do sistema, porém sempre demandando pouco código em cada um desses pontos (essencialmente, uma chamada a uma das rotinas de logging providas pelo framework Log4J).

6 Já a Tabela III permite pelo menos duas observações interessantes sobre as features constituintes do ArgoUML- SPL: Dentre as features consideradas no estudo, apenas Diagrama de Atividades e Diagrama de Estados possuem código entrelaçado (seja por meio de AND ou OR). Essa conclusão é importante porque um comportamento entrelaçado claramente amplifica os problemas de entendimento e legibilidade que caracterizam técnicas de anotação de código, como #ifdef e #endif. Além disso, código cuja remoção depende de mais de uma feature é mais difícil de ser fisicamente modularizado (por exemplo, por meio de técnicas como aspectos). No entanto, como mostrado na Tabela III, existem apenas 26 pontos de compartilhamento de código entre as duas features mencionadas. Dentre as features anotadas no estudo, Logging é aquela que mais aparece lexicamente aninhada em um trecho de código anotado como pertencente a outra feature. Na verdade, foram detectados aninhamentos de Logging à todas as outras features consideradas no estudo. Esse comportamento é explicado pela característica espalhada de Logging (como medido pela métrica SD) e pelo fato de Logging ser um requisito não-funcional cuja implementação é transversal a um grande número de requisitos funcionais de um sistema. Por fim, foram detectados também 11 pontos nos quais Diagrama de Atividades se encontrava aninhado em Diagrama de Estados (métrica ND). Posterior inspeção de código nos permitiu revelar que este aninhamento se justifica pelo fato de que Diagramas de Atividades serem uma especialização de Diagramas de Estados, como definido na especificação de UML. C. Métricas de Granularidade Essas métricas medem o nível hierárquico das unidades sintáticas marcadas como sendo responsáveis pela implementação de uma feature. Considera-se que uma feature possui granularidade grossa quando sua implementação ocorre principalmente em unidades sintáticas de maior nível hierárquico na gramática de Java, tais como pacotes, classes e interfaces. Por outro lado, uma feature de granularidade fina é aquela cuja presença no código se manifesta principalmente em unidades de menor nível sintático, como comandos e expressões [16]. As métricas usadas no trabalho para medir a granularidade de uma feature são as seguintes: Package: conta as ocorrências de anotações de um pacote inteiro (todas as classes ou interfaces) utilizadas para a implementação de uma feature. Class: conta as ocorrências de anotações de classes ou interfaces inteiras para a implementação de uma feature. ClassSignature: conta as ocorrências de anotações para implementação de uma feature que incidem sobre assinaturas de classes, como elementos extends ou implements da sintaxe Java. InterfaceMethod: conta as anotações de métodos de uma interface para a implementação de uma feature. Method: conta as anotações de métodos inteiros (assinatura e corpo) para a implementação de uma feature. MethodBody: conta as ocorrências de anotações realizadas apenas sobre o corpo de um método, para a implementação de uma determinada feature. Statement: conta as ocorrências de anotações realizadas apenas em comandos e expressões, incluindo chamadas de método, atribuições, comandos condicionais, comandos de repetição, etc. Para todas as métricas de granularidade, a contagem não ocorre quando o elemento em questão já tenha sido contabilizado na contagem das métricas anteriores. Por exemplo, a contagem da métrica Class não considera uma classe ou interface pertencente a pacotes inteiramente anotados e, portanto, contados como parte da métrica Package. Nesse artigo, considera-se a seguinte divisão para elementos sintáticos de granularidade grossa e fina: Granularidade grossa: Package, Class, MethodBody, Method e InterfaceMethod. Granularidade fina: ClassSignature e Statement. A Tabela IV apresenta os valores medidos para as métricas de granularidade propostas. Análise de Granularidade: Duas constatações principais surgem de uma análise dos resultados mostrados Tabela IV: A implementação das features Suporte Cognitivo, Diagrama de Atividades e Diagrama de Estados demandou tanto a anotação de elementos de granularidade grossa como de granularidade fina. Isso demonstra que parte do código dessas features encontra-se devidamente modularizada em elementos como pacotes, classes e interfaces. Por outro lado, esses elementos são referenciados em outras partes do código, em elementos de menor granularidade. Em resumo, a implementação dessas features está modularizada, mas não o seu uso no restante do código. Logging é uma feature de granularidade fina, isto é, sua implementação ocorre em poucos métodos (e em nenhuma classe ou pacote). Por outro lado, ela é demandada em 1155 comandos do código. D. Métricas de Localização Essas métricas procuram prover informações sobre a localização sintática dos elementos anotados para implementação das features consideradas no ArgoUML-SPL. As métricas desse tipo foram calculadas apenas para elementos da granularidade Statement (segundo a classificação

7 Tabela IV Métricas de granularidade Feature Granularidade Métricas Suporte Cognitivo Diag. Atividades Diag. Estados Logging Package Class Grossa InterfaceMethod Method MethodBody Fina ClassSignature Statement da subseção anterior). O objetivo é mostrar a localização dos Statement que foram anotados para cada feature, isto é, se eles ocorrem logo no início do corpo de um método, no final do corpo de um método, antes de um comando return ou aninhados à outros comandos. A inspiração para definição dessas métricas foram os modelos de pontos de junção que são encontrados em linguagens de programação orientada a aspectos como AspectJ [17]. As métricas de localização contabilizadas no trabalho foram as seguintes: StartMethod: conta as ocorrências de código anotado para implementação de uma determinada feature quando esse encontra-se no início de um método; EndMethod: conta as ocorrências de código anotado para implementação de uma determinada feature quando esse encontra-se no final de um método; BeforeReturn: conta as ocorrências de código anotado para implementação de uma determinada feature quando esse encontra-se imediatamente antes de um comando return não anotado; NestedStatememt: conta as ocorrências de código anotado para implementação de uma determinada feature quando esse encontra-se no escopo de um comando não-anotado, como em um laço de repetição ou em um comando de decisão. A Tabela V apresenta os valores medidos para as métricas de localização propostas. Análise de Localização: Dentre as quatro localizações analisadas, aquelas que podem ser diretamente instrumentadas pela linguagem de pontos de junção de AspectJ são as seguintes: StartMethod, EndMethod e BeforeReturn. No entanto, para todas as features consideradas no estudo, essas três localizações foram aquelas que ocorreram com menor frequência. A localização dominante foi sempre NestedCommand. No entanto, a modularização física de código aninhado em um bloco de comandos é mais desafiadora, requerendo, por exemplo, transformações prévias no código orientado por objetos [18], [19]. V. Discussão Esta seção apresenta e discute alguns resultados que podem ser extraídos de nosso estudo e posiciona tais resultados em relação a outros trabalhos publicados na literatura relacionada. Em particular, as subseções a seguir discutem: (A) algumas formas transversais encontradas no ArgoUML-SPL e quão prejudiciais essas formas transversais são e (B) a viabilidade de usar técnicas de desenvolvimento orientado a aspectos para separar as quatro features opcionais do ArgoUML-SPL. A. Formas Recorrentes de Features Trabalhos recentes mostraram que nem todas as formas de manifestações transversais de uma feature são prejudiciais a atributos de qualidade do sistema, como modularidade e estabilidade [20], [21], [22]. Assim, é importante estudar e identificar as features que apresentam as formas transversais mais prejudiciais. Os resultados apresentados nas Tabelas I a IV nos ajudam a identificar três formas recorrentes de manifestações transversais já documentadas na literatura: God Concern, Black Sheep e Octopus [20], [22]. God Concern ocorre quando uma feature requer uma fração expressiva do código do sistema em sua implementação [22]. Esse tipo de feature foi inspirado na definição de God Class feita por Fowler [23]. Ou seja, assim como em God Class, elementos que implementam uma feature God Concern agregam excessiva responsabilidade no sistema de software. De acordo com os dados apresentados pelas Tabelas I e IV é possível observar que a realização da feature Suporte Cognitivo tem a forma definida por God Concern. Ou seja, esta feature envolve muitas funcionalidades do sistema como, por exemplo, 11 pacotes completos e 8 classes em outros pacotes (Tabela IV). Ademais, 8761 linhas de código do sistema (13,04%) são usadas para implementar Suporte Cognitivo (Tabela I). Felizmente, estudos recentes revelam pouca correlação entre features God Concern com problemas de modularidade e estabilidade do sistema [22]. A manifestação transversal oposta a God Concern é caracterizada como Black Sheep. Essa define uma feature transversal que é implementada por alguns trechos de código espalhados em diferentes classes do sistema [20]. A feature Black Sheep não agrega muita responsabilidade e sua remoção não impacta drasticamente o funcionamento do sistema. Por exemplo, Black Sheep ocorre quando

8 Tabela V Métricas de localização Feature Tipo de Localização Suporte Cognitivo Diag. Atividades Diag. Estados Logging StartMethod EndMethod BeforeReturn NestedCommand nenhuma classe implementa exclusivamente a feature que se encontra espalhada em pequenos trechos de código, tais como chamadas de métodos ou acessos a atributos. A feature Logging segue a forma Black Sheep no ArgoUML- SPL, pois nenhuma classe é completamente dedicada à implementação dessa feature (Tabela IV). Entretanto, a feature se espalha por alguns métodos (Tabela IV) e se entrelaça a outras features (Tabela III). Engenheiros de software devem estar atentos a uma feature que se manifesta como Black Sheep, pois estudos revelam correlação moderada entre este tipo de feature e estabilidade do sistema [22]. Diferentemente de God Concern e Black Sheep, Octopus define uma feature transversal que se encontra parcialmente modularizada em uma ou mais classes [20]. Apesar de modularizada em algumas classes, a feature Octopus também se espalha por várias outras classes do sistema. Portanto, podemos identificar dois tipos de classes nessa manifestação transversal: (i) classes que são completamente dedicadas a implementação da feature representam o corpo do polvo e (ii) classes que usam apenas pequenas partes de seu código para implementar a feature representam os tentáculos do polvo. Com base nessa definição, podemos identificar pelos dados da Tabela IV duas features que seguem a forma Octopus: Diagrama de Estados e Diagrama de Atividades. Em ambos os casos, podemos observar tanto classes completamente dedicadas (corpo) quanto classes que usam apenas alguns de seus métodos na implementação da feature (tentáculos). Assim como Black Sheep, features que se enquadram na forma Octopus apresentam moderada a elevada correlação com estabilidade do sistema [22]. Portanto, essas features devem ser cuidadosamente avaliadas pelos engenheiros de software e possivelmente refatoradas. B. Modularização por meio de Aspectos: É viável? O conjunto de métricas apresentado na Seção IV fornece dados importantes para que se possa avaliar uma possível refatoração das features selecionadas por meio de uma tecnologia de modularização tal como aspectos. Uma análise mais detalhada das informações providas pelas Tabelas I a V, nos permite avaliar quais das features apresentamse como candidatas mais aptas a uma refatoração dessa natureza. A princípio, pode-se vislumbrar que a feature Suporte Cognitivo pode ser facilmente implementada com o uso de aspectos, uma vez que de acordo com a Tabela I ela é a feature que encontra-se melhor modularizada no sistema, pois sua implementação está concentrada em alguns pacotes e classes específicas. Entretanto, de acordo com os dados da Tabela IV, essa feature é a segunda colocada em utilização de construções de granularidade fina em sua implementação, ficando atrás apenas da feature Logging. Construções de granularidade fina são as mais difíceis de serem extraídas para aspectos [16]. As features Diagrama de Estados e Diagrama de Atividades possuem uma complexidade extra para serem refatoradas em aspectos, devido à natureza entrelaçada de sua implementação, conforme pode ser visto na Tabela III. Loging é frequentemente citada como sendo uma feature que apresenta características que a tornam candidata a refatoração por meio de aspectos. Em nosso trabalho, essa feature foi a que apresentou maior número absoluto de trechos de código em condições favoráveis para instrumentação por meio pontos de junção, conforme pode ser verificado na Tabela V. Entretanto, em termos relativos, esse número ainda é pequeno frente ao total de comandos que implementam essa feature (260 comandos dos 1155, ou seja 22,5%). Além disso, foi verificado que as mensagens que são exibidas pelas chamadas de logging são diferentes umas das outras em 84,5% dos casos, o que demandaria uma extensa implementação de diferentes aspectos para cada diferente mensagem. Isto é, os aspectos implementados certamente possuíram um baixo grau de quantificação. Diante desse cenário, podemos afirmar preliminarmente que seria complexo refatorar qualquer das features usando uma tecnologia para modularização física de interesses transversais, como aspectos. VI. Trabalhos Relacionados A extração do ArgoUML-SPL foi motivada pelo fato de a maioria dos trabalhos na área de linhas de produtos se basear em sistemas de demonstração, construídos em laboratório. Por exemplo, três linhas de produtos são frequentemente usadas em tais trabalhos: Expression Product Line (EPL) [4], Graph Product Line (GPL) [5] e Mobile Media Product Line (MMPL) [6]. A EPL consiste em uma gramática de expressões cujas variabilidades incluem tipos de dados (literais), operadores (negação, adição etc) e operações (impressão e avaliação). A EPL completa, implementada em Java, possui apenas 2 KLOC. A GPL

9 é uma linha de produtos na área de grafos, cujas variabilidades incluem características das arestas (direcionadas ou não direcionadas, com peso ou sem peso etc), métodos de busca (em profundidade ou em largura) e alguns algoritmos clássicos de grafos (verificação de loops, caminho mais curto, árvore geradora mínima etc). A GPL completa possui apenas 2 KLOC. Por fim, a MMPL é uma linha de produtos para dispositivos móveis, cujo objetivo é implementar aplicações para gerência de documentos multimídia, incluindo fotos, vídeo e músicas. Além do tipo de mídia, a MMPL inclui outras variabilidades, como transferência de documentos via SMS e algumas operações sobre os documentos gerenciados (criação, remoção, visualização, etc). A MMPL completa possui apenas 3 KLOC. Com o objetivo de avaliar a aplicação de AspectJ na implementação de variabilidades em linhas de produtos, Kästner, Apel e Batory extraíram diversas features do gerenciador de bancos de dados Oracle Berkley DB (um sistema de 84 KLOC) [24]. Inicialmente, eles identificaram um total de 38 features nesse sistema, incluindo features relacionadas com persistência, transações, cache, logging, estatísticas, sincronização de threads, etc. No entanto, devido a limitações técnicas de AspectJ, eles não conseguiram refatorar algumas features de maior granularidade, como o sistema de persistência do bando de dados. As features que foram extraídas correspondem a cerca de 10% do tamanho do sistema. Assim, por envolver um sistema real, de médio para grande porte e de grande complexidade, considera-se que esse trabalho é o que mais se aproxima dos objetivos que nos levaram a refatorar o ArgoUML. No entanto, as duas experiências possuem algumas diferenças importantes: (a) em nossa experiência, conseguimos refatorar todas as features propostas inicialmente, incluindo aquelas de maior granularidade (como os diagramas UML); (b) em nossa experiência, o total de código refatorado foi maior (cerca de 14 KLOC, contra 8 KLOC no caso do Berkley DB); (c) o ArgoUML-SPL encontra-se publicamente disponível, de modo a facilitar e incentivar seu uso pela comunidade de pesquisadores em linhas de produtos. No mais, as duas linhas de produtos (ArgoUML- SPL e Berkley DB) se complementam, pois oferecem pesquisadores a possibilidade de explorarem suas abordagens em dois sistemas heterogêneos e, assim, permitindo a generalização dos resultados de experimentos. Recentemente, Liebig et al. realizaram um extenso estudo com o objetivo de avaliar como diretivas de préprocessamento são efetivamente usadas para implementar variabilidades [15]. O trabalho envolveu a análise de quarenta sistemas (com tamanhos variando entre 10 KLOC até 1 MLOC), todos eles implementados em C. No entanto, como os sistemas não foram refatorados, as variabilidades consideradas incluem basicamente features de nível muito baixo, normalmente selecionadas por meio de parâmetros de linhas de comando (por exemplo, opções de depuração, otimização ou portabilidade, no caso dos compiladores analisados no trabalho). Por outro lado, no presente trabalho, em vez de analisar features de baixo nível de diversos sistemas legados, optou-se por analisar features de mais alto nível de um único sistema (ArgoUML), o qual teve que ser devidamente refatorado a fim de permitir a geração de diversos produtos. Por fim, diversas métricas que utilizamos para avaliar a extração do ArgoUML-SPL incluindo métricas como LOF e SD foram originalmente propostas no trabalho de Liebig et al. Anualmente, durante a Software Product Line Conference (SPLC) são escolhidos exemplos de sucesso de implantação prática dos princípios de linhas de produto, que passam a integrar o Hall da Fama dessa abordagem de desenvolvimento [25]. No entanto, esses casos não necessariamente implicam na separação física ou na anotação de código responsável pela implementação de variabilidades. Ou seja, em algumas linhas de produtos premiadas, o reúso se dá apenas em termos de arquitetura de software, processo de desenvolvimento, plataforma de execução e componentes comuns [26]. Além disso, via de regra, as linhas de produto premiadas são sistemas comerciais, que não estão publicamente disponíveis para realização de pesquisas. VII. Conclusões Neste trabalho, foi descrita uma experiência prática de extração de uma linha de produtos de software a partir de um sistema real (ArgoUML). No total, foram extraídas quatro features desse sistema (Diagrama de Atividades, Diagrama de Estados, Logging e Suporte Cognitivo). As principais contribuições do trabalho são as seguintes: Extração de uma linha de produtos de um sistema real, de relativa complexidade e tamanho. A versão utilizada no trabalho do ArgoUML possui cerca de 76 KLOC, sendo que aproximadamente 14 KLOC foram ao todo delimitadas por meio de diretivas de pré-processamento. Esse é um diferencial importante em relação aos trabalhos normalmente desenvolvidos na área. Em primeiro lugar, por utilizar um sistema real (com comunidade de usuários, comunidade de desenvolvedores, diversas versões liberadas, novas versões previstas para serem liberadas etc). Em segundo lugar, no melhor do nosso conhecimento, a quantidade de código refatorada no ArgoUML é a maior dentre todos os outros sistemas usados como estudo de caso em trabalhos na área de linhas de produtos. Disponibilização pública da linha de produtos extraída, a qual se encontra hospedada no próprio repositório de versões do ArgoUML (na seguinte URL: Essa característica é fundamental para que outros pesquisadores possam utilizar ArgoUML-SPL como referência de linha de produtos em seus trabalhos. Definição de um arcabouço para avaliação de features delimitadas em um sistema por meio de diretivas de pré-processamento. Esse arcabouço foi inspirado em um conjunto de métricas proposto originalmente

10 por Liebig et al. [15]. No entanto, novas métricas foram incluídas no mesmo, como aquelas relativas ao grau de espalhamento e aninhamento. O arcabouço proposto permite, por exemplo, uma análise das features refatoradas por meio de diferentes perspectivas, incluindo tamanho, transversalidade, granularidade e localização no código. Uma análise combinada dessas diferentes perspectivas permite entender o comportamento das features refatoradas, permitindo inclusive caracterizar o seu comportamento no código (conforme realizado na Seção V-A). Apesar de extenso (cobrindo cerca de 14 KLOC), o número de features refatoradas no estudo é relativamente pequeno (apenas quatro features). Como trabalho futuro, pretende-se continuar a refatoração de features do ArgoUML, pretendendo chegar a um conjunto de mais uma dezena de features refatoradas. Acredita-se que a disponibilização pública da LPS extraída possa contribuir nesse sentido, permitindo que novos pesquisadores e desenvolvedores ajudem nessa tarefa. Pretende-se também investir na migração das features refatoradas para paradigmas de programação como orientação por aspectos e orientação por features. Inclusive, conforme afirmado no trabalho, diretivas de préprocessamento foram escolhidas como primeira tecnologia para delimitação de features no ArgoUML-SPL exatamente como esse objetivo, isto é, fornecer um baseline que possa ser futuramente usado para comparação com outras técnicas de modularização. Por fim, a delimitação de features de forma manual, por meio de #ifdef e #endif, se revelou uma tarefa tediosa e repetitiva. Assim, pretende-se investigar o uso de técnicas automáticas ou semi-automáticas para marcação de features, como aquelas descritas em [16], [27]. Agradecimentos Este trabalho foi apoiado pela FAPEMIG e CNPq. Referências [1] P. Clements and L. M. Northrop, Software Product Lines: Practices and Patterns. Addison-Wesley, [2] V. Sugumaran, S. Park, and K. C. Kang, Introduction to the special issue on software product line engineering, Communications ACM, vol. 49, no. 12, pp , [3] D. L. Parnas, On the design and development of program families, IEEE Transactions on Software Engineering, vol. 2, no. 1, pp. 1 9, [4] R. Lopez-Herrejon, D. Batory, and W. R. Cook, Evaluating support for features in advanced modularization technologies, in 19th European Conference on Object-Oriented Programming (ECOOP), ser. LNCS, vol Springer-Verlag, 2005, pp [5] R. E. Lopez-Herrejon and D. S. Batory, A standard problem for evaluating product-line methodologies, in Third International Conference on Generative and Component-Based Software Engineering (GPCE), ser. LNCS, vol Springer-Verlag, 2001, pp [6] E. Figueiredo, N. Cacho, C. Sant Anna, M. Monteiro, U. Kulesza, A. Garcia, S. Soares, F. C. Ferrari, S. S. Khan, F. C. Filho, and F. Dantas, Evolving software product lines with aspects: an empirical study on design stability, in 30th International Conference on Software Engineering (ICSE), 2008, pp [7] (2010) Argouml-spl. [Online]. Available: tigris.org/ [8] L. Tolke, M. Klink, and M. van der Wulp. (2010) Argouml cookbook. [Online]. Available: Cookbook [9] E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley, [10] J. E. Robbins and D. F. Redmiles, Cognitive support, uml adherence, and xmi interchange in argo/uml, Information & Software Technology, vol. 42, no. 2, pp , [11] H. Spencer, #ifdef considered harmful, or portability experience with C News, in USENIX Conference, 1992, pp [12] B. Adams, W. D. Meuter, H. Tromp, and A. E. Hassan, Can we refactor conditional compilation into aspects? in 8th ACM International Conference on Aspect-Oriented Software Development (AOSD), 2009, pp [13] S. Apel and C. Kästner, Virtual separation of concerns - a second chance for preprocessors, Journal of Object Technology, vol. 8, no. 6, pp , [14] S. E. Sim, S. Easterbrook, and R. C. Holt, Using benchmarking to advance research: A challenge to software engineering, in Proceedings of the 25th International Conference on Software Engineering (ICSE), 2003, pp [15] J. Liebig, S. Apel, C. Lengauer, C. Kästner, and M. Schulze, An analysis of the variability in forty preprocessor-based software product lines, in 32nd International Conference on Software Engineering (ICSE), [16] C. Kästner, S. Apel, and M. Kuhlemann, Granularity in software product lines, in ICSE 08: Proceedings of the 30th international conference on Software engineering. New York, NY, USA: ACM, 2008, pp [17] G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, and W. G. Griswold, An overview of AspectJ, in 15th European Conference on Object-Oriented Programming (ECOOP), ser. LNCS, vol Springer Verlag, 2001, pp [18] M. Nassau and M. T. Valente, Object-oriented transformations for extracting aspects, Information and Software Technology, vol. 51, no. 1, pp , [19] M. Nassau, S. Oliveira, and M. T. Valente, Guidelines for enabling the extraction of aspects from existing object-oriented code, Journal of Object Technology, vol. 8, no. 3, pp. 1 19, [20] S. Ducasse, T. Gîrba, and A. Kuhn, Distribution map, in International Conference on Software Maintenance (ICSM), 2006, pp [21] M. Eaddy, T. Zimmermann, K. D. Sherwood, V. Garg, G. C. Murphy, N. Nagappan, and A. V. Aho, Do crosscutting concerns cause defects? IEEE Transactions on Software Engineering, vol. 34, no. 4, pp , [22] E. Figueiredo, B. C. da Silva, C. Sant Anna, A. F. Garcia, J. Whittle, and D. J. Nunes, Crosscutting patterns and design stability: An exploratory analysis, in International Conference on Program Comprehension (ICPC), 2009, pp [23] M. Fowler, K. Beck, J. Brant, W. Opdyke, and D. Roberts, Refactoring: Improving the Design of Existing Code. Addison- Wesley, [24] C. Kästner, S. Apel, and D. Batory, A case study implementing features using AspectJ, in 11th International Software Product Line Conference (SPLC), 2007, pp [25] S. P. L. Conference. (2010) Product line hall of fame. [Online]. Available: [26] P. Mohagheghi and R. Conradi, An empirical investigation of software reuse benefits in a large telecom product, ACM Transactions on Software Engineering Methodology, vol. 17, no. 3, pp. 1 31, [27] V. Borges and M. T. Valente, Coloração automática de variabilidades em linhas de produtos de software, in III Simpósio Brasileiro de Componentes, Arquiteturas e Reutilização de Software (SBCARS), 2009, pp

CIDE+: Uma Ferramenta para Extração Semi-automática de Linhas de Produtos de Software Usando Coloração de Código

CIDE+: Uma Ferramenta para Extração Semi-automática de Linhas de Produtos de Software Usando Coloração de Código CIDE+: Uma Ferramenta para Extração Semi-automática de Linhas de Produtos de Software Usando Coloração de Código Virgílio Borges de Oliveira 1, Rógel Garcia 2, Marco Túlio Valente 2 1 Instituto de Informática,

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 26 http://www.ic.uff.br/~bianca/engsoft2/ Aula 26-21/07/2006 1 Ementa Processos de desenvolvimento de software Estratégias e técnicas de teste de software Métricas para software

Leia mais

Programação Orientada a Objetos SANTOS, Rafael

Programação Orientada a Objetos SANTOS, Rafael Programação Orientada a Objetos SANTOS, Rafael É parte do software, e deve atender os requisitos do usuário Controla o hardware, incluindo periféricos de entrada e saída Usa um conjunto de comandos e regras:

Leia mais

3 Metodologia de pesquisa

3 Metodologia de pesquisa 3 Metodologia de pesquisa Esta pesquisa foi concebida com o intuito de identificar como a interação entre o gerenciamento de projetos e o planejamento estratégico estava ocorrendo nas empresas do grupo

Leia mais

Fundamentos de Teste de Software

Fundamentos de Teste de Software Núcleo de Excelência em Testes de Sistemas Fundamentos de Teste de Software Módulo 1- Visão Geral de Testes de Software Aula 2 Estrutura para o Teste de Software SUMÁRIO 1. Introdução... 3 2. Vertentes

Leia mais

18/10/2013. Resumo. Os mecanismos. Introdução. Padrões de projeto (OO) Compilação condicional

18/10/2013. Resumo. Os mecanismos. Introdução. Padrões de projeto (OO) Compilação condicional On the Use of Feature-Oriented Programming for Evolving Software Product Lines A Comparative Study Gabriel Coutinho Sousa Ferreira, Felipe Nunes Gaia, Eduardo Figueiredo and Marcelo de Almeida Maia {gabriel,

Leia mais

ENGENHARIA DE SOFTWARE

ENGENHARIA DE SOFTWARE INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Curso Técnico em Informática : ENGENHARIA DE SOFTWARE Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br Um conjunto estruturado

Leia mais

Gerenciamento do Escopo do Projeto (PMBoK 5ª ed.)

Gerenciamento do Escopo do Projeto (PMBoK 5ª ed.) Gerenciamento do Escopo do Projeto (PMBoK 5ª ed.) De acordo com o PMBok 5ª ed., o escopo é a soma dos produtos, serviços e resultados a serem fornecidos na forma de projeto. Sendo ele referindo-se a: Escopo

Leia mais

Métricas de Software

Métricas de Software Métricas de Software Plácido Antônio de Souza Neto 1 1 Gerência Educacional de Tecnologia da Informação Centro Federal de Educação Tecnologia do Rio Grande do Norte 2006.1 - Planejamento e Gerência de

Leia mais

DIMENSÕES DE PESQUISA EM ENGENHARIA DE SOFTWARE

DIMENSÕES DE PESQUISA EM ENGENHARIA DE SOFTWARE ESPECIAL Engenharia de Software DIMENSÕES DE PESQUISA EM ENGENHARIA DE SOFTWARE por Paulo Borba DECISÕES IMPORTANTES A SEREM TOMADAS NOS PROJETOS E NA CARREIRA DE UM PESQUISADOR EM ENGENHARIA DE SOFTWARE.

Leia mais

Desenvolvimento de Software

Desenvolvimento de Software PODER JUDICIÁRIO JUSTIÇA DO TRABALHO TRIBUNAL REGIONAL DO TRABALHO DA 15ª REGIÃO Secretaria de Tecnologia da Informação e Comunicações Total de Páginas:16 Versão: 1.0 Última Atualização: 26/07/2013 Índice

Leia mais

Modelagem De Sistemas

Modelagem De Sistemas Modelagem De Sistemas UNIP Tatuapé - SP Aplicações em Linguagem de Programação Prof.Marcelo Nogueira Uma empresa de software de sucesso é aquela que consistentemente produz software de qualidade que vai

Leia mais

Análise Qualitativa no Gerenciamento de Riscos de Projetos

Análise Qualitativa no Gerenciamento de Riscos de Projetos Análise Qualitativa no Gerenciamento de Riscos de Projetos Olá Gerente de Projeto. Nos artigos anteriores descrevemos um breve histórico sobre a história e contextualização dos riscos, tanto na vida real

Leia mais

Comandos de Eletropneumática Exercícios Comentados para Elaboração, Montagem e Ensaios

Comandos de Eletropneumática Exercícios Comentados para Elaboração, Montagem e Ensaios Comandos de Eletropneumática Exercícios Comentados para Elaboração, Montagem e Ensaios O Método Intuitivo de elaboração de circuitos: As técnicas de elaboração de circuitos eletropneumáticos fazem parte

Leia mais

A dissertação é dividida em 6 capítulos, incluindo este capítulo 1 introdutório.

A dissertação é dividida em 6 capítulos, incluindo este capítulo 1 introdutório. 1 Introdução A escolha racional dos sistemas estruturais em projetos de galpões industriais é um fator de grande importância para o desenvolvimento de soluções padronizadas e competitivas. No mercado brasileiro

Leia mais

Arquitecturas de Software Enunciado de Projecto 2007 2008

Arquitecturas de Software Enunciado de Projecto 2007 2008 UNIVERSIDADE TÉCNICA DE LISBOA INSTITUTO SUPERIOR TÉCNICO Arquitecturas de Software Enunciado de Projecto 2007 2008 1 Introdução Na primeira metade da década de 90 começaram a ser desenvolvidas as primeiras

Leia mais

Tópicos Avançados em Banco de Dados Dependências sobre regime e controle de objetos em Banco de Dados. Prof. Hugo Souza

Tópicos Avançados em Banco de Dados Dependências sobre regime e controle de objetos em Banco de Dados. Prof. Hugo Souza Tópicos Avançados em Banco de Dados Dependências sobre regime e controle de objetos em Banco de Dados Prof. Hugo Souza Após vermos uma breve contextualização sobre esquemas para bases dados e aprendermos

Leia mais

Fundamentos de Programação. Diagrama de blocos

Fundamentos de Programação. Diagrama de blocos Fundamentos de Programação Diagrama de blocos Prof. M.Sc.: João Paulo Q. dos Santos E-mail: joao.queiroz@ifrn.edu.br Página: http://docente.ifrn.edu.br/joaoqueiroz/ O processo de desenvolvimento (programação),

Leia mais

BCC402 Algoritmos e Programação Avançada. Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Tóffolo 2011/1

BCC402 Algoritmos e Programação Avançada. Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Tóffolo 2011/1 BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Tóffolo 2011/1 Introdução ao Curso 2 Carga horária semanal 2 aulas teóricas e 2 aulas práticas (ambas em laboratório)

Leia mais

RELATÓRIO SOBRE A GESTÃO DE RISCOS BANCO ABN AMRO S.A. Setembro de 2013

RELATÓRIO SOBRE A GESTÃO DE RISCOS BANCO ABN AMRO S.A. Setembro de 2013 RELATÓRIO SOBRE A GESTÃO DE RISCOS BANCO ABN AMRO S.A. Setembro de 2013 SP Rua Leopoldo Couto de Magalhães Júnior, 700, 4º andar Itaim Bibi São Paulo SP CEP: 04542000 Tel: (11) 30737400 Fax: (11) 30737404

Leia mais

MBA em Gerenciamento de Projetos. Teoria Geral do Planejamento. Professora: Maria Erileuza do Nascimento de Paula

MBA em Gerenciamento de Projetos. Teoria Geral do Planejamento. Professora: Maria Erileuza do Nascimento de Paula MBA em Gerenciamento de Projetos Teoria Geral do Planejamento Professora: Maria Erileuza do Nascimento de Paula SOBRAL - CE 2014 O que é Planejamento É um processo contínuo e dinâmico que consiste em um

Leia mais

AULA 1 INTRODUÇÃO A BANCO DE DADOS E VISÃO GERAL DO SQL CONCEITUANDO BANCO DE DADOS MODELO RELACIONAL

AULA 1 INTRODUÇÃO A BANCO DE DADOS E VISÃO GERAL DO SQL CONCEITUANDO BANCO DE DADOS MODELO RELACIONAL BANCO DE DADOS GERENCIAL 1 AULA 1 INTRODUÇÃO A BANCO DE DADOS E VISÃO GERAL DO SQL CONCEITUANDO BANCO DE DADOS Um banco de dados é uma coleção de dados (ou informações) organizadas de forma lógica, e que

Leia mais

Sistema de Gestão Avícola SYSAVES. O sistema SYSAVES controla todo o processo, desde a saída dos

Sistema de Gestão Avícola SYSAVES. O sistema SYSAVES controla todo o processo, desde a saída dos Sistema de Gestão Avícola SYSAVES O sistema SYSAVES controla todo o processo, desde a saída dos galpões dos fornecedores (granjeiros) de aves até a emissão de relatórios das saídas dos galpões para os

Leia mais

MODELO SUGERIDO PARA PROJETO DE PESQUISA

MODELO SUGERIDO PARA PROJETO DE PESQUISA MODELO SUGERIDO PARA PROJETO DE PESQUISA MODELO PARA ELABORAÇÃO DE PROJETO DE PESQUISA (Hospital Regional do Mato Grosso do Sul- HRMS) Campo Grande MS MÊS /ANO TÍTULO/SUBTÍTULO DO PROJETO NOME DO (s) ALUNO

Leia mais

Como Elaborar uma Proposta de Projeto

Como Elaborar uma Proposta de Projeto Como Elaborar uma Proposta de Projeto Prof. Tiago Garcia de Senna Carneiro tiago@iceb.ufoop.br TerraLAB Laboratório INPE/UFOP para Modelagem e Simulação dos Sistemas Terrestres Departamento de Computação

Leia mais

MODELOS INTUITIVOS DE VIGAS VIERENDEEL PARA O ESTUDO DO DESEMPENHO ESTRUTURAL QUANDO SUJEITAS A APLICAÇÃO DE CARREGAMENTOS

MODELOS INTUITIVOS DE VIGAS VIERENDEEL PARA O ESTUDO DO DESEMPENHO ESTRUTURAL QUANDO SUJEITAS A APLICAÇÃO DE CARREGAMENTOS Encontro de Ensino, Pesquisa e Extensão, Presidente Prudente, 22 a 25 de outubro, 2012 266 MODELOS INTUITIVOS DE VIGAS VIERENDEEL PARA O ESTUDO DO DESEMPENHO ESTRUTURAL QUANDO SUJEITAS A APLICAÇÃO DE CARREGAMENTOS

Leia mais

Os salários de 15 áreas de TI nas cinco regiões do Brasil

Os salários de 15 áreas de TI nas cinco regiões do Brasil Os salários de 15 áreas de TI nas cinco regiões do Brasil Entre 2011 e 2012, os salários na área de tecnologia da informação (TI) cresceram em média 10,78% um número animador, que pode motivar jovens estudantes

Leia mais

Modelo Lógico: Tabelas, Chaves Primárias e Estrangeiras

Modelo Lógico: Tabelas, Chaves Primárias e Estrangeiras Modelo Lógico: Tabelas, Chaves Primárias e Estrangeiras Apresentar a próxima etapa da modelagem de dados: o modelo lógico e os conceitos de tabelas, chaves primárias e estrangeiras e como o banco de dados

Leia mais

Metodologias de PETI. Prof. Marlon Marcon

Metodologias de PETI. Prof. Marlon Marcon Metodologias de PETI Prof. Marlon Marcon PETI O PETI é composto de: Planejamento Estratégico da organização, que combina os objetivos e recursos da organização com seus mercados em processo de transformação

Leia mais

CRIAÇÃO DE TABELAS NO ACCESS. Criação de Tabelas no Access

CRIAÇÃO DE TABELAS NO ACCESS. Criação de Tabelas no Access CRIAÇÃO DE TABELAS NO ACCESS Criação de Tabelas no Access Sumário Conceitos / Autores chave... 3 1. Introdução... 4 2. Criação de um Banco de Dados... 4 3. Criação de Tabelas... 6 4. Vinculação de tabelas...

Leia mais

Introdução à orientação a objetos

Introdução à orientação a objetos Universidade Federal de Juiz de Fora PET Elétrica Introdução à orientação a objetos Tutor: Francisco José Gomes Aluno: João Tito Almeida Vianna 18/05/2013 1 Programação Estruturada x Orientação a objetos

Leia mais

Modelagem de Sistemas Web. Metodologias para o desenvolvimento de sistemas web

Modelagem de Sistemas Web. Metodologias para o desenvolvimento de sistemas web Modelagem de Sistemas Web Aula 5 Metodologias para o desenvolvimento de sistemas web Metodologias para o desenvolvimento de sistemas web WebML Fontes: Itana Gimenes e Bruno Souza Et Estrutura t do WebML

Leia mais

1.1. Caracterização do Problema. Capítulo 1. Introdução 20

1.1. Caracterização do Problema. Capítulo 1. Introdução 20 1 Introdução Projetos de software normalmente estão bastante suscetíveis a passar por inúmeras modificações ao longo do seu ciclo de vida. Muitos deles falham ao atingir seus resultados necessários dentro

Leia mais

Inglês Prova 21 2016. 3.º Ciclo do Ensino Básico (Decreto-Lei nº17/2016, de 4 de abril) 1. Introdução. 2. Objeto de avaliação

Inglês Prova 21 2016. 3.º Ciclo do Ensino Básico (Decreto-Lei nº17/2016, de 4 de abril) 1. Introdução. 2. Objeto de avaliação INFORMAÇÃO PROVA DE EQUIVALÊNCIA À FREQUÊNCIA Inglês Prova 21 2016 PROVA ESCRITA E ORAL -----------------------------------------------------------------------------------------------------------------------------------------

Leia mais

mercado de cartões de crédito, envolvendo um histórico desde o surgimento do produto, os agentes envolvidos e a forma de operação do produto, a

mercado de cartões de crédito, envolvendo um histórico desde o surgimento do produto, os agentes envolvidos e a forma de operação do produto, a 16 1 Introdução Este trabalho visa apresentar o serviço oferecido pelas administradoras de cartões de crédito relacionado ao produto; propor um produto cartão de crédito calcado na definição, classificação

Leia mais

Avaliação de desempenho de virtualizadores no envio e recebimento de pacotes em sistemas Linux

Avaliação de desempenho de virtualizadores no envio e recebimento de pacotes em sistemas Linux Universidade Federal de Pernambuco Graduação em Engenharia da Computação Centro de Informática 2015.1 Avaliação de desempenho de virtualizadores no envio e recebimento de pacotes em sistemas Linux Proposta

Leia mais

MDS II Aula 04. Concepção Requisitos Diagrama de Casos de Uso (Use Cases)

MDS II Aula 04. Concepção Requisitos Diagrama de Casos de Uso (Use Cases) MDS II Aula 04 Concepção Requisitos Diagrama de Casos de Uso (Use Cases) 55 DIAGRAMA DE CASOS DE USO BENEFÍCIOS DOS CASOS DE USO ILUSTRAR POR QUE O SISTEMA É NECESSÁRIO OS REQUISITOS DO SISTEMA SÃO COLOCADOS

Leia mais

Contrata Consultor na modalidade Produto

Contrata Consultor na modalidade Produto Contrata Consultor na modalidade Produto PROJETO 914BRZ4012 EDITAL Nº 005/2010 1. Perfil: TR 007/2010-CGS - CIÊNCIAS SOCIAIS APLICÁVEIS 3. Qualificação educacional: Graduação na área de CIÊNCIAS SOCIAIS

Leia mais

Inteligência Artificial

Inteligência Artificial Inteligência Artificial Aula 7 Programação Genética M.e Guylerme Velasco Programação Genética De que modo computadores podem resolver problemas, sem que tenham que ser explicitamente programados para isso?

Leia mais

TERMO DE REFERÊNCIA PARA CONTRATAÇÃO DE PESSOA FÍSICA

TERMO DE REFERÊNCIA PARA CONTRATAÇÃO DE PESSOA FÍSICA TERMO DE REFERÊNCIA PARA CONTRATAÇÃO DE PESSOA FÍSICA 1. Projeto: OEI/BRA/09/004 - Aprimoramento da sistemática de gestão do Ministério da Educação (MEC) em seus processos de formulação, implantação e

Leia mais

Auditoria de Meio Ambiente da SAE/DS sobre CCSA

Auditoria de Meio Ambiente da SAE/DS sobre CCSA 1 / 8 1 OBJETIVO: Este procedimento visa sistematizar a realização de auditorias de Meio Ambiente por parte da SANTO ANTÔNIO ENERGIA SAE / Diretoria de Sustentabilidade DS, sobre as obras executadas no

Leia mais

GIL, Antonio Carlos. Como elaborar projetos de pesquisa. São Paulo, Editora Atlas, 2002....

GIL, Antonio Carlos. Como elaborar projetos de pesquisa. São Paulo, Editora Atlas, 2002.... GIL, Antonio Carlos. Como elaborar projetos de pesquisa. São Paulo, Editora Atlas, 2002.... 1 Como encaminhar uma Pesquisa? A pesquisa é um projeto racional e sistemático com objetivo de proporcionar respostas

Leia mais

MINISTÉRIO DA EDUCAÇÃO FUNDO NACIONAL DE DESENVOLVIMENTO DA EDUCAÇÃO DIRETORIA DE ASSISTÊNCIA A PROGRAMAS ESPECIAIS

MINISTÉRIO DA EDUCAÇÃO FUNDO NACIONAL DE DESENVOLVIMENTO DA EDUCAÇÃO DIRETORIA DE ASSISTÊNCIA A PROGRAMAS ESPECIAIS MINISTÉRIO DA EDUCAÇÃO FUNDO NACIONAL DE DESENVOLVIMENTO DA EDUCAÇÃO DIRETORIA DE ASSISTÊNCIA A PROGRAMAS ESPECIAIS TERMO DE REFERÊNCIA PARA CONTRATAÇÃO DE PESSOA FÍSICA - CONSULTOR POR PRODUTO TOR/FNDE/DTI/MEC

Leia mais

Sistemas de Informação

Sistemas de Informação Sistemas de Informação TCC em Re-vista 2011 121 PAULA, Diego Flávio de; VOLPATO, Tobias. 23 Gerenciamento eletrônico de documentos. 2011. 111 f. Trabalho de Conclusão de Curso (Graduação em Sistemas de

Leia mais

EDITAL DE SELEÇÃO PARA MESTRADO 2016 PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA DE PRODUÇÃO (UNIFEI)

EDITAL DE SELEÇÃO PARA MESTRADO 2016 PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA DE PRODUÇÃO (UNIFEI) 1 EDITAL DE SELEÇÃO PARA MESTRADO 2016 PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA DE PRODUÇÃO (UNIFEI) O Coordenador do Programa de Pós-Graduação em Engenharia de Produção (PPGEP) da Universidade Federal

Leia mais

O que é um banco de dados? Banco de Dados. Banco de dados

O que é um banco de dados? Banco de Dados. Banco de dados COLÉGIO EST. JOÃO MANOEL MONDRONE - ENS. FUNDAMENTAL, MÉDIO, PROFISSIONAL E NORMAL Rua Mato Grosso n.2233 - Fone/Fax (045) 3264-1749-3264-1507 Banco de Dados O que é um banco de dados? Um conjunto de informações

Leia mais

Manual SAGe Versão 1.2

Manual SAGe Versão 1.2 Manual SAGe Versão 1.2 Equipe de Pesquisadores do Projeto Conteúdo 1. Introdução... 2 2. Criação da Equipe do Projeto (Proposta Inicial)... 3 2.1. Inclusão e configuração do Pesquisador Responsável (PR)...

Leia mais

Inteligência de negócios do laboratório DESCUBRA INFORMAÇÕES ÚTEIS DE DADOS OPERACIONAIS DO LABORATÓRIO

Inteligência de negócios do laboratório DESCUBRA INFORMAÇÕES ÚTEIS DE DADOS OPERACIONAIS DO LABORATÓRIO Inteligência de negócios do laboratório DESCUBRA INFORMAÇÕES ÚTEIS DE DADOS OPERACIONAIS DO LABORATÓRIO INTELIGÊNCIA DE NEGÓCIOS DO LABORATÓRIO AS DECISÕES SOBRE O LABORATÓRIO COMEÇAM COM A INTELIGÊNCIA

Leia mais

Prof. Daniela Barreiro Claro

Prof. Daniela Barreiro Claro O volume de dados está crescendo sem parar Gigabytes, Petabytes, etc. Dificuldade na descoberta do conhecimento Dados disponíveis x Análise dos Dados Dados disponíveis Analisar e compreender os dados 2

Leia mais

Análise de Requisitos

Análise de Requisitos Análise de Requisitos Análise de Requisitos O tratamento da informação é um requisito que fundamenta o processo de desenvolvimento de software antes da solução de tecnologia a ser aplicada. Cada projeto

Leia mais

Título do Case: O impacto do layout na agilidade dos processos

Título do Case: O impacto do layout na agilidade dos processos Título do Case: O impacto do layout na agilidade dos processos Categoria: Projetos Externos Temática: Segundo Setor Resumo: O presente case expõe a aplicabilidade de um projeto externo que desafia as acomodações

Leia mais

Diagrama de Componentes e Implantação

Diagrama de Componentes e Implantação Diagrama de Componentes e Implantação 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

Leia mais

ICI AMPLIA INCLUSÃO DIGITAL E PROMOVE AVANÇOS NA ROTINA DOS ESTUDANTES DA REDE PÚBLICA COM APLICAÇÃO DE WI-FI NAS ESCOLAS

ICI AMPLIA INCLUSÃO DIGITAL E PROMOVE AVANÇOS NA ROTINA DOS ESTUDANTES DA REDE PÚBLICA COM APLICAÇÃO DE WI-FI NAS ESCOLAS Case de Sucesso Integrando CIOs, gerando conhecimento. ICI AMPLIA INCLUSÃO DIGITAL E PROMOVE AVANÇOS NA ROTINA DOS ESTUDANTES DA REDE PÚBLICA COM APLICAÇÃO DE WI-FI NAS ESCOLAS Perfil O Instituto Curitiba

Leia mais

DOCUMENTO DE REQUISITO DE SOFTWARE

DOCUMENTO DE REQUISITO DE SOFTWARE DOCUMENTO DE REQUISITO DE SOFTWARE PARTICIPANTES Belo Horizonte - 1

Leia mais

NORMA DE ELABORAÇÃO DE INSTRUMENTOS NORMATIVOS - NOR 101

NORMA DE ELABORAÇÃO DE INSTRUMENTOS NORMATIVOS - NOR 101 ASSUNTO: Elaboração de Instrumentos Normativos MANUAL DE ORGANIZAÇÃO APROVAÇÃO: Deliberação DIREX nº 25, de 12/05/2016 COD. VIGÊNCIA: 100 12/05/2016 NORMA DE ELABORAÇÃO DE INSTRUMENTOS 1/10 SUMÁRIO 1 FINALIDADE...

Leia mais

PODER JUDICIÁRIO JUSTIÇA DO TRABALHO CONSELHO SUPERIOR DA JUSTIÇA DO TRABALHO

PODER JUDICIÁRIO JUSTIÇA DO TRABALHO CONSELHO SUPERIOR DA JUSTIÇA DO TRABALHO CONSELHO SUPERIOR DA RELATÓRIO DE DIAGNÓSTICO DA QUALIDADE NO USO DO SISTEMA PROCESSO JUDICIAL ELETRÔNICO DA Fase 1 (magistrados e servidores da Justiça do Trabalho) Secretaria de Tecnologia da Informação

Leia mais

2 Segmentação de imagens e Componentes conexas

2 Segmentação de imagens e Componentes conexas Universidade Tecnológica Federal do Paraná (UTFPR) Departamento Acadêmico de Informática (DAINF) Algoritmos II Professor: Alex Kutzke (alexk@dainf.ct.utfpr.edu.br) Especificação do Primeiro Trabalho Prático

Leia mais

POLÍTICA DE RESPONSABILIDADE SOCIOAMBIENTAL CREDITÁ S.A. Crédito, Financiamento e Investimento

POLÍTICA DE RESPONSABILIDADE SOCIOAMBIENTAL CREDITÁ S.A. Crédito, Financiamento e Investimento POLÍTICA DE RESPONSABILIDADE SOCIOAMBIENTAL CREDITÁ S.A. Crédito, Financiamento e Investimento SUMÁRIO 1. Propósito 2. Abrangência 3. Política 3.1 Princípios Fundamentais 3.2 Diretrizes Socioambientais

Leia mais

CVS Controle de Versões e Desenvolvimento Colaborativo de Software

CVS Controle de Versões e Desenvolvimento Colaborativo de Software CVS Controle de Versões e Desenvolvimento Colaborativo de Software Cristiano Caetano Novatec Editora Capítulo 1 Introdução ao CVS Quem controla o passado, controla o futuro. Quem controla o presente, controla

Leia mais

Deswik.Sched. Sequenciamento por Gráfico de Gantt

Deswik.Sched. Sequenciamento por Gráfico de Gantt Deswik.Sched Sequenciamento por Gráfico de Gantt SOLUÇÕES EM SEQUENCIAMENTO DE LAVRA QUE NOS DIFERENCIAM Uma abordagem dinâmica e moderna para o sequenciamento de lavra Desde gráficos de Gantt interativos

Leia mais

Gerenciamento dos Riscos do Projeto (PMBoK 5ª ed.)

Gerenciamento dos Riscos do Projeto (PMBoK 5ª ed.) Gerenciamento dos Riscos do Projeto (PMBoK 5ª ed.) Esta é uma área essencial para aumentar as taxas de sucesso dos projetos, pois todos eles possuem riscos e precisam ser gerenciados, ou seja, saber o

Leia mais

Processo de Gerenciamento do Catálogo de Serviços de TIC

Processo de Gerenciamento do Catálogo de Serviços de TIC de TIC Escritório de Gerenciamento de Processos de Tecnologia da Informação e Comunicação EGPr-TIC João Pessoa 2016 Versão 1.0 Tribunal Regional do Trabalho da 13ª Região Desembargador Presidente Ubiratan

Leia mais

Esta melhoria depende de execução do update de base U_UPDFIN, conforme procedimento para implementação.

Esta melhoria depende de execução do update de base U_UPDFIN, conforme procedimento para implementação. Solicitação de Fundos Novas Funcionalidades Produto : Microsiga Protheus Financeiro versão 11 Chamado : TEIXDG Data da publicação : 01/08/12 País(es) : Argentina Banco(s) de Dados : Todos Esta melhoria

Leia mais

Análise de Sistemas 3º Bimestre (material 2)

Análise de Sistemas 3º Bimestre (material 2) Análise de Sistemas 3º Bimestre (material 2) Professor: José Ronaldo Leles Júnior Turma: 2º ano do curso de Sistemas de Informação UEG Universidade Estadual de Goiás Campus Posse POO Paradigma Orientado

Leia mais

UNIVERSIDADE ESTADUAL DE CAMPINAS FACULDADE DE EDUCAÇÃO. Elaborado por Gildenir Carolino Santos Grupo de Pesquisa LANTEC

UNIVERSIDADE ESTADUAL DE CAMPINAS FACULDADE DE EDUCAÇÃO. Elaborado por Gildenir Carolino Santos Grupo de Pesquisa LANTEC UNIVERSIDADE ESTADUAL DE CAMPINAS FACULDADE DE EDUCAÇÃO Elaborado por Gildenir Carolino Santos Grupo de Pesquisa LANTEC Campinas Fevereiro 2014 2 opyleft Gildenir C. Santos, 2014. Biblioteca - Faculdade

Leia mais

Acionamento de Motores: PWM e Ponte H

Acionamento de Motores: PWM e Ponte H Warthog Robotics USP São Carlos www.warthog.sc.usp.br warthog@sc.usp.br Acionamento de Motores: PWM e Ponte H Por Gustavo C. Oliveira, Membro da Divisão de Controle (2014) 1 Introdução Motores são máquinas

Leia mais

No contexto das ações de Pesquisa e Desenvolvimento

No contexto das ações de Pesquisa e Desenvolvimento Um método para avaliar o desempenho ótico de LEDs O LABelectron desenvolveu um método de testes para analisar influências ópticas em diferentes modos de acionamentos de LEDs André Andreta No contexto das

Leia mais

LIBERAÇÃO DE ATUALIZAÇÃO CORDILHEIRA

LIBERAÇÃO DE ATUALIZAÇÃO CORDILHEIRA LIBERAÇÃO DE ATUALIZAÇÃO CORDILHEIRA (Orientamos aos clientes que utilizam banco de dados SQL, para efetuarem a atualização preferencialmente após o encerramento das atividades do dia, acessando o sistema

Leia mais

Descrição da Estrutura de Gerenciamento 2015. - Risco Operacional -

Descrição da Estrutura de Gerenciamento 2015. - Risco Operacional - Descrição da Estrutura de Gerenciamento 2015 - Risco Operacional - Sumário 1. Introdução:... 3 2. Abrangência:... 3 3. Estrutura do Gerenciamento de Risco Operacional:... 3 3. Responsabilidades:... 4 Comitê

Leia mais

Panorama da Inovação no Brasil. Hugo Ferreira Braga Tadeu 2014

Panorama da Inovação no Brasil. Hugo Ferreira Braga Tadeu 2014 Panorama da Inovação no Brasil Hugo Ferreira Braga Tadeu 2014 INTRODUÇÃO Sobre o Relatório O presente relatório é uma avaliação do Núcleo de Inovação e Empreendedorismo da FDC sobre as práticas de gestão

Leia mais

ARTIGO. Sobre monitoramento a Distancia e aplicação automática de medicamentos. Sistema de monitoração a distancia e aplicação de medicamentos.

ARTIGO. Sobre monitoramento a Distancia e aplicação automática de medicamentos. Sistema de monitoração a distancia e aplicação de medicamentos. ARTIGO Sobre monitoramento a Distancia e aplicação automática de medicamentos. Autor: Marcos José Sanvidotti Sistema de monitoração a distancia e aplicação de medicamentos. Resumo: O monitoramento a distância

Leia mais

Classificação de Ativo Orçamento e Provisão de Despesa

Classificação de Ativo Orçamento e Provisão de Despesa Classificação de Ativo Orçamento e Provisão de Despesa Produto : Microsiga Protheus Ativo Fixo versão 11 Requisito : 154.03 Data da publicação : 28/02/13 País(es) : Brasil Banco(s) de Dados : Todos Esta

Leia mais

IDENTIFICAÇÃO E CLASSIFICAÇÃO DE CONTEÚDO DIGITAL PARA O USO NA EDUCAÇÃO DE PESSOAS COM NECESSIDADES ESPECIAIS

IDENTIFICAÇÃO E CLASSIFICAÇÃO DE CONTEÚDO DIGITAL PARA O USO NA EDUCAÇÃO DE PESSOAS COM NECESSIDADES ESPECIAIS IDENTIFICAÇÃO E CLASSIFICAÇÃO DE CONTEÚDO DIGITAL PARA O USO NA EDUCAÇÃO DE PESSOAS COM NECESSIDADES ESPECIAIS Júlio César Neis 1 ; Rosangela Aguiar Adam 2 ; Tiago Lopes Gonçalves 3 ; Vera Regina Mazureck

Leia mais

Prof. José Maurício S. Pinheiro - UGB - 2009

Prof. José Maurício S. Pinheiro - UGB - 2009 Auditoria e Análise de Segurança da Informação Forense Computacional Prof. José Maurício S. Pinheiro - UGB - 2009 Forense Computacional 2 Forense Computacional A forense computacional pode ser definida

Leia mais

CATEGORIA 2 INICIATIVAS DE INOVAÇÃO

CATEGORIA 2 INICIATIVAS DE INOVAÇÃO ESAF Escola de Administração Fazendária CATEGORIA 2 INICIATIVAS DE INOVAÇÃO 3º Lugar 020I FERNANDO VENANCIO PINHEIRO* 26 Anos RIO DE JANEIRO - RJ SKYLOGS - Aplicativo Para Diário de Bordo Eletrônico *

Leia mais

Sefaz Virtual Ambiente Nacional Projeto Nota Fiscal Eletrônica

Sefaz Virtual Ambiente Nacional Projeto Nota Fiscal Eletrônica Projeto Nota Fiscal Eletrônica Orientações de Utilização do Sefaz Virtual Ambiente Nacional para as Empresas Versão 1.0 Fevereiro 2008 1 Sumário: 1. Introdução... 3 2. O que é o Sefaz Virtual... 4 3. Benefícios

Leia mais

Gestão da Qualidade. Aula 13. Prof. Pablo

Gestão da Qualidade. Aula 13. Prof. Pablo Gestão da Qualidade Aula 13 Prof. Pablo Proposito da Aula 1. Conhecer as normas da família ISO 9000. Família da norma ISO 9000 Família ISO 9000 As normas ISO da família 9000 formam um conjunto genérico

Leia mais

TABLETS COMO RECURSO DE ENSINO: UM ESTUDO COM PROFESSORES DE MATEMÁTICA NUMA ESCOLA PÚBLICA DA PARAÍBA

TABLETS COMO RECURSO DE ENSINO: UM ESTUDO COM PROFESSORES DE MATEMÁTICA NUMA ESCOLA PÚBLICA DA PARAÍBA TABLETS COMO RECURSO DE ENSINO: UM ESTUDO COM PROFESSORES DE MATEMÁTICA NUMA ESCOLA PÚBLICA DA PARAÍBA 1-Introdução LUCAS, Leandro Mário UEPB leandrosl.pb@gmail.com MOITA, Filomena Maria UEPB filomena_moita@hotmail.com

Leia mais

Registro Hospitalar de Câncer Conceitos Básicos Planejamento Coleta de Dados Fluxo da Informação

Registro Hospitalar de Câncer Conceitos Básicos Planejamento Coleta de Dados Fluxo da Informação Registro Hospitalar de Câncer Conceitos Básicos Planejamento Coleta de Dados Fluxo da Informação Registro Hospitalar de Câncer Este tipo de registro se caracteriza em um centro de coleta, armazenamento,

Leia mais

UM JOGO BINOMIAL 1. INTRODUÇÃO

UM JOGO BINOMIAL 1. INTRODUÇÃO 1. INTRODUÇÃO UM JOGO BINOMIAL São muitos os casos de aplicação, no cotidiano de cada um de nós, dos conceitos de probabilidade. Afinal, o mundo é probabilístico, não determinístico; a natureza acontece

Leia mais

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens Roteiro... Conceitos de SD, vantagens e desvantagens Infra-estrutura de um SD Considerações de projeto Sistemas Distribuídos Aula 4 Karine de Pinho Peralta Modelos de Comunicação - comunicação entre processos

Leia mais

Projeto Manutenção SAP Web e Portal TRT

Projeto Manutenção SAP Web e Portal TRT Anexo VIII SOF 46/11 Projeto Manutenção SAP Web e Portal TRT Versão: 2.00 Índice 1 Introdução... 1.1 Objetivo... 1.2 Escopo... 1.3 Definições, Acrônimos e Abreviações... 1.4 Referências... 2 Gerenciamento

Leia mais

Dureza Rockwell. No início do século XX houve muitos progressos. Nossa aula. Em que consiste o ensaio Rockwell. no campo da determinação da dureza.

Dureza Rockwell. No início do século XX houve muitos progressos. Nossa aula. Em que consiste o ensaio Rockwell. no campo da determinação da dureza. A UU L AL A Dureza Rockwell No início do século XX houve muitos progressos no campo da determinação da dureza. Introdução Em 1922, Rockwell desenvolveu um método de ensaio de dureza que utilizava um sistema

Leia mais

UNIVERSIDADE ESTADUAL DO CENTRO-OESTE - UNICENTRO CURSO DE PÓS GRADUAÇÃO EM MÍDIAS NA EDUCAÇÃO JULIANA LEME MOURÃO ORIENTADOR: PAULO GUILHERMETI

UNIVERSIDADE ESTADUAL DO CENTRO-OESTE - UNICENTRO CURSO DE PÓS GRADUAÇÃO EM MÍDIAS NA EDUCAÇÃO JULIANA LEME MOURÃO ORIENTADOR: PAULO GUILHERMETI UNIVERSIDADE ESTADUAL DO CENTRO-OESTE - UNICENTRO CURSO DE PÓS GRADUAÇÃO EM MÍDIAS NA EDUCAÇÃO JULIANA LEME MOURÃO ORIENTADOR: PAULO GUILHERMETI SIMULADORES VIRTUAIS ALIADOS AO ENSINO DE FÍSICA GOIOERÊ

Leia mais

Aula 11: Desvios e Laços

Aula 11: Desvios e Laços Aula 11: Desvios e Laços Nesta aula explicaremos alguns comandos que podem alterar o fluxo dos seus programas em JavaScript. Você aprenderá a estrutura dos comandos de desvios e laços. Entenderá como funcionam

Leia mais

ISO 9000 e ISO 14.000

ISO 9000 e ISO 14.000 DISCIPLINA: QUALIDADE NA PRESTAÇÃO DE SERVIÇOS PROFESSORA: ALEXSANDRA GOMES PERÍODO: 3º PERÍODO CARGA HORÁRIA: 60 HORAS ISO 9000 e ISO 14.000 ISO 9000 A expressão ISO 9000 designa um grupo de normas técnicas

Leia mais

A CONTAGEM DE ESTRELAS COMO TEMA TRANSVERSAL EM ASTRONOMIA

A CONTAGEM DE ESTRELAS COMO TEMA TRANSVERSAL EM ASTRONOMIA I Simpósio Nacional de Educação em Astronomia Rio de Janeiro - 2011 1 A CONTAGEM DE ESTRELAS COMO TEMA TRANSVERSAL EM ASTRONOMIA Lev Vertchenko 1, Tomás de Aquino Silveira 2 1 PUC-Minas/Mestrado em Ensino

Leia mais

NABARRETE, Tatiane Souza 1 <fabrimana@gmail.com> BARELLA, Lauriano Antonio² <barella28@hotmail.com> 1 INTRODUÇÃO

NABARRETE, Tatiane Souza 1 <fabrimana@gmail.com> BARELLA, Lauriano Antonio² <barella28@hotmail.com> 1 INTRODUÇÃO 125 UTILIZAÇÃO DA CONTABILIDADE GERENCIAL PARA A TOMADA DE DECISÃO NAS EMPRESAS DO RAMO DE MÁQUINAS E EQUIPAMENTOS AGRÍCOLAS NO MUNICÍPIO DE ALTA FLORESTA - MT 1 INTRODUÇÃO NABARRETE, Tatiane Souza 1

Leia mais

Política de Responsabilidade Socioambiental - (PRSA) Política de Responsabilidade Socioambiental (PRSA).

Política de Responsabilidade Socioambiental - (PRSA) Política de Responsabilidade Socioambiental (PRSA). Política de Responsabilidade Socioambiental (PRSA). Versão 2.0 Fevereiro/2016 1 Histórico de Alterações Versão Data Responsável Alterações/Observações 1.0 Julho/15 2.0 Fevereiro/16 Jeniffer Caroline Rugik

Leia mais

IMPACTO DA ATIVIDADE FISCALIZATÓRIA SOBRE A MELHORIA DA QUALIDADE NA PRESTAÇÃO DO SERVIÇO PÚBLICO DE DRENAGEM URBANA NO DISTRITO FEDERAL

IMPACTO DA ATIVIDADE FISCALIZATÓRIA SOBRE A MELHORIA DA QUALIDADE NA PRESTAÇÃO DO SERVIÇO PÚBLICO DE DRENAGEM URBANA NO DISTRITO FEDERAL IMPACTO DA ATIVIDADE FISCALIZATÓRIA SOBRE A MELHORIA DA QUALIDADE NA PRESTAÇÃO DO SERVIÇO PÚBLICO DE DRENAGEM URBANA NO DISTRITO FEDERAL Carolinne Isabella Dias Gomes (1) Possui Bacharelado e Licenciatura

Leia mais

Aula Prática 1 - Gerador Van de Graaff e interação entre corpos carregados

Aula Prática 1 - Gerador Van de Graaff e interação entre corpos carregados Aula Prática 1 - Gerador Van de Graaff e interação entre corpos carregados Disciplinas: Física III (DQF 06034) Fundamentos de Física III (DQF 10079) Departamento de Química e Física- CCA/UFES Objetivo:

Leia mais

Manual Recálculo de Custo Médio

Manual Recálculo de Custo Médio Manual Recálculo de Custo DESENVOLVENDO SOLUÇÕES Autora: Laila M G Gechele Doc. Vrs. 01 Revisores: Aprovado em: Setembro de 2013. Nota de copyright Copyright 2013 Teorema Informática, Guarapuava. Todos

Leia mais

Centro de Hematologia e Hemoterapia do Paraná HEMEPAR Farm. Elvira Rosa Folda DVGQB Jul/2012

Centro de Hematologia e Hemoterapia do Paraná HEMEPAR Farm. Elvira Rosa Folda DVGQB Jul/2012 Centro de Hematologia e Hemoterapia do Paraná HEMEPAR Farm. Elvira Rosa Folda DVGQB Jul/2012 ABNT NBR ISO 9000:2000 Sistemas de Gestão da Qualidade Fundamentos e Vocabulário A documentação permite a comunicação

Leia mais

ANEXO 2 - TERMO DE REFERÊNCIA PLANO DE CONTROLE AMBIENTAL SIMPLIFICADO PCAS I. CONTEÚDO MÍNIMO DO PLANO DE CONTROLE AMBIENTAL SIMPLIFICADO PCAS

ANEXO 2 - TERMO DE REFERÊNCIA PLANO DE CONTROLE AMBIENTAL SIMPLIFICADO PCAS I. CONTEÚDO MÍNIMO DO PLANO DE CONTROLE AMBIENTAL SIMPLIFICADO PCAS ANEXO 2 - TERMO DE REFERÊNCIA PLANO DE CONTROLE AMBIENTAL SIMPLIFICADO PCAS I. CONTEÚDO MÍNIMO DO PLANO DE CONTROLE AMBIENTAL SIMPLIFICADO PCAS O Plano de Controle Ambiental Simplificado deverá conter

Leia mais

MANUAL DO AVALIADOR O que é uma Feira de Ciência? Por que avaliar os trabalhos? Como os avaliadores devem proceder?

MANUAL DO AVALIADOR O que é uma Feira de Ciência? Por que avaliar os trabalhos? Como os avaliadores devem proceder? MANUAL DO AVALIADOR O que é uma Feira de Ciência? É uma exposição que divulga os resultados de experimentos ou de levantamentos realizados, com rigor científico, por alunos, sob a orientação de um professor.

Leia mais