Universidade Estadual de Maringá Centro de Tecnologia - Departamento de Informática Especialização em Desenvolvimento de Sistemas para WEB

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

Download "Universidade Estadual de Maringá Centro de Tecnologia - Departamento de Informática Especialização em Desenvolvimento de Sistemas para WEB"

Transcrição

1 Universidade Estadual de Maringá Centro de Tecnologia - Departamento de Informática Especialização em Desenvolvimento de Sistemas para WEB Investigação de Metodologias de Desenvolvimento de Sistemas WEB usando Aspectos Ana Carolina Amstalden Prof. Dra. Elisa H. M. Huzita Orientadora Maringá, 2008

2 Ana Carolina Amstalden Investigação de Metodologias de Desenvolvimento de Sistemas WEB usando Aspectos Trabalho submetido à Universidade Estadual de Maringá como requisito para obtenção do título de Especialista de Desenvolvimento de Sistemas para WEB. Maringá, 2008 ii

3 Ao meu cúmplice, amigo, apaixonante e futuro marido: Diego iii

4 AGRADECIMENTOS Gostaria de agradecer a todos que de algum modo contribuíram para a realização deste projeto, sem o apoio recebido não seria possível concretizá-lo. Muito Obrigada: A Deus pelas bênçãos que todos os dias ilumina minha vida. A minha mãe Rosangela pelo apoio, confiança e exemplo de força transmitida a mim ao longo de minha educação. Ao meu pai Mauricio por me ensinar a não desistir dos meus sonhos. Ao meu noivo Diego, por tudo, por aceitar o desafio de fazer uma pós-graduação em uma cidade distante, por compartilhar sua vida ao meu lado, por sempre acreditar, confiar em mim, me apoiar e dar força. Aos meus irmãos Lucas e Laura pelo carinho e todas as brincadeiras que fazemos quando estamos reunidos. Ao meu vô Bube por me ensinar desde muito cedo o valor do trabalho. A minha vó Suzana por ser como um anjo da guarda da nossa família. A minha tia Rosalia pelo apoio e incentivo. A minha amiga Josi pela força e apoio em um momento muito difícil e por todas as longas conversas filosóficas que sempre tivemos. Aos meus companheiros de trabalho, João Ricardo, Julieta, Valério e Dalva por me receberem tão bem em Campo Grande e na equipe. A equipe de Vôlei Feminino da Sefaz por todos os excelentes jogos de vôlei regados a muitas risadas. As minhas eternas amigas do coração de Coxim: Flavianny, Juliana, Larina, Suzane e Michelly. Ao meu querido amigo Odacil por aceitar o desafio de fazer uma pós em uma cidade distante da nossa, por dividir despesas, risadas e muita conversa boa nas longas horas entre Maringá e Dourados. iv

5 A minha orientadora Profa. Dra. Elisa H. M. Huzita, pela dedicação, persistência, incentivo e idéias passadas nesta jornada. A todos os funcionários do DIN pelo suporte técnico e administrativo. v

6 Foi um belo Mato-Grosso há vinte anos atrás Naqueles tempos queridos que não voltam nunca mais Nas matas onde eu caçava um pequeno arbusto achei Levando pra minha casa no meu quintal plantei Era um belo pé de cedro, pequenino, em formação Sepultei suas raízes na terra fofa do chão Um dia parti pra longe, amei, também sofri Vinte anos se passaram em que distante eu vivi "À Virgem Santa sagrada uma prece eu vou fazer Junto ao meu pé de cedro é que desejo morrer Quero ter sua sombra amiga projetada sobre mim No meu último repouso na cidade de Coxim" Hoje volto arrependido para o meu antigo lar Abatido e comovido, com vontade de chorar E rever meu pé de cedro que está grande como o quê Mas é menor que a saudade que hoje sinto de você Cresceu como minha mágoa, cresceu numa força rara Mas é menor que a saudade que até hoje nos separa A terra ficou molhada do pranto que derramei Que saudade, pé de cedro, do tempo que eu te plantei. Zacarias Mourão vi

7 RESUMO A popularidade das aplicações WEB está em expansão, as empresas e governos descobriram um modo de atingir o maior número possível de pessoas para oferecer seus produtos e serviços. Com isto, este tipo de aplicação torna-se cada vez mais complexa exigindo metodologias mais adequadas e implementações mais eficazes. A abordagem orientada a objetos já está consolidada e pode ser utilizada também, para desenvolver aplicações WEB. No entanto, este paradigma não possui recursos adequados para tratar separação avançada de interesses. Tais interesses referem-se aos sistêmicos ou de funcionalidades que estão sendo utilizados em diversas partes do código. Para resolver esta deficiência a Orientação a Aspectos, um paradigma que modulariza funcionalidades transversais em aspectos, foi proposta, permitindo assim separar estes interesses das classes do domínio do problema e que mais tarde, são executados em pontos pré-definidos no sistema. Assim, não ocorre mais o problema de código emaranhado ou espalhado pelo sistema. Neste trabalho, propõe-se a utilização da Orientação a Aspectos na implementação de Sistemas WEB mostrando uma metodologia de desenvolvimento de aplicações WEB com Aspectos, como e onde utilizar os aspectos neste tipo de aplicação e como pode se dar a sua implementação. Para exemplificar nossa abordagem aplicamo-la em um sistema WEB para controle de tarefas. Palavras-chave: orientação a aspectos, orientação a objetos, sistemas WEB. vii

8 ABSTRACT Web applications are increasing in popularity as enterprises and governments discovered a way to reach as much people as possible to offer their products and services. In this sense this kind of application becomes more complex and consequently requires a suitable methodologies and more effective implementations. Object oriented approach is already consolidated and can be used to develop Web applications as well. Meanwhile this paradigm does not have suitable resources to deal with advanced separation of concerns. Such goals relates to systemic or functionality aspects that are being used in various parts of the code. To overcome the pointed deficiency it was proposed the Aspect Orientation, a paradigm that divides cross features in aspect modules allowing the separation of these concerns from domain problem class and later on is processed at pre-defined points across the system. By this nested or scattered code alongside the system can be avoided. In this work it is proposed the use of Aspects Orientation in Web systems implementation presenting a methodology for the development of Web applications with aspect, how and where to use the aspects in this kind of application and how it can be fairly implemented. To illustrate our approach we have applied it in a Task Control Web system. Keywords: aspect oriented, object oriented, WEB systems. viii

9 LISTA DE ABREVIATURAS AORE Aspects Oriented Requirement Engineering POO Programação Orientada a Objetos POA Programação Orientada a Aspectos UML Unified Modeling Language JSP Java Server Pages AJDT AspectJ Development Tools JAR Java Archive PHP Page Hypertext Preprocessor ASP Active Server Pages ix

10 LISTA DE FIGURAS Figura 2.1 Combinação entre interesses funcionais e transversais 13 Figura 2.2 Combinação entre componentes e aspectos 16 Figura 2.3 Exemplo de código fonte para definição do ponto de junção 18 Figura 2.4 Estrutura de um Adendo 28 Figura 3.1 Estereótipos na modelagem WEB 47 Figura 3.2 Ícones Estereótipos do modelo Conallen (Fonte: Conallen, 1999) 52 Figura 3.3 Modelo de dados WebML (Fonte: Ceri, 2000) 54 Figura 3.4 Especificações de Hipertexto (Fonte: Ceri, 2000) 55 Figura 3.5 Desenvolvimento de Aplicações WEB (Fonte: Ceri, 2000) 56 Figura 4.1 Adaptação do Modelo de Separação Avançada de Propriedades de Brito 60 & Moreira, 2003 Figura 4.2 Gráfico de Visões (Fonte: Paiva, 2007) 65 Figura 4.3 Modelo de processo ARCADE. Adaptado de RASHID et. al. (2003) 67 Figura 4.4 Gráfico V-Graph (Fonte: AORE, 2005) 73 Figura 4.5 Atualização dos modelos no desenvolvimento. (Jacobson & NG, 2005) 75 Figura 4.6 Estrutura dos Elementos e Caso de Uso Slice. (Jacobson & NG, 2005) 76 Figura 4.7 Representação de casos de uso (Fonte: Paiva, 2007) 76 Figura 5.1 Modelo de Desenvolvimento WEB usando Aspectos (Fase Análise de 90 Requisitos) Figura 6.1 Modelo de Dados 94 Figura 6.2 Modelo de Navegação 94 Figura 6.3 Modelo de Composição 95 Figura 6.4 Diagrama de Seqüência 100 Figura 6.5 Diagrama de Casos de Uso com Aspectos 104 Figura 6.6 Diagrama de Classes com Aspectos 105 Figura 6.7 Criação de Projeto AspectJ 107 x

11 Figura 6.8 Exportação do Projeto AspectJ para arquivo JAR 108 Figura 6.9 Continuação da Exportação do Projeto AspectJ para arquivo JAR 108 Figura 6.10 Aspecto ControleTransacao 110 Figura 6.11 Classe ConexaoDB 111 Figura 6.12 Servlet LoginServlet 112 Figura A.1 Menu Find and Install 121 Figura A.2 Install Update 122 Figura A.3 Lista de plugin para instalações e atualizações 122 Figura A.4 New Update Site 123 Figura A.5 Acréscimo do plugin AJDT para a lista de instalações e atualizações 123 Figura A.6 Busca por instalações ou atualizações do site selecionado 124 Figura A.7 Resultado da busca por instalações ou atualizações do site selecionado 124 Figura A.8 Licença 125 Figura A.9 Informações sobre a instalação. 125 Figura A.10 Download do plugin 126 Figura A.11 Instalação do plugin. 126 Figura A.12 Progresso da Instalação 126 Figura A.13 Finalização da Instalação 127 xi

12 LISTA DE TABELAS Tabela 2.1 Palavras Reservadas no AspectJ para chamada do ponto de junção Tabela 2.2 Assinaturas dos pontos de junção Tabela 2.3 Designadores do ponto de atuação. (Winck et al) Tabela 3.1 Características das Aplicações WEB Tabela 3.2 Principais Aplicações de Aspectos nos Sistemas WEB Tabela 4.1 Relacionamento Propriedades X Requisitos dos Stakeholders. Adaptado 68 do (RASHID el al, 2003)... Tabela 4.2 Mapeamento entre aspectos candidatos. Adaptado do (RASHID el al, )... Tabela 4.3 Mapeamento Aspecto Candidato Tabela 4.4 Template para atributos de qualidade. (Brito & Moreira, 2002) Tabela 4.5 Template para requisitos não funcionais. (Brito & Moreira, 2003) Tabela 4.6 Identificação de Match Points. (Brito & Moreira, 2003) Tabela 4.7 Tipos de Links Tabela 5.1 Características WEB X Modelos de Desenvolvimento WEB Tabela 5.2 Características WEB X Orientação a Aspectos Tabela 5.3 Tabela baseada no modelo ViewPoint (ADAPTADO DO RASHID ET 87 AL, 2003)... Tabela 5.4 Resolução de Conflitos Tabela 5.5 Identificação dos Aspectos Tabela 5.6 Identificação Ponto de Atuação Tabela 6.1 Aspecto Candidato X Requisitos do Domínio Tabela 6.2 Resolução de Conflitos Tabela 6.3 Especificação da Implementação Tabela 6.4 Especificação dos Pontos de Atuação xii

13 ÍNDICE AGRADECIMENTOS... iv RESUMO...vii ABSTRACT...viii LISTA DE ABREVIATURAS... ix LISTA DE FIGURAS... x LISTA DE TABELAS... xii INTRODUÇÃO Contexto Objetivo Definição do Problema Justificativa Motivação Limitações da Pesquisa Metodologia de Desenvolvimento da Pesquisa Organização da Monografia...6 PROGRAMAÇÃO ORIENTADA A ASPECTOS A Programação Orientada a Aspectos Características da Programação Orientada a Aspectos Conceito de Aspecto Separação de Interesses Conceito da Programação Orientado a Aspectos Propósito da Programação Orientada a Aspectos Composição de um sistema orientado a aspectos Combinação Aspectual Fundamentos da Orientação a Aspectos A Aspect J Pontos de Junção Ponto de Atuação Adendos do AspectJ O Aspecto Resumo do Capítulo...25 APLICAÇÕES WEB Conceitos Características das Aplicações WEB Aplicativos WEB Aplicativos WEB X Aplicativos Tradicionais Engenharia WEB Conceito Características da Engenharia WEB Modelos para Aplicações WEB Aspectos em Sistemas WEB Resumo do Capítulo...44 MÉTODOS DE DESENVOLVIMENTO ORIENTADO A ASPECTOS xiii

14 4.1 AORE (Aspects Oriented Requirement Engineering) Abordagens Orientadas a Aspectos Abordagem Theme Abordagem Viewpoint Abordagem AORE utilizando UML Abordagem Goals Abordagem com Casos de Uso Resumo do Capítulo...64 DESENVOLVIMENTO DE SISTEMAS WEB USANDO ASPECTOS Relação entre as características dos sistemas WEB x Modelos WEB Relação entre as Características dos Sistemas WEB com a Orientação a Aspectos Desenvolvimento de Sistemas WEB com Aspectos Resumo do Capítulo...77 EXPERIMENTAÇÃO: CONTROLE DE TAREFAS PELA WEB USANDO ASPECTOS Experimentação Implementação Ambiente de Programação Descrição da Implementação de Aplicações WEB usando AspectJ Exemplo do Código-Fonte Resumo do Capítulo...98 CONCLUSÃO Objetivos Alcançados Dificuldades Pontos fortes da abordagem desenvolvida Dificuldades / Restrições da Abordagem desenvolvida Contribuições Trabalhos Futuros APÊNDICE REFERÊNCIAS BIBLIOGRÁFICAS ANEXO xiv

15 1. Introdução 1 CAPÍTULO 1 INTRODUÇÃO Neste capítulo, é apresentada uma visão sobre a proposta do trabalho. Primeiramente, foi detectado o problema e definidos os objetivos a serem alcançados. A seguir justificou-se a importância do tema e delimitou-se o escopo da pesquisa. Por fim, são apresentadas a metodologia de pesquisa utilizada e a estrutura em que a monografia esta organizada. 1.1 Contexto A engenharia de software em conjunto com as linguagens e técnicas de programação formam uma gama de procedimentos que buscam oferecer um produto que melhor atenda os requisitos do usuário. Muitas técnicas de desenvolvimento de software, como o modelo estruturado e a abordagem Orientada a Objetos, foram implantadas, exploradas, testadas, usadas e revistas durante anos, sempre buscando atingir uma modularização e reusabilidade de código mais eficaz. Nos anos 70 o grande boom estava por conta da abordagem estruturada com o advento da Orientação a Objetos, na década de 90 iniciou-se um novo paradigma de desenvolvimento de software que ainda prevalece. Este modelo de desenvolvimento de software trouxe muitos avanços, como: facilidade para projetar, reusabilidade de código, modularização mais eficiente, entre outros, visando sempre atingir através da implementação dos módulos (classes) um desenvolvimento eficiente dos requisitos do usuário. Porém, existem certos interesses que não são adequadamente tratadas na OO. Por exemplo, quando um mesmo interesse ocorre, simultaneamente, em diversas partes do sistema, ou, quando não está de acordo com a natureza da classe à qual faz parte, não modularizá-los gera um acúmulo de responsabilidade adicional que o projeto da classe não previa. Isso acaba ocasionando um entrelaçamento de particularidades ou um erro na abstração da classe. É interessante ressaltar também, que as observações acima valem não apenas para as linguagens orientadas a objetos, como também, para as linguagens procedurais.

16 1. Introdução 2 Os interesses que são replicados no código do sistema são denominados interesses transversais. A dificuldade de modularizar os interesses transversais acarretou o surgimento do paradigma da Orientação a Aspectos, que tem por objetivo adicionar à OO algumas características que possibilitem a modularização dos interesses transversais de maneira correta no sistema. A idéia da Orientação a Aspectos é que seja feita a separação avançada de interesses capturando e estruturando os interesses transversais em módulos denominados aspectos (Kiczales, 2001). A implementação da Programação Orientada a Aspectos já vem sendo explorada há algum tempo, entretanto, é grande a dificuldade entre os analistas e programadores na identificação dos interesses transversais do sistema. A OA está evoluindo da etapa de implementação em direção à arquitetura e projeto de sistemas, para que a separação dos interesses transversais do sistema ocorra em todas as etapas do desenvolvimento. Da mesma forma que as comunidades cientificas e de desenvolvimento assistiram a evolução das linguagens de programação, as aplicações que têm surgido têm também apresentado características peculiares. Atualmente, a internet é uma grande cadeia de comunicação e negócios. A crescente demanda por sistemas WEB cada vez mais complexos, nos faz observar a importância de se estudar melhorias e avanços na implementação destes. Partindo do pensamento de que nas aplicações WEB encontram-se e podem-se modularizar os interesses transversais, esta pesquisa tem como foco, investigar os conceitos importantes para a modelagem de sistemas orientados a aspectos, e aplicá-los no desenvolvimento desse tipo de aplicação. 1.2 Objetivo Objetivo Geral: Investigar metodologias de desenvolvimento orientado a aspectos direcionando este estudo para a implementação de aplicações WEB.

17 1. Introdução 3 Objetivos Específicos: - Estudar, apresentar e descrever os fundamentos da programação orientada a aspectos para sistemas WEB; - Investigar metodologias de desenvolvimento orientado a aspectos existentes na comunidade científica e avaliá-las, direcionando o estudo para o desenvolvimento de sistemas WEB; - Com base nos resultados obtidos na investigação de processos de desenvolvimento orientado a aspectos, formular uma metodologia julgada apta para aplicações WEB. - Exemplificar a metodologia proposta com o desenvolvimento de um estudo de caso. 1.3 Definição do Problema As técnicas de programação orientada a objetos e procedurais não são capazes de capturar certas funcionalidades do sistema, por exemplo, aquelas utilizadas em diversas partes do sistema ou que talvez não possuam a mesma natureza da classe ou procedimento ao qual pertencem, causando assim uma sobrecarga de responsabilidade ao componente, não prevista na fase inicial de desenvolvimento. Para resolver este problema surgiu o paradigma orientado a aspectos, cujo objetivo é separar essas funcionalidades tratando-as como aspectos do sistema. Entretanto, existe grande dificuldade em extrair e diagnosticar quais são os aspectos de um sistema. As aplicações WEB têm ganhado importância a cada dia, ao observá-las podem-se identificar características tais como: controle de acesso de usuários, persistência de dados, testes de usabilidade. Ainda, as metodologias para desenvolvimento WEB tais como WebML, HDM, OOHDM não apresentam recursos para extração, identificação de características como as anteriormente mencionadas. Portanto, os desenvolvedores de software necessitam de uma metodologia de desenvolvimento para aplicações WEB que integre os conceitos de aspectos.

18 1. Introdução Justificativa Adotar, corretamente, processos de desenvolvimento de software sempre trouxe avanços na direção de obter sistemas mais eficientes, reutilizáveis e manuteníveis. O paradigma de programação orientado a aspectos veio para oferecer o suporte necessário para resolver o problema de projetos que não estavam tratando adequadamente a identificação dos interesses transversais. Entretanto, vários estudos, principalmente os iniciais, sobre este assunto tiveram foco nas técnicas de implementação. Somente há pouco tempo a questão do processo de desenvolvimento orientado a aspectos é tema de pesquisas. Este trabalho analisa como um sistema WEB, pode ser construído utilizando a abordagem orientada a aspectos visto que a Internet representa hoje o maior sistema de troca de informações mundial, onde um grande número de usuários com necessidades diferentes a utilizam como meio de comunicação, pesquisa e entretenimento. Além disso, pequenas e grandes empresas, privadas ou públicas, estão dando mais importância ao uso de sistemas WEB em suas atividades. Devido ao aumento da complexidade dos sistemas WEB observa-se a importância da utilização de processos de desenvolvimento adequados para que sejam concebidos produtos de qualidade. Atualmente, o paradigma de desenvolvimento de sistemas mais utilizado é a orientação a objetos, entretanto, este paradigma apresenta certas limitações, quando se trata da separação dos interesses transversais. Atributos importantes nas aplicações WEB como segurança e desempenho podem ser mais facilmente implementados utilizando a programação orientada a aspectos, por isso a importância de agregar no desenvolvimento de sistemas WEB a abordagem orientada a aspectos em todas as fases do seu desenvolvimento. Importância do Tema: Esta pesquisa será importante para: - Difundir o paradigma orientado a aspectos na comunidade cientifica e comercial;

19 1. Introdução 5 - Ajudar o processo de desenvolvimento WEB, definindo diretrizes para a identificação de aspectos, e assim auxiliar os analistas e programadores a separar os interesses transversais do sistema; - Agregar as características de programação orientada a aspectos no desenvolvimento de software para WEB. 1.5 Motivação Como descrito anteriormente o assunto da pesquisa, Metodologia de Desenvolvimento Orientada a Aspectos para Sistemas WEB, tem uma lacuna que está começando a ser preenchida com as pesquisas direcionadas não para a implementação de aspectos do sistema, mas ao processo de desenvolvimento orientado a aspectos. Otimizar o desenvolvimento orientado a aspectos e promover o amadurecimento do desenvolvimento de aplicações WEB agregando as características POA é algo desafiador e empolgante. 1.6 Limitações da Pesquisa Não faz parte do escopo deste trabalho: - Estudar e utilizar as diferentes tecnologias que atendem à Programação Orientada a Aspectos, para avaliar os resultados quanto à aplicação da metodologia para POA. No estudo de caso será utilizada apenas a linguagem AspectJ. Outras linguagens e tecnologias de implementação não serão comparadas e nem testadas neste trabalho; - Existem outras abordagens, tais como: filtros de composição, reflexão computacional, hyper-spaces, Subject-Oriented Programming (SOP) que como a Programação Orientada Aspectos suprem as necessidades atuais quanto à separação avançada de interesses. Este trabalho, no entanto, estudará apenas o Paradigma Orientado a Aspectos.

20 1. Introdução Metodologia de Desenvolvimento da Pesquisa As atividades desta pesquisa foram divididas em duas etapas: fundamentação teórica e aplicação dos resultados em um estudo de caso. Na fundamentação teórica, estudaremos os conceitos, teorias e métodos computacionais necessários para uma metodologia de desenvolvimento orientada a aspectos aplicada a sistemas WEB. A metodologia adotada nesta etapa envolveu: - Estudar conceitos, teorias e métodos relacionados ao tema da pesquisa: Programação Orientada a Aspectos, Metodologias de Desenvolvimento Orientada a Aspectos, Métodos de Desenvolvimento de Sistemas WEB, Características dos Sistemas WEB, Linguagem AspectJ. Estes estudos foram baseados em consultas à literatura especializada, tais como livros e artigos em revistas técnicas, bem como consultas a sites da Internet; - Discussão e estudo de temas da pesquisa com a orientadora. Consistiu na sistematização das atividades explanadas na etapa anterior e compreendem: a proposta de metodologia de desenvolvimento OA para sistemas WEB a sua experimentação em um estudo de caso. Para a implementação do estudo de caso foi utilizada a linguagem Java versão 6 e a linguagem de aspectos AspectJ. 1.8 Organização da Monografia Este trabalho é composto por este capitulo Introdutório e pelos seguintes capítulos: Capítulo 2: Apresenta um estudo sobre os conceitos da programação orientada a aspectos e uma abordagem em torno da linguagem AspectJ. Capítulo 3: Conceitos referentes a sistemas WEB e processos de desenvolvimento de aplicações WEB são apresentados neste capitulo. Capítulo 4: Análise de abordagens de desenvolvimento orientado a aspectos são levantados neste capítulo. Capítulo 5: Apresentação de uma metodologia de desenvolvimento orientada a aspectos para o desenvolvimento de sistemas WEB.

21 1. Introdução 7 Capítulo 6: Realização de uma experimentação da modelagem apresentada no capítulo 5 em um sistema de controle de tarefas para a WEB. Capítulo 7: Descreve as conclusões com base nos estudos realizados, as dificuldades encontradas durante o desenvolvimento do trabalho e aponta trabalhos futuros.

22 2. Programação Orientada a Aspectos 8 CAPÍTULO 2 PROGRAMAÇÃO ORIENTADA A ASPECTOS Os estudos referentes ao desenvolvimento de software sempre procuram aprimorar a qualidade do produto final. Pensando assim foi criada no final da década de 90 a Programação Orientada a Aspectos, um novo paradigma que visa garantir a alta separação de interesses acabando com problemas da Orientação a Objetos tais como código emaranhado ou espalhado. Este capítulo aborda os conceitos envolvendo a Orientação a Aspectos e descreve a linguagem AspectJ que mais tarde será utilizada na exemplificação de nossa abordagem. 2.1 A Programação Orientada a Aspectos Devido à crescente demanda por softwares na década de 1980 e 1990 e estes, por sua vez, possuírem funcionalidades cada vez mais complexas houve uma crise na produção mundial de software. A demanda por sistemas cresceu mais rapidamente do que a capacidade de fornecimento, e as técnicas utilizadas para a produção destes mostravam-se ineficazes. O paradigma orientado a objetos chegou a ser apontado como solução para a crise do software, pois possuí recursos que tornam a implementação de sistemas mais eficiente, como abstração para representar os elementos que compõem a solução do problema, facilitando o reúso de código e desta maneira evitando esforços duplicados dos desenvolvedores durante a implementação do sistema. Durante o desenvolvimento de um projeto que utiliza a Programação Orientada a Objetos (POO) alguns conceitos não podem ser quebrados, são eles: Um objeto não deve ter acesso a informações que não fazem parte do seu escopo; Uma classe deve representar apenas um interesse da solução do problema; O entrelaçamento entre classes deve ser minimizado.

23 2. Programação Orientada a Aspectos 9 A implementação de interesses adicionais ao sistema que não fazem parte das regras de negócio, mas que dão suporte à solução do problema provoca um acréscimo de requisitos não previstos para a classe. Além disso, estes interesses adicionais, denominados interesses transversais, tendem a serem utilizados em outras classes, gerando assim a ocorrência de dois problemas: o código espalhado (scattereing) e o código emaranhado (tangled). Portanto, ocorre a quebra dos conceitos do paradigma uma vez que este não trata, com clareza, comportamentos que se espalham pelos diversos objetos do sistema. Para contornar parte desses problemas surgiu a Programação Orientada a Aspectos (POA). 2.2 Características da Programação Orientada a Aspectos Conceito de Aspecto Na literatura corrente podem ser encontradas várias definições para aspectos, sendo as principais apresentadas a seguir: - Aspectos são representações de concerns 1 que atravessam as representações de outros concerns (Junior, 2003). - Aspectos são comportamentos que estão misturados e espalhados através do sistema e é um tipo particular de concer (Clarke & Baniassad, 2005). - Um concern é uma questão ou assunto de interesse no sistema de software, exemplificando ainda que propriedade pode ser um objetivo ou um conjunto de propriedades que o sistema deve satisfazer (Brito & Moreira, 2003). - Concern é um subproblema (Tekinerdogan, 2004). - Concern é um conjunto de requisitos relacionados (Mili et. al, 2004). - Concern é uma característica do sistema ou domínio que seja interessante analisar quer isoladamente, quer em conjunto com outras (Silva & Leite, 2005). - Um concern está transversal se está atravessando em outros concerns em um módulo ou em múltiplos módulos do sistema (Figueiredo et. al., 2005). 1 Concern pode ser definido como característica, preocupação.

24 2. Programação Orientada a Aspectos 10 - O termo crosscuting concern 2 se refere a fatores de qualidade ou funcionalidade do software que não podem ser eficientemente modularizadas usando técnicas existentes de desenvolvimento de software (Chitchyan et. al., 2005a). - Concern é uma propriedade, sendo esta propriedade um requisito funcional ou não funcional. Um crosscutting concern é uma propriedade transversal, ou seja, um requisito (ou propriedade) que está transversal em relação a outros requisitos e é um forte candidato a ser um aspecto (Paiva, 2007). Neste trabalho será utilizado o conceito de que um aspecto pode ser um requisito funcional ou não-funcional. E que se este requisito for utilizado em mais de um módulo do sistema, encontrando assim várias implementações da mesma propriedade espalhada pelo código fonte, ou, se o requisito não pertencer à natureza intrínseca da classe ele é considerado um candidato a aspecto Separação de Interesses Segundo WINCK et. al (2006), a separação de interesses não é apenas a preocupação em dividir os requisitos de uma aplicação, mas de agrupá-los em conjunto de requisitos afins, procurando explicitar a existência de módulos implementáveis. Separação de Interesses significa dividir o problema em unidades atômicas. Desta maneira, a implementação é facilitada e a manutenção do sistema também, já que cada unidade é responsável pela execução e solução de um interesse que, em conjunto com as demais unidades formam a solução do problema. A Orientação a Objetos representa de forma bastante natural interesses que representam a lógica de negócio. Por exemplo, em um sistema de controle de uma biblioteca, a OO faz um excelente trabalho ao representar livro, empréstimo, associado, funcionário. Porém, a necessidade de implementar um interesse adicional, como, por exemplo, a gravação de log 3, leva à ocorrência de código espalhado Interesse Funcional X Interesse Sistêmico 2 Crosscutting concern pode ser definido como característica ou preocupação transversal. 3 Processo de registro de eventos relevantes

25 2. Programação Orientada a Aspectos 11 Interesses são características relevantes de uma aplicação agrupadas pelas similaridades. Os interesses são classificados em dois grupos: 1) Interesse Funcional: Funcionalidade relacionada ao domínio da aplicação, ou seja, a lógica de negócio; 2) Interesse Não-Funcional: Também conhecido como Interesse Sistêmico consiste em propriedades que dão suporte à aplicação, como por exemplo, tratamento de exceções, mas que não faz parte da regra de negócio. Os interesses sistêmicos também podem ser denominados ortogonais ou transversais. Segundo PIVETA (2001), quando duas propriedades devem ser compostas de maneiras diferentes e ainda se coordenarem, diz-se que elas são transversais entre si. Na tentativa de implantar interesses transversais na aplicação surgem os seguintes problemas: - Código Espalhado: Implementação de um interesse propagado em diversas classes responsáveis em cumprir outros interesses; - Código Emaranhado: Utilização de uma única classe ou método para implementar múltiplos interesses. Ressaltam-se outros problemas como, replicação de código, dificuldade de manutenção, redução da capacidade de reutilização do código e aumento da dificuldade de compreensão, ocasionados pelo deficiente tratamento que a OO disponibiliza aos interesses transversais. Alguns exemplos de interesses sistêmicos são: Sincronização de Objetos Concorrentes; Distribuição; Tratamento de Exceção; Coordenação de Múltiplos Objetos; Persistência; Gravação de Log.

26 2. Programação Orientada a Aspectos Conceito da Programação Orientado a Aspectos Criada no final da década de 90, em Palo Alto, nos laboratórios da Xerox, por Gregor Kiczales, John Lamping, Anurang Mendhekar, Chris Maeda, Cristina Videira Lopes, Jean- Marc Loingteir e John Irwin a programação orientada a aspectos pretende permitir a linguagem de programação composta por linguagem central e várias linguagens especificas de domínio expressar de forma ideal as características sistêmicas do programa. O código orientado a aspectos não gera um produto final, um arquivo executável, por exemplo, mas um novo código. Nessa primeira compilação são acrescidos elementos ao código, para dar suporte às novas abstrações. O código resultante precisa ser novamente compilado para que assim seja gerado o produto final. A POA não pretende substituir a Programação Orientada a Objetos ou qualquer outro método de desenvolvimento, mas estende as técnicas propondo a decomposição dos requisitos não apenas pela visão da regra de negócio, mas também pelas características sistêmicas. O Paradigma Orientado a Aspectos surgiu na tentativa de resolver problemas como o código espalhado e código emaranhado, tendo como objetivo desenvolver mecanismos para uma eficiente separação de requisitos. Depois de uma década de pesquisas realizadas em torno da POA, hoje o foco dos estudos destina-se na criação de metodologias de projeto e análise que atendam às suas características. Atualmente a POA conta com ferramentas eficientes, como o plug-in AJDT para implementação de aspectos na IDE Eclipse. A OA pretende estar presente em todo o ciclo de desenvolvimento de software, desde a especificação de requisitos, análise e projeto até a codificação do programa Propósito da Programação Orientada a Aspectos Com a utilização da POA não apenas os interesses referentes à regra de negócio são decompostos, mas também os interesses sistêmicos. Na Figura 2.1 observa-se que os interesses são programados em módulos separados.

27 2. Programação Orientada a Aspectos 13 LIVRO GRAVAÇÃO DE LOG CONTROLE DE EXCEÇÃO COMBINAÇÃO PRODUTO FINAL Figura 2.1 Combinação entre interesses funcionais e transversais. Assim, se for considerado como exemplo o sistema de biblioteca, os aspectos Gravação de Log e Controle de Exceção são codificados separadamente da classe Livro, isto não aconteceria se não fosse utilizado o paradigma orientado a aspectos. Se apenas a OO estivesse presente o código da classe Livro e os aspectos de Gravação de Log e Controle de Exceção seriam implementados no mesmo módulo, quebrando alguns conceitos do paradigma orientado a objetos, já que esses aspectos podem ser usados em mais de uma classe e não fazem parte da regra de negócio da classe Livro. Após a programação das classes e aspectos ocorre a combinação entre estas estruturas. A separação avançada de interesses leva à simplificação do problema, pois o programador pode focar cada interesse de forma independente Funcionamento da Programação Orientada a Aspectos Na programação orientada a aspectos definem-se pontos de junção (joinpoints) que coordenam a execução dos aspectos em chamadas feitas na linguagem de componentes. As construções do programa que contém joinpoints são denominadas pointcuts (conjunto de junção) e tem o objetivo de reunir informações sobre esses pontos. A codificação dos requisitos transversais que podem ser executados em joinpoints é denominada advices (regras de junção). Por fim os combinadores de aspectos identificam nos componentes os pontos de junção onde os aspectos se aplicam, produzindo o código final da aplicação. O compilador de aspectos, denominado weaver, realiza o processo de costura de código (weaving), entrelaçando

28 2. Programação Orientada a Aspectos 14 os códigos das regras de junção com os códigos dos pontos de junção especificados nos aspectos. O processo de costura consiste na instrumentação do código das classes para executar o código definido nos aspectos. Conclui-se, então, que aspectos são: Unidades de implementação de requisitos transversais e que contêm definições de conjuntos e regras de junção Benefícios e Problemas do Paradigma Orientado por Aspectos A construção de um sistema utilizando OA pode trazer os seguintes benefícios: Definição clara das responsabilidades dos módulos, visto que, em cada módulo é implementado somente o requisito principal; Baixo acoplamento e alta coesão modular; Melhoria no processo de manutenção do software; Aumento no grau de reuso do código. Os seguintes problemas encontrados na Programação Orientada a Aspectos são: Dificuldade na definição dos requisitos transversais do sistema Onde e Porque aplicar a orientação a aspectos A OA é utilizada na implementação de interesses transversais, agrupando-os em unidades modulares chamadas aspectos. Com isto, a manutenção se torna mais simples e o reúso de código é facilitado reduzindo assim a interdependência de interesses. A POA pode ser utilizada, por exemplo, na implementação das seguintes funcionalidades: Sincronização de Objetos; Tratamento de Exceções; Coordenação de Múltiplos Objetos; Persistência;

29 2. Programação Orientada a Aspectos 15 Gravação de Log Composição de um sistema orientado a aspectos Um sistema que utiliza as técnicas de Programação Orientada a Aspectos deve ser composto por (Kiczales, 2001): Linguagem de Componentes: permite ao desenvolvedor codificar, implementar as funcionalidades da regra de negócio do sistema; Linguagem de Aspectos: implementam o comportamento dos aspectos e definem em que situações eles ocorrem; Programas de componentes: é o arquivo-fonte escrito em uma determinada linguagem de programação, por exemplo, Java, C, C++, etc. Onde o programador codifica as regras de negócio; Programas de Aspectos: é o arquivo-fonte codificado em uma linguagem de aspectos, como o AspectJ. Combinador de Aspectos (aspect weaver): combina os programas escritos em linguagem de componentes com os programas escritos em linguagem de aspectos. No estudo de caso deste trabalho foram adotadas a linguagem de componentes Java e a linguagem de aspectos AspectJ Combinação Aspectual Segundo WINCK et. al (2006), a combinação aspectual é o processo responsável por combinar elementos escritos em linguagem de componentes com os elementos escritos em linguagem de aspectos. É um processo anterior à compilação, gerando um código intermediário na linguagem de componentes capaz de produzir a operação desejada, ou de permitir sua realização durante a execução do programa. A combinação aspectual divide-se em dois grupos: 1) Estática: não há necessidade de que aspectos existam em tempo de compilação e execução, assim o sistema tem um ganho de performance.

30 2. Programação Orientada a Aspectos 16 2) Dinâmica: os aspectos existem tanto em tempo compilação quanto em tempo de execução, deste modo, o combinador tem a possibilidade de adicionar, adaptar ou remover aspectos durante a execução do programa. O combinador utiliza os componentes e os aspectos para criar um novo código, como se observa na Figura 2.2. COMPONENTES + ASPECTOS COMBINADOR NOVO CÓDIGO Figura 2.2 Combinação entre componentes e aspectos Fundamentos da Orientação a Aspectos Quatro pilares da Programação Orientada a Aspectos são descritos a seguir: 1- Pontos de Junção (join points): São locais bem definidos da execução de um programa, por exemplo, o local da chamada de um método. Nos pontos de junção são criadas as regras que darão origem aos pontos de atuação; 2- Pontos de Atuação (pointcuts): são regras para especificar eventos que serão atribuídos aos pontos de junção. O objetivo do ponto de atuação é criar regras genéricas para definir os eventos que serão considerados pontos de junção sem precisar defini-los separadamente. Após a identificação dos pontos de junção para um determinado interesse é necessário agrupá-los em um ponto de atuação. 3- Adendo (advice): são partes da implementação de um aspecto executado nos pontos de junção. Os adendos são compostos por: a) Ponto de atuação, sendo as regras para captura dos pontos de junção e,

31 2. Programação Orientada a Aspectos 17 b) Código para ser executado quando ocorrer o ponto de junção definido pelo ponto de atuação. 4- Aspecto: é um mecanismo disponibilizado pela POA para agrupar fragmentos de código referentes aos interesses transversais em uma unidade do sistema. Os aspectos não existem isolados no sistema, os objetos continuam existindo, e neles são implementadas as regras de negócio. O par aspecto-objeto é a unidade principal em um programa orientado a aspectos. 2.3 A Aspect J A AspectJ é uma extensão da linguagem de programação JAVA. Todo programa AspectJ pode ser executado em uma máquina virtual JAVA, independente de plataforma. Neste trabalho utiliza-se o AspectJ como linguagem de aspectos e a linguagem JAVA como linguagem de componentes. A seguir são descritos os quatro fundamentos da orientação a aspectos na linguagem de aspectos AspectJ Pontos de Junção Com a adoção da POA no desenvolvimento de software, cria-se uma nova atividade no processo de desenvolvimento a identificação de requisitos transversais. Como conceito básico da POA, para a identificação dos requisitos transversais, deve-se observar se o código de um interesse atravessa o código de interesses funcionais. Caso haja esse corte esses interesses devem ser considerados e implementados como aspecto. Após a identificação dos interesses transversais deve-se identificar em que momento, ou situação, o aspecto deve ser combinado, estabelecendo o ponto de junção. Os pontos de junção são locais bem definidos na execução de um programa. Os seguintes casos podem ser considerados pontos de junção: Execução de um método; Acesso a um atributo;

32 2. Programação Orientada a Aspectos 18 Modificação do valor de um atributo. A seguir são analisados casos de ponto de junção Chamada Para cada tipo de ponto de junção o AspectJ define uma palavra reservada para ser usada no ponto de atuação. Na tabela 2.1 são descritas estas palavras reservadas: Tabela 2.1 Palavras Reservadas no AspectJ para chamada do ponto de junção. Ponto de Junção Palavra Reservada Chamada de Método Call Chamada de Construtor Call Execução de Chamada de Método Execution Acesso a Atributos Get Definição de Valor para Atributo Set Tratamento de Exceção Handler Inicialização de Classes Static inicialization Inicialização de Objetos Inicialization Ponto de Atuação Agrupar pontos de junção criando regras para sua chamada é essencial na programação a aspectos, uma vez que se os pontos são combinados fica mais visível à existência de interesses transversais. A este agrupamento dos pontos de junção dá-se o nome de ponto de atuação. Segundo Winck et. al. (2006) pontos de atuação também chamados pointcuts, são usados para definir um ponto de junção, como uma espécie de regra criada pelo programador para especificar eventos que serão atribuídos a esses pontos. Outra função do ponto de atuação é apresentar informações sobre o contexto de execução de cada ponto de junção. Após a identificação dos pontos de junção para um determinado interesse é necessário agrupá-los em um ponto de atuação.

33 2. Programação Orientada a Aspectos Designadores Os designadores provêem uma definição ao redor do ponto de atuação. Na tabela 2.3 são apresentados os designadores dos pontos de atuação no AspectJ. Tabela 2.3 Designadores do ponto de atuação. (Winck et al, 2006). Designador Descrição Execution Execução de um método ou de um construtor. Call Chamada de um método ou de um construtor. Inicialization Inicialização de um objeto, representada pela execução do primeiro construtor para uma classe. Handler Manipulação de exceções. Get Referência para um atributo de uma classe. Set Definição de um atributo de uma classe. This Retorna o objeto associado com o ponto de junção em particular ou limita o escopo de um ponto de junção utilizando um tipo de classe. Target Retorna o objeto alvo de um ponto de junção ou limita o escopo de mesmo. Args Expõe os argumentos para um ponto de junção ou limita o escopo de um ponto de atuação. Cflow Retorna os pontos de junção na execução do fluxo de outro ponto de junção. Cflowbelow Retorna os pontos de junção na execução do fluxo de outro ponto de junção, exceto o ponto corrente. Staticinicialization Corresponde à inicialização dos elementos estáticos de um objeto. Withincode Corresponde aos pontos de junção contidos em um método ou construtor. Within Corresponde aos pontos de junção contidos em um tipo específico. If Permite que uma condição dinâmica faça parte de um ponto de atuação. Adviceexecution Corresponde ao adendo (advice) do ponto de junção. Preinicialization Corresponde à pré-inicialização de um ponto de junção.

34 2. Programação Orientada a Aspectos 20 A AspectJ permite ainda que os designadores possam ser combinados com os seguintes operadores lógicos: - && (e): quando todos argumentos para os operadores forem verdadeiros; - (ou): quando um ou mais argumentos para os operadores forem verdadeiros; -! (não): identifica todos os pontos de junção que não forem identificados pelo ponto de atuação Adendos do AspectJ O Adendo é o código que deverá ser executado quando o ponto de junção definido por um ponto de atuação for capturado. O adendo contém ainda a definição do respectivo ponto de atuação e pode ser classificado em três tipos: before, after e around Estrutura O adendo é formado por: especificação do ponto de atuação, declaração do adendo e corpo do adendo. 1. //especificação do ponto de atuação pointcut //declaração do adendo tipo_do_adendo nome_do_adendo(): { 3. //corpo do adendo código a ser executado na chamada do ponto de junção definido pelo ponto de atuação. Figura 2.4 Estrutura de um Adendo No item 1, o adendo executará qualquer ponto de junção que corresponder ao ponto de atuação especificado. No item 2, é declarado o adendo e estabelecido se o adendo será

35 2. Programação Orientada a Aspectos 21 executado antes(before), depois(after) ou durante (around) o ponto de junção. O item 3, contém o código a ser executado como, por exemplo, um método. O corpo do adendo atua exatamente como o corpo de um método. Pode possuir parâmetros, bem como efetuar chamadas para outros métodos, porém, o adendo não possui identificador próprio O Aspecto O AspectJ utiliza a palavra-chave aspect para designar a estrutura de código que representa a implementação de um interesse transversal. O ponto de junção, ponto de atuação e o adendo são encapsulados dentro de um aspecto. O aspecto é a unidade principal de um programa AspectJ, assim como a classe no JAVA, e pode conter definição de atributos, métodos, ou seja, tudo para satisfazer a implementação de um interesse transversal Sintaxe A sintaxe do aspecto é: aspect ::= [privilegio][modificadores de acesso][static]aspect<identificador da classe> [PerClause] [modificadores de acesso] ::= public private [abstract] <identificador> ::= carta {carta digito <identificador da classe> ::= [domínio][extends] [PerClause] ::= [issingleton perthis pertarget perflox perflowbelow] { //Corpo //ponto de atuação //adendos //métodos //atributos

36 2. Programação Orientada a Aspectos 22 O aspecto pode ser declarado como abstrato, privado ou público. Caso não seja definido o tipo de acesso, o padrão utilizado será o package Construção Um aspecto pode ser implementado: Em um arquivo separado, como uma classe JAVA; Combinado com um arquivo-fonte; Encaixado em um arquivo-fonte de uma classe. Para decidir como o aspecto deve ser construído deve-se observar se o aspecto afeta apenas uma classe, ou se o efeito do aspecto é em várias classes. No primeiro caso, ele pode ser mantido juntamente com a classe e, no segundo caso, deve ser construído em um arquivo separado. Para exemplificar a construção de um aspecto utilizou-se a classe InformaTitulo apresentada a seguir: package com.aopbook; public class InformaTitulo{ private String titulo; private String gettitulo(){ return nome; public static void main (String args[]){ InformaTitulo titulo = new InformaTitulo(); System.out.println(titulo.getTitulo()); 1) Aspecto em um arquivo separado Usado para atender várias classes. Ex: package com.aopbook;

37 2. Programação Orientada a Aspectos 23 public aspect AspectoInformaTitulo{ pointcut recuperatitulo(): call(public String InformaTitulo.getTitulo()); before():recuperatitulo(){ system.out.println( POA-Programação Orientada a Aspectos ); Observação: Neste exemplo criamos a classe e o aspecto em arquivos separados, porém eles devem ser compilados no mesmo diretório. 2) Aspecto e classe juntos Opção de implementação de aspecto quando o interesse afeta apenas uma classe ou classes combinadas em um único arquivo. Ex: package com.aopbook; public class CombinarInformaTitulo{ private String titulo; private String gettitulo(){ return nome; public static void main (String args[]){ CombinarInformaTitulo titulo = new CombinarInformaTitulo(); System.out.println(titulo.getTitulo()); public aspect AspectoCombinarInformaTitulo{ pointcut recuperatitulo(): call(public String CombinarInformaTitulo.getTitulo()); before():recuperatitulo(){ system.out.println( Sistemas WEB );

38 2. Programação Orientada a Aspectos 24 Observação: Este tipo de implementação apresenta um problema. O compilador JAVA não permite que existam duas classes públicas em um mesmo arquivo, no exemplo isso acontece por que temos uma classe pública e um aspecto público, para que seja possível compilar a classe e o aspecto é necessário utilizar a opção preprocess. O compilador JAVA irá então manter a classe e o aspecto em arquivos separados mesmo que estejam em apenas um arquivo-fonte. 3) Aspecto combinado como membro de uma classe Neste caso, os aspectos devem ser definidos como estáticos (Static). Esse é um prérequisito para qualquer aspecto que for criado como membro de uma classe. O tipo de acesso deve ser, preferencialmente, definido como privado. Assim, o aspecto estará sendo encapsulado para que nenhuma outra classe possa acessá-lo. Ex: package com.aopbook; package class InformaTituloSimples{ private String titulo; private String gettitulo(){ return nome; public static void main (String args[]){ InformaTituloSimples titulo = new InformaTituloSimples(); System.out.println(titulo.getTitulo()); private static aspect AspectoInformaTituloSimples{ pointcut recuperatitulo(): call(public String gettitulo()); before():recuperatitulo(){ system.out.println( Sistemas WEB );

39 2. Programação Orientada a Aspectos Resumo do Capítulo Neste capítulo, foram apresentados os principais conceitos do desenvolvimento orientado a aspectos e descritos os elementos da linguagem de programação AspectJ. Estudando os principais conceitos da OA, como aspecto, separação avançada de interesses, composição aspectual, pode se verificar como e onde aplicá-la, por exemplo, no controle transacional de banco de dados, na gravação de log, no controle de login. Verificouse também os benefícios que a OA pode oferecer: a definição clara das responsabilidades dos módulos, visto que, em cada módulo é implementado somente o requisito principal, o baixo acoplamento e alta coesão modular, melhoria no processo de manutenção do software e o aumento no grau de reuso do código, e, também, alguns problemas tais como, quebra do encapsulamento dos módulos, dificuldade na integração entre os módulos e dificuldade na definição dos requisitos transversais do sistema. O estudo da linguagem AspectJ ajuda a entender o funcionamento dos mecanismos da OA e a composição dos aspectos com as classes-problema. Este estudo também é válido por que será utilizado na fase de implementação da experimentação proposta neste trabalho.

2 Desenvolvimento de Software Orientado a Aspectos

2 Desenvolvimento de Software Orientado a Aspectos 2 Desenvolvimento de Software Orientado a Aspectos Separação de concerns é um princípio bem estabelecido da engenharia de software que diz que, para se dominar a complexidade do desenvolvimento de software,

Leia mais

Aspect-Oriented Programming AOP. Comentários Sérgio Crespo

Aspect-Oriented Programming AOP. Comentários Sérgio Crespo Aspect-Oriented Programming AOP Comentários Sérgio Crespo Separation of Concerns O princípio de Separation of Concerns já é utilizado por engenheiros de software para o gerenciar a complexidade de sistemas

Leia mais

2 Diagrama de Caso de Uso

2 Diagrama de Caso de Uso Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Caso de Uso (Use Case) Autoria:Aristófanes Corrêa

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem

Leia mais

Programação Orientada a Aspectos Aplicada. Charles Wellington de Oliveira Fortes chalkmaster@gmail.com

Programação Orientada a Aspectos Aplicada. Charles Wellington de Oliveira Fortes chalkmaster@gmail.com Programação Orientada a Aspectos Aplicada. Charles Wellington de Oliveira Fortes chalkmaster@gmail.com Resumo: Demonstrar de forma clara e prática como a Programação Orientada a Aspectos pode ajudar a

Leia mais

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio 32 3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio Este capítulo apresenta o framework orientado a aspectos para monitoramento e análise de processos de negócio

Leia mais

AspectJ em 20 minutos

AspectJ em 20 minutos AspectJ em 20 minutos Diogo Vinícius Winck (diogo.winck@gmail.com) Vicente Goetten (goetten@gmail.com) 1. Introdução A Orientação a Objetos está consolidada. Entretanto, nem todas as promessas que este

Leia mais

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW Ciclo de Vida Aula 2 Revisão 1 Processo de Desenvolvimento de Software 1 O Processo de desenvolvimento de software é um conjunto de atividades, parcialmente ordenadas, com a finalidade de obter um produto

Leia mais

UML Aspectos de projetos em Diagramas de classes

UML Aspectos de projetos em Diagramas de classes UML Aspectos de projetos em Diagramas de classes Após ser definido o contexto da aplicação a ser gerada. Devemos pensar em detalhar o Diagrama de Classes com informações visando uma implementação Orientada

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação SOFT DISCIPLINA: Engenharia de Software AULA NÚMERO: 10 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir os conceitos de coesão e acoplamento. DESENVOLVIMENTO Projetar

Leia mais

Capítulo 11. Conceitos de Orientação a Objetos. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Capítulo 11. Conceitos de Orientação a Objetos. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Capítulo 11 Conceitos de Orientação a Objetos Objetivos do Capítulo Introduzir os conceitos fundamentais da Programação Orientada a Objetos. Apresentar o significado dos objetos e das classes no contexto

Leia mais

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos Programação Estruturada e Orientada a Objetos Fundamentos Orientação a Objetos 2013 O que veremos hoje? Introdução aos fundamentos de Orientação a Objetos Transparências baseadas no material do Prof. Jailton

Leia mais

Engenharia de Requisitos Estudo de Caso

Engenharia de Requisitos Estudo de Caso Engenharia de Requisitos Estudo de Caso Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 1 Engenharia de Requisitos Exemplo 1 Reserva de Hotel 1. INTRODUÇÃO Este

Leia mais

Separação de Interesses Programação Estruturada e Programação Orientada a Objetos Entrelaçamento de Código Espalhamento de Código

Separação de Interesses Programação Estruturada e Programação Orientada a Objetos Entrelaçamento de Código Espalhamento de Código Análise e Projeto Orientados a Aspectos Alcides Pamplona alcides.pamplona@gmail.com Tópicos Separação de Interesses Programação Estruturada e Entrelaçamento de Código Espalhamento de Código 1 Separação

Leia mais

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA RESUMO Ricardo Della Libera Marzochi A introdução ao Service Component Architecture (SCA) diz respeito ao estudo dos principais fundamentos

Leia mais

Sumário. Uma visão mais clara da UML

Sumário. Uma visão mais clara da UML Instituto Federal de Santa Catarina Câmpus Chapecó Ensino Médio Integrado em Informática Módulo V Unidade Curricular: Engenharia de Software Professora: Lara P. Z. B. Oberderfer Uma visão mais clara da

Leia mais

Conceitos de Banco de Dados

Conceitos de Banco de Dados Conceitos de Banco de Dados Autor: Luiz Antonio Junior 1 INTRODUÇÃO Objetivos Introduzir conceitos básicos de Modelo de dados Introduzir conceitos básicos de Banco de dados Capacitar o aluno a construir

Leia mais

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 SUMÁRIO 1 Conceitos Básicos... 3 1.1 O que é Software?... 3 1.2 Situações Críticas no desenvolvimento

Leia mais

Modelagemde Software Orientadaa Objetos com UML

Modelagemde Software Orientadaa Objetos com UML Modelagemde Software Orientadaa Objetos com UML André Maués Brabo Pereira Departamento de Engenharia Civil Universidade Federal Fluminense Colaborando para a disciplina CIV 2802 Sistemas Gráficos para

Leia mais

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS O termo metodologia não possui uma definição amplamente aceita, sendo entendido na maioria das vezes como um conjunto de passos e procedimentos que

Leia mais

Histórico da Orientação a Objetos Ciclo de vida de Desenvolvimento de SW

Histórico da Orientação a Objetos Ciclo de vida de Desenvolvimento de SW Histórico da Orientação a Objetos Ciclo de vida de Desenvolvimento de SW Baseado nos materiais dos profs: Prof.: Edilberto M. Silva http://www.edilms.eti.br Edna Canedo Marcio de Carvalho Victorino Brasília-DF,

Leia mais

2 Geração Dinâmica de Conteúdo e Templates de Composição

2 Geração Dinâmica de Conteúdo e Templates de Composição 2 Geração Dinâmica de Conteúdo e Templates de Composição Alguns dos aspectos mais importantes na arquitetura proposta nesta dissertação são: a geração dinâmica de conteúdo e a utilização de templates de

Leia mais

2 Engenharia de Software

2 Engenharia de Software 20 2 Engenharia de Software 2.1 Design de Sistemas Orientados a Objetos Os Sistemas Orientados a Objetos não são mais novidade hoje em dia já estando há muitos anos no mercado. A orientação a objetos permite

Leia mais

Prof. Raul Sidnei Wazlawick UFSC-CTC-INE. Fonte: Análise e Projeto de Sistemas de Informação Orientados a Objetos, 2ª Edição, Elsevier, 2010.

Prof. Raul Sidnei Wazlawick UFSC-CTC-INE. Fonte: Análise e Projeto de Sistemas de Informação Orientados a Objetos, 2ª Edição, Elsevier, 2010. Visão Geral do Sistema Prof. Raul Sidnei Wazlawick UFSC-CTC-INE 2010 Fonte: Análise e Projeto de Sistemas de Informação Orientados a Objetos, 2ª Edição, Elsevier, 2010. A fase de concepção do UP consiste

Leia mais

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 1. Conceitos de Orientação a Objetos Introdução O paradigma da POO Classes

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel Ambiente de Desenvolvimento Orientação a Objetos É uma técnica de desenvolvimento de softwares que consiste em representar os elementos do mundo

Leia mais

Engenharia de Software III

Engenharia de Software III Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf (flavio.ceci@unisul.br) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,

Leia mais

Desenvolvimento de um CMS 1 para a criação e publicação de web sites acessíveis por deficientes visuais.

Desenvolvimento de um CMS 1 para a criação e publicação de web sites acessíveis por deficientes visuais. Desenvolvimento de um CMS 1 para a criação e publicação de web sites acessíveis por deficientes visuais. Tales Henrique José MOREIRA 1 ; Gabriel da SILVA 2 ; 1 Estudante de Tecnologia em Sistemas para

Leia mais

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES Alexandre Egleilton Araújo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil araujo.ale01@gmail.com, jaime@unipar.br Resumo.

Leia mais

GereComSaber. Desenvolvimento de Sistemas de Software. Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática

GereComSaber. Desenvolvimento de Sistemas de Software. Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática Desenvolvimento de Sistemas de Software Ano Lectivo de 2009/10 GereComSaber Ana Duarte, André Guedes, Eduardo

Leia mais

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de

Leia mais

Feature-Driven Development

Feature-Driven Development FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por

Leia mais

UML - Unified Modeling Language

UML - Unified Modeling Language UML - Unified Modeling Language Casos de Uso Marcio E. F. Maia Disciplina: Engenharia de Software Professora: Rossana M. C. Andrade Curso: Ciências da Computação Universidade Federal do Ceará 24 de abril

Leia mais

Introdução à Computação

Introdução à Computação Aspectos Importantes - Desenvolvimento de Software Motivação A economia de todos países dependem do uso de software. Cada vez mais, o controle dos processos tem sido feito por software. Atualmente, os

Leia mais

Apesar de existirem diversas implementações de MVC, em linhas gerais, o fluxo funciona geralmente da seguinte forma:

Apesar de existirem diversas implementações de MVC, em linhas gerais, o fluxo funciona geralmente da seguinte forma: 1 Introdução A utilização de frameworks como base para a construção de aplicativos tem sido adotada pelos desenvolvedores com três objetivos básicos. Primeiramente para adotar um padrão de projeto que

Leia mais

W Projeto. Gerenciamento. Construindo a WBS e gerando o Cronograma. Autor: Antonio Augusto Camargos, PMP 1/12

W Projeto. Gerenciamento. Construindo a WBS e gerando o Cronograma. Autor: Antonio Augusto Camargos, PMP 1/12 W Projeto BS Construindo a WBS e gerando o Cronograma. Gerenciamento Autor: Antonio Augusto Camargos, PMP 1/12 Índice Remissivo Resumo...3 1. Introdução...3 2. Conceituando a WBS (Work Breakdown Structure/Estrutura

Leia mais

Modelo Cascata ou Clássico

Modelo Cascata ou Clássico Modelo Cascata ou Clássico INTRODUÇÃO O modelo clássico ou cascata, que também é conhecido por abordagem top-down, foi proposto por Royce em 1970. Até meados da década de 1980 foi o único modelo com aceitação

Leia mais

Introdução a Java. Hélder Nunes

Introdução a Java. Hélder Nunes Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais

Leia mais

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a

Leia mais

MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento. Toledo PR. Versão 2.0 - Atualização 26/01/2009 Depto de TI - FASUL Página 1

MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento. Toledo PR. Versão 2.0 - Atualização 26/01/2009 Depto de TI - FASUL Página 1 MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento Toledo PR Página 1 INDICE 1. O QUE É O SORE...3 2. COMO ACESSAR O SORE... 4 2.1. Obtendo um Usuário e Senha... 4 2.2. Acessando o SORE pelo

Leia mais

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena Tópicos Motivação e Objetivos LP e SOA Processo ADESE

Leia mais

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

Introdução ao Paradigma Orientado a Objetos. Principais conceitos Introdução ao Paradigma Orientado a Objetos Principais conceitos Paradigmas de Programação PROGRAMAÇÃO ESTRUTURADA X PROGRAMAÇÃO ORIENTADA A OBJETOS Paradigma Programação estruturada Na programação estrutura

Leia mais

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto Conceitos de Linguagens de Roteiro: Apresentação do plano de ensino; Apresentação do plano de

Leia mais

3.1 Definições Uma classe é a descrição de um tipo de objeto.

3.1 Definições Uma classe é a descrição de um tipo de objeto. Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Classes Autoria:Aristófanes Corrêa Silva Adaptação:

Leia mais

Programação Orientada a Aspectos

Programação Orientada a Aspectos Programação Orientada a Aspectos Uma Breve Introdução Universidade Estadual do Oeste do Paraná Centro de Ciências Exatas e Tecnológicas Colegiado de Informática Prof. Luiz Antonio Roteiro Introdução Evolução

Leia mais

Especificação do 3º Trabalho

Especificação do 3º Trabalho Especificação do 3º Trabalho I. Introdução O objetivo deste trabalho é abordar a prática da programação orientada a objetos usando a linguagem Java envolvendo os conceitos de classe, objeto, associação,

Leia mais

Paradigmas de Linguagens de Programação

Paradigmas de Linguagens de Programação Paradigmas de Linguagens de Programação Faculdade Nova Roma Cursos de Ciências da Computação (6 Período) Prof Adriano Avelar - Site: wwwadrianoavelarcom Email: edsonavelar@yahoocombr PROGRAMAÇÃO ORIENTADA

Leia mais

ISO/IEC 12207: Gerência de Configuração

ISO/IEC 12207: Gerência de Configuração ISO/IEC 12207: Gerência de Configuração Durante o processo de desenvolvimento de um software, é produzida uma grande quantidade de itens de informação que podem ser alterados durante o processo Para que

Leia mais

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Um Sistema Gerenciador de Banco de Dados (SGBD) é constituído por um conjunto de dados associados a um conjunto de programas para acesso a esses

Leia mais

Tópicos de Ambiente Web. Modulo 2 Processo de desenvolvimento de um site Professora: Sheila Cáceres

Tópicos de Ambiente Web. Modulo 2 Processo de desenvolvimento de um site Professora: Sheila Cáceres Tópicos de Ambiente Web Modulo 2 Processo de desenvolvimento de um site Professora: Sheila Cáceres Roteiro Motivação Desenvolvimento de um site Etapas no desenvolvimento de software (software:site) Analise

Leia mais

Desenvolvimento estruturado versus orientado a objetos.

Desenvolvimento estruturado versus orientado a objetos. Desenvolvimento estruturado versus orientado a objetos. Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior Objetivos Identificar diferenças entre: Desenvolvimento

Leia mais

Autoria:Aristófanes Corrêa Silva Adaptação: Alexandre César M de Oliveira

Autoria:Aristófanes Corrêa Silva Adaptação: Alexandre César M de Oliveira Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Introdução Autoria:Aristófanes Corrêa Silva Adaptação: Alexandre

Leia mais

UML 2. Guia Prático. Gilleanes T.A. Guedes. Novatec. Obra revisada e ampliada a partir do título Guia de Consulta Rápida UML 2

UML 2. Guia Prático. Gilleanes T.A. Guedes. Novatec. Obra revisada e ampliada a partir do título Guia de Consulta Rápida UML 2 UML 2 Guia Prático Gilleanes T.A. Guedes Obra revisada e ampliada a partir do título Guia de Consulta Rápida UML 2 Novatec capítulo 1 Introdução à UML A UML (Unified Modeling Language ou Linguagem de Modelagem

Leia mais

Projeto de Sistemas I

Projeto de Sistemas I Instituto Federal de Educação, Ciência e Tecnologia de São Paulo Projeto de Sistemas I Professora: Kelly de Paula Cunha E-mail:kellypcsoares@ifsp.edu.br Requisitos: base para todo projeto, definindo o

Leia mais

TÉCNICAS DE PROGRAMAÇÃO

TÉCNICAS DE PROGRAMAÇÃO TÉCNICAS DE PROGRAMAÇÃO (Adaptado do texto do prof. Adair Santa Catarina) ALGORITMOS COM QUALIDADE MÁXIMAS DE PROGRAMAÇÃO 1) Algoritmos devem ser feitos para serem lidos por seres humanos: Tenha em mente

Leia mais

Qualidade de Software

Qualidade de Software Qualidade de Software O software é algo abstrato, pois são as instruções que quando executadas atingem o propósito desejado no sistema computacional. (Algoritmo). As principais características são: Complexidade:

Leia mais

Wilson Moraes Góes. Novatec

Wilson Moraes Góes. Novatec Wilson Moraes Góes Novatec Copyright 2014 Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo,

Leia mais

3 SCS: Sistema de Componentes de Software

3 SCS: Sistema de Componentes de Software 3 SCS: Sistema de Componentes de Software O mecanismo para acompanhamento das chamadas remotas se baseia em informações coletadas durante a execução da aplicação. Para a coleta dessas informações é necessário

Leia mais

O Rational Unified Process (RUP) é um processo de desenvolvimento de software inspirado no

O Rational Unified Process (RUP) é um processo de desenvolvimento de software inspirado no 1.1 RATIONAL UNIFIED PROCESS (RUP) O Rational Unified Process (RUP) é um processo de desenvolvimento de software inspirado no processo que atende pelo nome de Processo Unificado (ou UP do inglês Unified

Leia mais

O modelo unificado de processo. O Rational Unified Process, RUP.

O modelo unificado de processo. O Rational Unified Process, RUP. Cursos: Sistemas de Informação Disciplina: Administração ADM Prof. Jarbas Avaliação: Prova B1, 5º/6º semestres Data: 27/09/2010 Nome: Gabarito RA: Assinatura: Turma: 1) Segundo as afirmações a seguir,

Leia mais

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador> FACULDADE DE ENGENHARIA DE COMPUTAÇÃO PROJETO FINAL I e II PLANO DE TRABALHO O Trabalho de Conclusão de Curso (TCC) a ser desenvolvido

Leia mais

Guia de utilização da notação BPMN

Guia de utilização da notação BPMN 1 Guia de utilização da notação BPMN Agosto 2011 2 Sumário de Informações do Documento Documento: Guia_de_utilização_da_notação_BPMN.odt Número de páginas: 31 Versão Data Mudanças Autor 1.0 15/09/11 Criação

Leia mais

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite andreza.lba@gmail.com (81 )9801-6619

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite andreza.lba@gmail.com (81 )9801-6619 Tópicos em Engenharia de Software (Optativa III) AULA 2 Prof. Andrêza Leite andreza.lba@gmail.com (81 )9801-6619 Engenharia de Software Objetivo da aula Depois desta aula você terá uma revisão sobre o

Leia mais

Programação Orientada a Objeto

Programação Orientada a Objeto Programação Orientada a Objeto Classes, Atributos, Métodos e Objetos Programação de Computadores II Professor: Edwar Saliba Júnior 1) Java é uma linguagem orientada a objetos. Para que possamos fazer uso

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

7 Trabalhos Relacionados A idéia é tentar dar todas as informações que ajudem os outros a julgar o valor da sua contribuição; não apenas as informações que levem o julgamento a uma direção em particular.

Leia mais

CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS

CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS MINISTÉRIO DO DESENVOLVIMENTO AGRÁRIO SUBSECRETARIA DE PLANEJAMENTO, ORÇAMENTO E ADMINISTRAÇÃO COORDENAÇÃO-GERAL DE MODERNIZAÇÃO E INFORMÁTICA CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS MANUAL

Leia mais

Estrutura do Trabalho: Fazer um resumo descrevendo o que será visto em cada capítulo do trabalho.

Estrutura do Trabalho: Fazer um resumo descrevendo o que será visto em cada capítulo do trabalho. UNIVERSIDADE ESTADUAL DE MARINGÁ A monografia é um texto escrito contendo o resultado da pesquisa realizada como trabalho de conclusão do curso de especialização. Os itens básicos a constarem da monografia

Leia mais

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia. 1 Introdução aos Sistemas de Informação 2002 Aula 4 - Desenvolvimento de software e seus paradigmas Paradigmas de Desenvolvimento de Software Pode-se considerar 3 tipos de paradigmas que norteiam a atividade

Leia mais

ENGENHARIA DE SOFTWARE I

ENGENHARIA DE SOFTWARE I ENGENHARIA DE SOFTWARE I Prof. Cássio Huggentobler de Costa [cassio.costa@ulbra.br] Twitter: www.twitter.com/cassiocosta_ Agenda da Aula (002) Metodologias de Desenvolvimento de Softwares Métodos Ágeis

Leia mais

Gerenciamento de Projetos Modulo II Ciclo de Vida e Organização do Projeto

Gerenciamento de Projetos Modulo II Ciclo de Vida e Organização do Projeto Gerenciamento de Projetos Modulo II Ciclo de Vida e Organização do Projeto Prof. Walter Cunha falecomigo@waltercunha.com http://waltercunha.com PMBoK Organização do Projeto Os projetos e o gerenciamento

Leia mais

Pesquisa com Professores de Escolas e com Alunos da Graduação em Matemática

Pesquisa com Professores de Escolas e com Alunos da Graduação em Matemática Pesquisa com Professores de Escolas e com Alunos da Graduação em Matemática Rene Baltazar Introdução Serão abordados, neste trabalho, significados e características de Professor Pesquisador e as conseqüências,

Leia mais

Aspectos técnicos do desenvolvimento baseado em componentes

Aspectos técnicos do desenvolvimento baseado em componentes Aspectos técnicos do desenvolvimento baseado em componentes Um novo processo de desenvolvimento O uso de componentes traz mudanças no processo de desenvolvimento Além de desenvolver um produto, queremos

Leia mais

INTRODUÇÃO A PORTAIS CORPORATIVOS

INTRODUÇÃO A PORTAIS CORPORATIVOS INTRODUÇÃO A PORTAIS CORPORATIVOS Conectt i3 Portais Corporativos Há cinco anos, as empresas vêm apostando em Intranet. Hoje estão na terceira geração, a mais interativa de todas. Souvenir Zalla Revista

Leia mais

CURSO DE PROGRAMAÇÃO EM JAVA

CURSO DE PROGRAMAÇÃO EM JAVA CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro

Leia mais

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor

Leia mais

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:

Leia mais

Metodologia e Gerenciamento do Projeto na Fábrica de Software v.2

Metodologia e Gerenciamento do Projeto na Fábrica de Software v.2 .:: Universidade Estadual de Maringá Bacharelado em Informática Eng. de Software III :. Sistema de Gerenciamento de Eventos - Equipe 09 EPSI Event Programming System Interface Metodologia e Gerenciamento

Leia mais

PROFESSOR: CRISTIANO MARIOTTI

PROFESSOR: CRISTIANO MARIOTTI PROFESSOR: CRISTIANO MARIOTTI Conjunto de atividades, parcialmente ordenadas, com a finalidade de obter um produto de software; Considerado um dos principais mecanismos para se obter software de qualidade

Leia mais

1.6. Tratamento de Exceções

1.6. Tratamento de Exceções Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER

Leia mais

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

Pós-Graduação em Gerenciamento de Projetos práticas do PMI Pós-Graduação em Gerenciamento de Projetos práticas do PMI Planejamento do Gerenciamento das Comunicações (10) e das Partes Interessadas (13) PLANEJAMENTO 2 PLANEJAMENTO Sem 1 Sem 2 Sem 3 Sem 4 Sem 5 ABRIL

Leia mais

ÍNDICE. 1. Introdução...2. 2. O que é o Sistema Mo Porã...2. 3. Como acessar o Site Mo Porã...3. 4. Cadastro do Sistema Mo Porã...

ÍNDICE. 1. Introdução...2. 2. O que é o Sistema Mo Porã...2. 3. Como acessar o Site Mo Porã...3. 4. Cadastro do Sistema Mo Porã... ÍNDICE 1. Introdução...2 2. O que é o Sistema Mo Porã...2 3. Como acessar o Site Mo Porã...3 4. Cadastro do Sistema Mo Porã...4 5. Navegando no Site Mo Porã...6 5. 1 Manual de ajuda do sistema Mo Porã...7

Leia mais

Engenharia de Software. Apostila I >>> Introdução à ES - HEngholmJr

Engenharia de Software. Apostila I >>> Introdução à ES - HEngholmJr Engenharia de Software Apostila I >>> Introdução à ES - HEngholmJr Histórico de Revisões Data Versão Descrição Autor 12/08/2014 1.0 Criação da primeira versão HEngholmJr Agenda Introdução à Engenharia

Leia mais

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP 1) Introdução Programação Orientada a Objetos é um paradigma de programação bastante antigo. Entretanto somente nos últimos anos foi aceito realmente

Leia mais

ABCEducatio entrevista Sílvio Bock

ABCEducatio entrevista Sílvio Bock ABCEducatio entrevista Sílvio Bock Escolher uma profissão é fazer um projeto de futuro A entrada do segundo semestre sempre é marcada por uma grande preocupação para todos os alunos que estão terminando

Leia mais

UNIDADE 4. Introdução à Metodologia de Desenvolvimento de Sistemas

UNIDADE 4. Introdução à Metodologia de Desenvolvimento de Sistemas UNIDADE 4. Introdução à Metodologia de Desenvolvimento de Sistemas 4.1 Motivação Sistemas de Informação são usados em diversos níveis dentro de uma organização, apoiando a tomada de decisão; Precisam estar

Leia mais

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB) RELATÓRIO DE ENTREGA DO PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB) PARA A ELABORAÇÃO DOS PLANOS MUNICIPAIS DE GESTÃO INTEGRADA DE RESÍDUOS SÓLIDOS PMGIRS PARA OS MUNICÍPIOS DE NOVO HORIZONTE, JUPIÁ, GALVÃO,

Leia mais

Guião de Introdução ao Eclipse IDE Índice

Guião de Introdução ao Eclipse IDE Índice Índice 1. Introdução... 2 1.1. O que é um ambiente de desenvolvimento (IDE)?... 2 1.2. Visão geral sobre o Eclipse IDE... 2 2. Iniciar o Eclipse... 3 2.1. Instalação... 3 2.2. Utilizar o Eclipse... 3 3.

Leia mais

5 Mecanismo de seleção de componentes

5 Mecanismo de seleção de componentes Mecanismo de seleção de componentes 50 5 Mecanismo de seleção de componentes O Kaluana Original, apresentado em detalhes no capítulo 3 deste trabalho, é um middleware que facilita a construção de aplicações

Leia mais

Sistema Gerenciador de Conteúdo OpenCms: um caso de sucesso no CEFET-MG

Sistema Gerenciador de Conteúdo OpenCms: um caso de sucesso no CEFET-MG Sistema Gerenciador de Conteúdo OpenCms: um caso de sucesso no CEFET-MG Marco T. A. Rodrigues*, Paulo E. M. de Almeida* *Departamento de Recursos em Informática Centro Federal de Educação Tecnológica de

Leia mais

ProgramaTchê Programação OO com PHP

ProgramaTchê Programação OO com PHP Roteiro 1 Objetivos: * Apresentar conceitos de orientação a objetos; * Representar classes e objetos usando UML; Este roteiro tem como objetivo abordar os conceitos básicos de orientação a objetos. 1 Introdução

Leia mais

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi 5 Conclusão Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi permitir que scripts Lua instanciem e usem

Leia mais

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

UML Aula III Diagramas de Estado, Atividades, Componentes e Instalação

UML Aula III Diagramas de Estado, Atividades, Componentes e Instalação UML Aula III Diagramas de Estado, Atividades, Componentes e Instalação Ricardo Argenton Ramos Engenharia de Software II 2013.1 Diagrama de Estado Um diagrama de estados (statechart), também conhecido por

Leia mais

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução

Leia mais

Requisitos de Software

Requisitos de Software Requisitos de Software Prof. José Honorato F.N. Prof. José Honorato F.N. honoratonunes@gmail.com Requisitos de Software Software é o conjunto dos programas e dos meios não materiais que possibilitam o

Leia mais

Processos de Desenvolvimento de Software

Processos de Desenvolvimento de Software Processos de Desenvolvimento de Software Gerenciamento de Projetos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e

Leia mais

Processos de gerenciamento de projetos em um projeto

Processos de gerenciamento de projetos em um projeto Processos de gerenciamento de projetos em um projeto O gerenciamento de projetos é a aplicação de conhecimentos, habilidades, ferramentas e técnicas às atividades do projeto a fim de cumprir seus requisitos.

Leia mais