INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO...

79
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE LUIZ FELIPE DE SOUSA MIRANDA DESENVOLVIMENTO DE APLICAÇÃO CORPORATIVA PARA INTEGRAÇÃO INFORMACIONAL DO CENTRO DE IDIOMAS FUNCERN: UM ESTUDO DE CASO NATAL/RN 2011

Transcript of INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO...

Page 1: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA

DO RIO GRANDE DO NORTE

LUIZ FELIPE DE SOUSA MIRANDA

DESENVOLVIMENTO DE APLICAÇÃO CORPORATIVA PARA INTEGRAÇÃO

INFORMACIONAL DO CENTRO DE IDIOMAS FUNCERN: UM ESTUDO DE CASO

NATAL/RN

2011

Page 2: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

LUIZ FELIPE DE SOUSA MIRANDA

DESENVOLVIMENTO DE APLICAÇÃO CORPORATIVA PARA INTEGRAÇÃO

INFORMACIONAL DO CENTRO DE IDIOMAS FUNCERN: UM ESTUDO DE CASO

Trabalho de Conclusão de Curso apresentado ao Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas do Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte, em cumprimento às exigências legais como requisito parcial à obtenção do título de Tecnólogo em Análise e Desenvolvimento de Sistemas. Orientador: Fabiano Papaiz

NATAL/RN

2011

Page 3: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

LUIZ FELIPE DE SOUSA MIRANDA

DESENVOLVIMENTO DE APLICAÇÃO CORPORATIVA PARA INTEGRAÇÃO

INFORMACIONAL DO CENTRO DE IDIOMAS FUNCERN: UM ESTUDO DE CASO

Trabalho de Conclusão de Curso apresentado ao Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas do Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte, em cumprimento às exigências legais como requisito parcial à obtenção do título de Tecnólogo em Análise e Desenvolvimento de Sistemas.

Aprovado em <<data>> de <<mês> de 2011.

BANCA EXAMINADORA

Fabiano Papaiz – Orientador

Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte

<<Nome de primeiro componente da banca examinadora>> Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte

<<Nome de segundo componente da banca examinadora>>

Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte

Page 4: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

Dedico este trabalho a todos que, por falta de condições, tiveram

seus sonhos restritos ou não tiveram oportunidades de alcançar

seus sonhos

Page 5: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

AGRADECIMENTOS

Agradeço, de todo coração, ao meu Deus, que é justo, misericordioso e fiel,

digno de todo louvor e adoração, fonte de toda força que me move para alcançar meus

objetivos e sonhos, sempre atento ao meu clamor e às minhas dificuldades.

A minha família, instrumento usado por Deus para ajudar a cuidar de mim, fonte

de carinho, compreensão e superação. Em especial, quero demonstrar minha gratidão

ao meu pai, Luiz Antonio, minha mãe, Edenilza, ao meu irmão, Luiz Fernando, e às

minhas tias Edilzene e Elenilza, sempre solícitos nos momentos difíceis.

Aos educadores que contribuíram para minha formação, em especial ao meu

orientador, Fabiano Papaiz, e aos demais professores que me transmitiram um parcela

de seus conhecimentos ao longo do curso de TADS.

Aos amigos que fiz no curso, em especial a Henrique Pinto e a Raul Terra,

companheiros ao longo de todo desenvolvimento do projeto Soft Educ GCI, e aos

demais amigos e colegas que acreditam no meu potencial.

A equipe da coordenação do Centro de Idiomas FUNCERN, em especial a

Fernando Carneiro, por ter acreditado no trabalho de nossa equipe e nos confiado o

desenvolvimento do sistema da organização que coordena.

Por fim, agradeço a todos que contribuíram com minhas experiências de vida,

que me fizeram chorar ou que me ajudaram a vencer, me deixando alguma lição.

Page 6: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

“Sem sonhos, a vida não tem brilho. Sem metas, os sonhos não têm

alicerces. Sem prioridades, os sonhos não se tornam reais. Sonhe,

trace metas, estabeleça prioridades e corra riscos para executar seus

sonhos. Melhor é errar por tentar do que errar por omitir!”

Augusto Cury

Page 7: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

vii

SUMÁRIO

RESUMO viii

ABSTRACT ix

1. INTRODUÇÃO 1

1.1. CONTEXTO E MOTIVAÇÃO DO TRABALHO 1

1.2. OBJETIVOS 2

1.3. METODOLOGIA 3

1.4. ESTRUTURA 3

2. FUNDAMENTAÇÃO TEÓRICA 4

2.1. METODOLOGIAS ÁGEIS EM PROCESSOS DE SOFTWARE. 4

2.1.1. PROCESSO DE SOFTWARE 5

2.1.2. METODOLOGIAS ÁGEIS 8

2.1.3. CARACTERÍSTICAS DAS PRINCIPAIS METODOLOGIAS ÁGEIS: SCRUM E XP 10

2.2. TECNOLOGIAS JAVA ENTERPRISE EDITION (JEE). 14

2.2.1. JAVA SERVER FACES (JSF) 15

2.2.2. ENTERPRISE JAVABEANS (EJB) 21

2.2.3. JAVA PERSISTENCE API (JPA) 23

3. ESTUDO DE CASO 27

3.1. CONTEXTUALIZAÇÃO DO PROJETO 27

3.2. APLICAÇÃO DE PROCESSO BASEADO EM METODOLOGIAS ÁGEIS 32

3.3. ESCOPO E REQUISITOS DO SISTEMA 36

3.3.1. MÓDULO COORDENAÇÃO 36

3.3.2. MÓDULO PÚBLICO 39

3.3.3. MÓDULO ACADÊMICO 40

3.4. FERRAMENTAS E TECNOLOGIAS APLICADAS 40

3.5. ARQUITETURA E MODELAGEM DO SISTEMA 41

3.6. RESULTADOS OBTIDOS 50

4. CONCLUSÃO 67

REFERÊNCIAS BIBLIOGRÁFICAS 70

Page 8: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

viii

RESUMO

Miranda, Luiz. Desenvolvimento de Aplicação Corporativa para Integração

Informacional do Centro de Idiomas FUNCERN: Um Estudo de Caso. Natal, 2011. 79 f.

Trabalho de Conclusão de Curso (Tecnologia em Análise e Desenvolvimento de

Software) – Diretoria Acadêmica de Gestão e Tecnologia da Informação, Instituto

Federal de Educação, Ciência e Tecnologia do Rio Grande Do Norte, Natal-RN, 2011.

Mediante ao contexto da sociedade da informação, na qual é cada vez mais importante

gerir e manipular eficaz e eficientemente dados organizacionais, as instituições

necessitam de soluções adequadas para coletar (ou recuperar), processar, armazenar

e distribuir informações, em conformidade com seus processos de negócio. Também

no ramo das instituições de ensino, sistemas computacionais tornaram-se ferramentas

diferenciais, muito úteis para simplificar a execução de atividades do fluxo de trabalho,

facilitar o acesso e a manipulação de dados organizacionais, proporcionar melhores

condições de gerência; melhorar o atendimento a clientes, entre outros. Com base

nisso, em meados do ano de 2010, o Centro de Idiomas FUNCERN percebia a

necessidade de avançar no que diz respeito ao aparato informacional utilizado para

apoiar o trabalho na organização, haja vista que a estrutura de softwares então

disponível apresentava vários problemas e gerava múltiplos inconvenientes. Com a

pretensão de evoluir, a coordenação do Centro de Idiomas firmou uma parceria com

um grupo de estudantes de desenvolvimento de sistemas a fim de que analisassem a

situação, projetassem, produzissem e implantassem uma solução em tecnologia da

informação que suprisse as demandas do estabelecimento. Esta solução vem sendo

desenvolvida desde o mês de setembro de 2010 e tem previsão para ser concluída no

mês de dezembro de 2011. O presente trabalho refere-se ao desenvolvimento desta

solução, enfatizando a adoção de processo de software baseado em metodologias

ágeis, o escopo e os requisitos do sistema, as tecnologias e ferramentas utilizadas na

construção, a estrutura arquitetural proposta, e os resultados obtidos até o momento.

Palavras-chave: Aplicações Coorporativas, Desenvolvimento Ágil. Plataforma JEE.

Page 9: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

ix

ABSTRACT

Through the context of the information society, which is increasingly important to

manage and manipulate data efficiently and effectively organizational institutions need

solutions appropriate to collect (or retrieve), process, store and distribute information in

accordance with their processes business. Also in the field of educational, computer

systems have become common differential, very useful to simplify the execution of

workflow activities, facilitate access to and manipulation of organizational data,

providing better-run, improve customer service, among others. Based on this, in mid-

2010, the Language Center FUNCERN realized the need to move with respect to the

informational apparatus used to support the work in the organization, given that the

structure of software available then had several problems and generated many

inconveniences. Claiming to evolve, the coordination of the Language Center has

partnered with a group of students to develop systems that analyze the situation,

design, produce and deploy an information technology solution that met the demands of

the establishment. This solution has been developed since the month of September

2010 and is expected to be completed in December 2011. This paper refers to the

development of this solution, emphasizing the adoption of software process based on

agile methodologies, scope and system requirements, technologies and tools used in

construction, architectural structure proposal, and the results obtained so time.

Keywords: Applications Enterprise, Agile Development. JEE platform.

Page 10: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

1

1. INTRODUÇÃO

O presente trabalho consiste, essencialmente, em apresentar o desenvolvimento

de uma solução em sistemas de informação, denominada Soft Educ GCI, que se

propõe a resolver problemas e inconvenientes identificados na execução do fluxo de

atividades do Centro de Idiomas FUNCERN. Este capítulo introdutório pretende expor

uma visão geral do trabalho, indicando o contexto que o circunda, os fatores que

estimularam seu desenvolvimento, os objetivos pretendidos, a metodologia utilizada, e

a estrutura de organização do conteúdo do trabalho.

1.1. Contexto e Motivação do Trabalho

O Centro de Idiomas FUNCERN é um programa da Fundação de Apoio à

Educação e ao Desenvolvimento Tecnológico do RN (FUNCERN) sediado nas

dependências do Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande

do Norte (IFRN) com o intuito de oferecer, ao público em geral, cursos de idiomas de

qualidade a um custo mais acessível. Essa organização oferece cerca de 65 turmas de

cursos de idiomas a cada semestre e atua com mais de 1000 alunos ativos, sendo que

a demanda de alunos para ingressar nos cursos é maior que o número de vagas

disponíveis. Entre professores dos cursos, e funcionários e bolsistas que trabalham

exercendo funções ligadas a coordenação, o Centro de idiomas tem mais de 30

colaboradores. A instituição tem um processo de negócio um tanto quanto peculiar,

incluindo a realização, a cada semestre, de um sorteio de vagas para as turmas do 1º

nível dos cursos, e a reserva de um determinado número de vagas em cada turma para

bolsistas alunos ou servidores do IFRN.

Para apoiar na gerência e no desempenho operacional das atividades próprias de

seu funcionamento, o estabelecimento utilizava alguns softwares. No entanto, ficava

nítido o juízo de que a estrutura de software utilizada estava ficando obsoleta, era

problemática, apresentava diversas incompatibilidades com as características do

processo de negócio da instituição e gerava alguns inconvenientes, não tendo

acompanhado a evolução da organização. Os problemas na referida estrutura de

software serão analisados e detalhados na sessão 3.1 deste trabalho.

Tomando este contexto, a realização do projeto Soft Educ GCI, que é o foco do

estudo deste trabalho fundou-se em uma parceria estabelecida entre a instituição

Page 11: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

2

mencionada e um grupo de alunos do Curso Superior de Tecnologia em Análise e

Desenvolvimento de Sistemas (TADS) do IFRN, no intuito de construir uma estrutura

de software mais evoluída e apropriada para apoiar o funcionamento do Centro de

Idiomas FUNCERN. Tal parceria foi firmada em setembro de 2010, e prevê a instalação

final do sistema, de acordo com o escopo previsto atualmente, no mês de dezembro de

2011.

O processo de desenvolvimento do projeto mencionado iniciou-se dentro da

disciplina de Projeto de Desenvolvimento de Software Corporativo (PDSC), do sexto

período do curso de TADS, cujo objetivo é proporcionar aos alunos uma espécie de

prática profissional, através da aplicação dos conteúdos ministrados durante o

semestre letivo ao desenvolvimento de sistemas. Dessa forma, o projeto seria uma boa

oportunidade para promover a extensão do trabalho acadêmico ao contexto de um

problema real em um ambiente de negócios, e para aplicar as tecnologias Java para

desenvolvimento corporativo estudadas, bem como um método de desenvolvimento de

software flexível e adaptável as características da equipe de desenvolvimento e do

cliente, dedicado fundamentalmente a agregar valor ao produto e a melhorar

continuamente o processo.

1.2. Objetivos

O principal objetivo deste trabalho é o desenvolvimento de uma solução

computacional que apóie o desempenho das atividades próprias do fluxo de trabalho

no Centro de Idiomas FUNCERN, resolva os problemas e inconvenientes identificados

na estrutura informacional utilizada quando este trabalho foi idealizado, proporcione

mais comodidade, eficiência e eficácia para o gerenciamento das informações e para a

execução do trabalho necessário na organização, e satisfaça seus usuários e cliente.

Os demais objetivos são: Desenvolver e apresentar um estudo sobre

metodologias ágeis para o desenvolvimento de software; Desenvolver e apresentar um

estudo sobre as tecnologias da plataforma JEE para o desenvolvimento de aplicações

coorporativas; Elucidar e descrever os requisitos esperados para sistema pretendido;

Descrever a aplicação de um processo de software que une o ciclo do Scrum com

práticas do XP e se utiliza de alguns artefatos oriundos de processos tradicionais;

Descrever sobre a utilização de ferramentas e tecnologias no desenvolvimento;

Apresentar a arquitetura adotada no sistema em desenvolvimento.

Page 12: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

3

1.3. Metodologia

Inicialmente, foi realizado um estudo do contexto do projeto, das características

relativas ao funcionamento do Centro de Idiomas FUNCERN, e um levantamento de

requisitos para o sistema pretendido de um modo amplo e sem profundidade de

detalhes. Em paralelo a isso foram estudados os temas enfatizados neste trabalho,

processos de software ágeis e tecnologias da plataforma JEE, e também alguns temas

complementares ou suplementares a eles, para que pudessem ser aplicados ao

desenvolvimento do projeto Soft Educ GCI.

Após isto, iniciou-se a fase do desenvolvimento do projeto, baseado no ciclo do

Scrum e em algumas práticas XP (essas metodologias de desenvolvimento de software

estão descritas na sub-sessão 2.1.3 deste trabalho, e a forma como são aplicadas ao

projeto é explicada na sessão 3.2).

Então, para concluir o trabalho, foi produzido o presente documento, constituído

pelos principais aspectos referentes aos estudos realizados e à aplicação do

conhecimento obtido no desenvolvimento do trabalho.

1.4. Estrutura

Além deste capitulo introdutório, este TCC contém mais três capítulos, que

estruturam o conteúdo conforme explicado a seguir. O capitulo 2 descreve os

resultados dos estudos sobre processos de software, com foco em metodologias ágeis;

e sobre as tecnologias da plataforma JEE ou complementares. O capítulo 3 apresenta

o estudo de caso que constitui o foco deste trabalho, dissertando sobre a aplicação de

um processo de software, de técnicas, tecnologias e ferramentas no desenvolvimento

do sistema Soft Educ GCI. Por fim, O capítulo 4 expõe as conclusões em relação ao

trabalho, indicando a medida em que os resultados apresentados foram positivos ou

não e estabelecendo uma previsão para os possíveis rumos quanto a continuidade do

trabalho.

Page 13: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

4

2. FUNDAMENTAÇÃO TEÓRICA

Para melhor compreensão do estudo de caso que compreende o foco deste

trabalho, faz-se necessário o conhecimento de alguns conceitos e idéias as quais

fundamentam os aspectos abordados no capítulo 3, sobre o desenvolvimento do

projeto em questão. Sendo assim, este segundo capítulo objetiva explicar, de forma

sucinta, alguns fundamentos centrais envolvidos na construção do Soft Educ GCI. Para

tanto, subdividir-se-á em duas seções, os quais relatarão, consecutivamente, a respeito

de: 1) Processos de desenvolvimento de software, com foco em metodologias ágeis; e

2) Tecnologias da plataforma Java para desenvolvimento de aplicações coorporativas

(JEE).

2.1. Metodologias Ágeis em Processos de Software.

Desenvolver um software consiste fundamentalmente em transformar requisitos

dos clientes ou usuários em uma solução computacional adequada para os

requisitantes. Em geral, a demanda de software surge: da busca por resolver

problemas do dia a dia, seja no âmbito pessoal ou organizacional; da intenção de

tornar mais prática e eficiente a execução de alguma(s) atividade(s) em um dado

contexto. Entretanto, dependendo da dimensão do problema a resolver e dos níveis

dos requisitos estabelecidos, o desenvolvimento de sistemas pode tornar-se uma

atividade bem complexa, envolvendo uma vasta gama de profissionais, e inúmeras

possibilidades de decisões, as quais podem implicar no sucesso ou fracasso em um

projeto.

Mediante a esta complexidade, são necessários meios para se organizar a

criação de produtos de software. A desorganização na produção destes desencadeia

problemas como: discrepância em relação aos requisitos do usuário; ocorrência

demasiada de erros; excesso de gastos em relação orçamento estimado; atraso

quantos aos prazos estabelecidos; criação de produtos de difícil manutenção; entre

outros. Tais problemas ficaram bem evidentes na indústria de software na década de

1960, quando foi evidenciada a crise do software. Para tentar solucioná-los, houve, e

ainda há um esforço no intuito de gerar processos e metodologias apropriadas para

promoção do desenvolvimento de software de qualidade, apropriados para solucionar

os problemas do usuário, respeitando prazos e custos estabelecidos.

Page 14: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

5

2.1.1. Processo de Software

“Define-se processo de software como o conjunto de tarefas de Engenharia de

Software necessárias para transformar os requisitos dos usuários em software”

[Humphrey apud Oliveira 2007 apud Portela 2009]. Trata-se da aplicação de uma

metodologia de trabalho para coordenar as ações de uma equipe de desenvolvimento,

de forma que cada membro entenda seu papel dentro do grupo, bem como as

atividades que deve executar. Isso, no intuito de manter a harmonia, a sincronia e a

estabilidade entre os trabalhos realizados por cada um, a fim de que a equipe alcance

os resultados esperados de forma eficiente e eficaz.

Todavia, nenhum processo de software é apropriado para ser aplicado em todo e

qualquer projeto. Cada projeto tem seu contexto, suas peculiaridades, características

próprias. Isso significa que um mesmo processo aplicado a dois projetos diferentes

pode ser determinante para o grande sucesso em um e para o extremo fracasso em

outro.

Não existe um processo de software que possa ser genericamente aplicado a todos os projetos, visto que nenhum projeto é idêntico ao outro. Variações nas políticas e procedimentos organizacionais, métodos e estratégias de aquisição, tamanho e complexidade do projeto, requisitos e métodos de desenvolvimento do sistema, equipe (pessoas), entre outros fatores, influenciam na forma como um produto de software é adquirido, desenvolvido, operado e mantido. [ISO/IEC apud Oliveira 2007 apud Portela 2009]

2.1.1.1. Conceitos Fundamentais Inerentes a Processos de Software

Para ajudar a esclarecer as idéias a respeito da composição de um processo de

software é conveniente observar-se também alguns conceitos intimamente associados,

tais como: atividades previstas, artefatos consumidos e produzidos, procedimentos

adotados, recursos empregados, paradigma e tecnologia aplicados, e modelo de ciclo

de vida utilizado. Abaixo, a explicação sobre alguns dos itens mencionados, segundo

[Oliveira 2007 apud Portela 2009]:

Atividades: São as tarefas ou trabalhos a serem realizados. A realização de uma atividade pode adotar um procedimento, requer recursos e geralmente utiliza ou gera artefatos. Pode-se, ainda, decompô-la em sub-atividades. Além disso, atividades podem depender da finalização de outras atividades, denominadas pré-atividades. As atividades podem ser classificadas em: atividades de gerência, atividades de construção, atividades de suporte e manutenção e atividades de avaliação da 19 qualidade. Como exemplo de atividade realizada no projeto de software pode-se citar “Especificar os Requisitos”;

Page 15: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

6

Artefatos: São produtos de software gerados ou consumidos durante a execução das atividades. Os artefatos podem ser classificados em: artefatos de código, componentes de software, documentos, diagramas, modelos, etc. Para a atividade citada no exemplo anterior, pode-se ter como artefato consumido o “Relatório de Entrevista com o Usuário” e como artefato gerado o documento “Especificação dos Requisitos”; Procedimentos: São condutas bem estabelecidas e ordenadas para a realização de atividades do processo. Quanto à sua natureza, procedimentos podem ser classificados em: métodos, técnicas e diretrizes. Seguindo o exemplo anterior, para executar a atividade definida pode-se definir um procedimento que faça uso da UML – Unified Modelling Language para a definição de cenários das necessidades do usuário; Recursos: Qualquer fator necessário à execução de uma atividade, mas que não seja um insumo para a atividade. Os recursos podem ser classificados em: recursos de hardware, recursos de software e recursos humanos. Finalizando a caracterização do exemplo anterior, pode-se usar como recursos humanos o “Analista de Sistemas”, o qual poderá ter um equipamento de “PC” para desempenhar suas tarefas, que tenha instalado uma ferramenta para modelagem de projetos de software que automatize o procedimento UML

Também é importante ressaltar que existem algumas atividades comuns a qualquer

processo, conforme indicado em [Sommerville 2003 apud Soares 2004]:

Especificação de Software: definição das funcionalidades (requisitos) e das restrições do software. Geralmente é uma fase em que o desenvolvedor conversa com o cliente para definir as características do novo software. Projeto e Implementação de Software: o software é produzido de acordo com as especificações. Nesta fase são propostos modelos através de diagramas, e estes modelos são implementados em alguma linguagem de programação. Validação de Software: o software é validado para garantir que todas as funcionalidades especificadas foram implementadas. Evolução de Software: o software precisa evoluir para continuar sendo útil ao cliente.

2.1.1.2. Tipos de Processos de Software

Existem vários processos de softwares definidos na literatura da Engenharia de

Software, os quais podem ser classificados essencialmente em dois grupos: os

processos tradicionais e os processos ágeis.

Processos tradicionais, também conhecidos como processos pesados, valorizam

a idéia de que, na fase inicial do projeto, a equipe de desenvolvimento deve elucidar e

documentar todos os requisitos do sistema, para que, ao longo do processo, estes

requisitos sejam administrados a partir de um planejamento rigoroso, estabelecido

antes do início das atividades de projeto e implementação do software. A

Page 16: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

7

documentação é considerada um fator de grande importância durante a execução de

processos nessa linha.

A especificação de requisitos é considerada uma etapa fundamental onde todas as necessidades do cliente devem ser definidas e documentadas. Para cada um destes requisitos, devem ser gerados outros documentos, o que torna o processo de análise e projeto bastante demorado e de difícil manutenção caso surja um novo requisito ou alguma especificação seja alterada. Pode-se, ainda, caracterizar que estes tipos de processo possuem uma abordagem voltada para o planejamento detalhado e uso artefatos como insumos de uma fase para a seguinte. [Portela 2009]

O exemplo que representa bem a essência das metodologias tradicionais é o

modelo de desenvolvimento de software em cascata, no qual uma sequência rígida de

etapas deve ser seguida durante o processo: especificação de requisitos, projeto,

implementação, teste, implantação e manutenção. Ao final de cada etapa os artefatos

produzidos precisam ser aprovados para que a etapa seguinte possa ter início.

Figura 1. Esquema de representação do modelo de desenvolvimento de software em cascata. Fonte: http://diegoduarte88.wordpress.com/modelo-de-desenvolvimento-de-software-cascata/ em 12/06/2011

Por outro lado, têm-se os processos baseados em metodologias ágeis, também

chamados de processos leves, os quais valorizam principalmente a capacidade de

adaptar-se a mudanças de requisitos no software e a eficiência na produção. O tópico

seguinte deste trabalho abordará com mais profundidade as características deste tipo

de processos.

Page 17: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

8

2.1.2. Metodologias Ágeis

Os modelos tradicionais de desenvolvimento de software foram adotados em

grande escala pela indústria de software a partir da década de 1970. Porém, em

meados da década de 1990, mediante ao contexto de um ambiente organizacional

cada vez mais dinâmico e instável, e de problemas cada vez maiores, quanto à

extrapolação de orçamentos, atrasos nas entregas, bugs e insatisfação de clientes,

apresentados em projetos aplicadores de processos tradicionais, integrantes da

comunidade de software começaram a questionar tais processos, julgando-os

impraticáveis em algumas situações. Dessa forma, especialistas passaram a buscar

alternativas para tornar a produção de software mais eficiente e eficaz, criando

métodos próprios para isso.

O agrupamento desses novos métodos e dos ideais que os embasavam

começaram a construir o conceito de metodologias ágeis. Esse conceito lançava a

idéia de não permitir que a rigorosidade dos processos de software bloqueasse o

avanço significativo na produção e as possibilidades de adaptação a mudanças. A idéia

de agilidade não se fazia contrária à documentação, mas sim à documentação em

excesso, aos documentos que pouco ou nada agregavam ao processo de produção e

só deixavam o processo mais pesado.

Diante disso, o novo enfoque para o desenvolvimento de software seria baseado

em flexibilidade, habilidades de comunicação, capacidade de resposta a mudanças e

de adaptação a situações adversas, buscando oferecer produtos e serviços de valor ao

mercado em um curto período de tempo, no contexto de um turbulento ambiente de

negócios [Highsmith 2004 apud Portela 2009].

Para complementar, vale enfatizar que as propostas indicavam a necessidade

de balancear flexibilidade, estrutura e estabilidade, pois a ausência de um destes dois

últimos fatores pode levar ao caos, mas, por outro lado, a estrutura em excesso gera

rigidez [Highsmith 2004 apud Portela 2009], o que pode se tornar um gargalo em um

projeto.

2.1.2.1. Manifesto Ágil

Para discutir as novas idéias e abordagens que surgiram em resposta as

limitações dos processos tradicionais para desenvolvimento de software, criadores e

representantes de vários métodos ágeis se reunirão nos Estados Unidos, no ano de

2001. Como resultado deste encontro, surgiu a Aliança Ágil e foi publicado um

Page 18: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

9

documento que oficializava e sintetizava os novos ideais estabelecidos pelo grupo, o

Manifesto para Desenvolvimento Ágil de Software, mais conhecido simplesmente como

Manifesto Ágil.

Nesse documento, alguns valores foram colocados em detrimento de outros:

Indivíduos e interação entre eles mais que processos e ferramentas; Software em

funcionamento mais que documentação abrangente; Colaboração com o cliente

mais que negociação de contratos; Responder a mudanças mais que seguir um plano

[Manifesto Ágil 2001].

Expôs-se também que os itens mais a esquerda tinham valor significativo, porém

que eram menos essenciais que os itens mais a direita.

No encontro, os participantes demonstraram-se preocupados em deixar clara a

importância da metodologia, do planejamento e da documentação. Entretanto,

defenderam-se os seguintes pontos de vista em relação a estes fatores: a metodologia

teria que contribuir para a eficiência e eficácia, e nunca ao contrário; o planejamento

deveria ser refeito ciclicamente, tendo em vista que, em um ambiente de negócios

turbulento, o planejamento e a previsibilidade em longo prazo são bastante limitados; a

documentação não é um fator primordial e indispensável por si só, mas só é necessária

na medida em que agregar valor ao processo de desenvolvimento ou ao produto.

Princípios base do manifesto ágil Nós seguimos os seguintes princípios:

Nossa maior prioridade é satisfazer o cliente, através da entrega adiantada e contínua de software de valor.

Aceitar mudanças de requisitos, mesmo no fim do desenvolvimento. Processos ágeis se adéquam a mudanças, para que o cliente possa tirar vantagens competitivas.

Entregar software funcionando com frequência, na escala de semanas até meses, com preferência aos períodos mais curtos.

Pessoas relacionadas a negócios e desenvolvedores devem trabalhar em conjunto e diariamente, durante todo o curso do projeto.

Construir projetos ao redor de indivíduos motivados. Dando a eles o ambiente e suporte necessário, e confiar que farão seu trabalho.

O Método mais eficiente e eficaz de transmitir informações para, e por dentro de um time de desenvolvimento, é através de uma conversa cara a cara.

Software funcional é a medida primária de progresso.

Processos ágeis promovem um ambiente sustentável. Os patrocinadores, desenvolvedores e usuários, devem ser capazes de manter indefinidamente, passos constantes.

Contínua atenção à excelência técnica e bom design, aumenta a agilidade.

Simplicidade: a arte de maximizar a quantidade de trabalho que não precisou ser feito.

As melhores arquiteturas, requisitos e designs emergem de times auto-organizáveis.

Page 19: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

10

Em intervalos regulares, o time reflete em como ficar mais efetivo, então, se ajustam e otimizam seu comportamento de acordo.

[Manifesto Ágil 2001]

2.1.3. Características das Principais Metodologias Ágeis: Scrum e XP

Os métodos ágeis Scrum e Extreme Programming (XP) são, atualmente, os mais

conhecidos e utilizados na comunidade de desenvolvimento de software. Ambos estão

calcados nos princípios estabelecidos no Manifesto Ágil, valorizando fatores como

aproximação entre clientes e desenvolvedores, entregas frequentes de pequenos

incrementos no software, e melhoria continua do processo de desenvolvimento da

equipe. A seguir cada um destes processos é analisado de forma resumida.

2.1.3.1. Scrum

O Scrum é uma metodologia de desenvolvimento de software bastante aberta e

flexível, tornando possível e indicado adaptar seu uso de acordo com o contexto do

projeto que deseja utilizá-lo. Ele procura fornecer meios de tornar a produção eficiente

mesmo mediante à imprevisibilidade e às mudanças nos requisitos. O Scrum não

determina tudo o que se deve fazer nem as técnicas a serem adotadas nos diversos

momentos do desenvolvimento, mas oferece um conjunto práticas as quais permitem

que a equipe: se situe em relação ao estado das atividades do projeto; tenha

consciência dos seus objetivos, metas e nível de produtividade; possa fazer estimativas

próximas da realidade; e tome as decisões adequadas e coerentes com os objetivos e

metas estabelecidas. Assim, esta metodologia caracteriza-se como um framework.

Por ser um framework, irá servir como um guia de boas práticas para atingir o sucesso. Entretanto, as decisões de quando e como usá-lo, quais táticas e estratégias seguir para obter produtividade e realizar as entregas ficam por conta de quem estiver o aplicando. O conhecimento das suas práticas permite a aplicação destas de forma variada e este é um dos aspectos positivos do Scrum, a adaptabilidade. [Portela 2009]

Neste framework, há a definição clara de três papéis dentro da equipe ou time

de desenvolvimento. O Product Owner é o responsável por representar os interesses

do cliente junto ao time de desenvolvedores, em relação a requisitos, prazos,

orçamento, avaliação do produto, etc. O Scrum Master é o responsável pelas funções

de gerência e de resolução de conflitos internos ao time. E os Desenvolvedores são os

Page 20: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

11

responsáveis pelas decisões técnicas, por estimar tempo necessário para atividades,

por projetar e implementar funcionalidades do sistema.

Em síntese, e de um modo genérico, o Scrum funciona da seguinte forma:

inicialmente é elaborado o Backlog do Produto (Product Backlog), que consiste em um

plano com as funcionalidades (User Stories ou Estórias do Usuário) e características

requeridas pelo cliente no começo do projeto. Este artefato será administrado durante o

todo o projeto, sendo frequentemente atualizado. Depois de listadas as estórias do

usuário, o esforço para realizá-las é estimado pelos desenvolvedores, que, junto com o

product owner, agrupam as estórias em vários Sprints. Um Sprint consiste em uma

iteração que deve durar entre 2 e 4 semanas, de modo que, ao final deste intervalo de

tempo, tenha-se uma versão usável do produto para entregar ao Product Owner.

Antes de iniciar cada sprint, há uma reunião de planejamento (Scrum Planning

Meeting), a qual envolve todo o time, com a finalidade de definir, de acordo com as

prioridades do cliente e do contexto atual da equipe, quais das funcionalidades e

características do Backlog do Produto devem ser implementadas durante a iteração,

construindo assim o Sprint Backlog. Após o product owner expressar ao restante da

equipe suas prioridades, scrum master e desenvolvedores dividem as estórias em

atividades necessárias e estimam o esforço para cumpri-las, adequando a composição

do Sprint Backlog de acordo com o esforço previsto para o sprint.

Durante o sprint, o scrum master e desenvolvedores assumem

espontaneamente e executam as atividades previstas no plano. Há a realização de

reuniões diárias (Scrum Daily Meeting), nas quais cada desenvolvedor e o scrum

master devem se pronunciar rapidamente para o restante da equipe, procurando,

essencialmente, informar o que fez no último dia, o que pretende fazer no dia vindouro

e quais o impedimentos encontrados na tarefa que está executando. As reuniões

devem ser rápidas, entre 10 e 20 minutos, e recomenda-se que sejam realizadas com

os participantes de pé. Para medir a produtividade do time no decorrer do sprint é

usado um gráfico chamado Sprint Burndown, que indica o progresso da equipe, de

acordo com o esforço estimado para as tarefas cumpridas a cada dia.

Ao final de cada sprint deve ser realizada uma reunião de revisão de sprint

(Sprint Review), na qual a equipe demonstra ao product owner o que foi produzido e

todos avaliam o trabalho, comparando o resultado obtido ao esperado. Após isso,

deve-se realizar uma reunião de retrospectiva de sprint (Sprint Retrospective), visando

identificar os pontos positivos e negativos, o que deve ser mantido e o que não deve se

Page 21: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

12

repetir, além de absolver lições e aprendizado, com o objetivo de melhorar o processo

e o produto nos sprints seguintes.

Figura 2. Representação do ciclo do Scrum. Fonte: http://tasafo.wordpress.com/tag/scrum/ em 12/06/2011

2.1.3.2. Extreme Programming (XP)

O XP, que foi criado no final da década de 1990, trata-se de “uma metodologia

ágil para equipes pequenas e médias que desenvolvem software baseado em

requisitos vagos e que se modificam rapidamente” [Beck 1999 apud Soares 2004]. Este

método tem o objetivo de promover a produção de software de forma rápida e em

ciclos de desenvolvimento cada vez mais curtos. Dentre os ideais, estão: produzir

primeiro o que agrega mais valor ao produto, adaptar-se ao inesperado, priorizar as

atividades de codificação (programming). Para tanto, baseia-se em 4 valores

fundamentais e propõe a aplicação 12 práticas bem estabelecidas na condução do

processo.

Os valores são: feedback, comunicação, simplicidade e coragem [Beck 1999

apud Soares 2004].

O feedback consiste na busca constante por respostas do cliente em relação ao

que foi produzido, de modo que ele observe e utilize, o quanto antes, um número

Page 22: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

13

mínimo de funcionalidades desenvolvidas da forma mais simples possível, para, então,

indicar o que, segundo sua óptica, necessita ser feito a mais em relação às referidas

funcionalidades. Dessa forma, o cliente guiará o desenvolvimento de acordo com a

evolução da formação de sua visão sobre o produto, evitando implementações

desnecessárias e maiores custos para ajustes.

A comunicação mais eficiente possível é um objetivo prioritário para equipes XP,

para que a equipe possa compartilhar conhecimento, se ajudar mutuamente dentro do

processo, etc. A intenção é usar, ao máximo, os melhores canais comunicativos

disponíveis, de maneira que a comunicação pessoal é preferível em relação à

comunicação por telefone, a qual é preferível em relação à comunicação por e-mail. A

comunicação é estimulada tanto interiormente a equipe, quanto entre membros da

equipe de desenvolvimento e clientes.

A simplicidade faz-se no sentido de tentar descomplicar as coisas, para que,

inicialmente seja desenvolvido algo simples e funcional, a ser melhorado

posteriormente, a partir do feedback, e durante as refatorações (Refectoring). Busca-se

implementar somente requisitos atuais, sem tentar prever requisitos importantes no

futuro.

A aposta da XP é que é melhor fazer algo simples hoje e pagar um pouco mais amanhã para fazer modificações necessárias do que implementar algo complicado hoje que talvez não venha a ser usado, sempre considerando que requisitos são mutáveis. [Soares 2004]

A coragem é fator determinante para membros de times XP, uma vez que a

metodologia propõe, através de seus valores e práticas, uma quebra de paradigmas

relacionados às abordagens tradicionais para desenvolver sistemas.

Abaixo, estão listadas as 12 práticas XP, conforme apresentado em [Dias 2005

apud Portela 2009]:

1. Jogo do Planejamento: no início de cada interação, clientes, gerentes e

programadores se encontram para definir, estimar e priorizar os requerimentos. A idéia é que se elabore um plano aproximado no início do projeto e se faça um refinamento à medida que as necessidades e requisitos se tornem mais conhecidos;

2. Programação em Pares: dois programadores utilizando o mesmo computador escrevem o código;

3. Pequenas Versões: as versões devem ser tão pequenas quanto possível e

trazerem valor para o negócio. Uma versão inicial do software deve ser colocada em produção após um pequeno número de interações e, em seguida, outras versões devem ser disponibilizadas tão logo faça sentido;

Page 23: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

14

4. Metáforas: clientes, gerentes e programadores criam metáforas ou

conjunto de metáforas para modelagem do sistema;

5. Projeto Simples: os programadores são estimulados a desenvolver o código do software o mais simples possível;

6. Testes: os programadores devem criar os testes de unidade antes ou

mesmo durante o desenvolvimento do código do sistema. Os clientes, por sua vez, escrevem os testes de aceitação. Ao final de cada iteração a bateria de testes deve ser conduzida;

7. Reegenharia de Software: o código deve ser constantemente melhorado,

sem que a funcionalidade do seja alterada, pela equipe do projeto, o tempo todo;

8. Integração Contínua: os programadores devem integrar os novos códigos

ao software tão rapidamente e com a maior freqüência possível;

9. Propriedade Coletiva do Código: o código do programa deve ser propriedade de toda a equipe e qualquer integrante pode fazer alterações sempre que for necessário;

10. Cliente no Local: o cliente deve trabalhar com a equipe de projeto a todo

momento, respondendo perguntas, realizando testes de aceitação e assegurando que o desenvolvimento do software esteja sendo feito a contento;

11. Semana de 40 horas: como trabalhar por longos períodos reduz o

desempenho, o conteúdo de cada iteração deve ser planejado de forma a não haver necessidade de realização de horas extras;

12. Padrão de Codificação: no início do projeto deve ser criado um padrão de

codificação, simples e aceito por toda a equipe, que deverá ser seguido de forma a padronizar e a auxiliar a condução do trabalho

2.2. Tecnologias Java Enterprise Edition (JEE).

É cada vez mais vigente a necessidade de se construir aplicações distribuídas

transacionais e portáveis com menos tempo e recursos, utilizando-se de vantagens,

como confiabilidade, segurança e velocidade, oferecidas por tecnologias para

programação do lado servidor. É sob esta perspectiva que a plataforma Java Enterprise

Edition coloca-se com o objetivo de fornecer aos desenvolvedores um conjunto

avançado de APIs (Application Programming Interfaces ou Interfaces para

Programação de Aplicações) para reduzir a complexidade, melhorar o desempenho e

reduzir o tempo de desenvolvimento de aplicações.

Esta plataforma define uma arquitetura baseada em um modelo distribuído

multicamadas para implementação de serviços em aplicações corporativas, de modo a

proporcionar vantagens, como escalabilidade, acessibilidade e gerenciamento

Page 24: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

15

necessário. A aplicação é estruturada por meio de componentes que podem se situar

em camadas distintas, de acordo com a função que exercem. Estas camadas

representam ambientes de execução diferentes, quais sejam a máquina cliente, o

container Web o container EJB, estes dois último localizados no servidor JEE.

Figura 3. Arquitetura de Componentes JEE. fonte: The Java EE 6 Tutorial

As próximas subseções deste trabalho abordaram mais detalhadamente algumas

das tecnologias usadas no projeto Soft Educ GCI que compõem esta plataforma de

desenvolvimento.

2.2.1. Java Server Faces (JSF)

Várias tecnologias surgiram com a finalidade de evoluir o modelo de programação

para aplicações web, tentando abstrair, simplificar e potencializar a implementação

destas. Na plataforma Java, a especificação Java Servlet foi a tecnologia precursora.

Em seguida, vieram as páginas JSP, as quais passaram a ser utilizada junto aos

Servlets. No entanto, os seguintes problemas, decorrentes do uso destas tecnologias,

Page 25: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

16

tornaram-se cada vez mais evidentes: mistura entre códigos de apresentação (Interface

Gráfica do Usuário) e de lógica de negócio, dificuldades na manutenção das

aplicações, baixa produtividade no desenvolvimento, entre outros.

Mediante esse contexto, o JSF foi apresentado como “um framework de

componentes do lado servidor para a construção de aplicações web baseadas em

tecnologias Java” [The Java EE 6 Tutorial]. Constituído sobre o padrão arquitetural

MVC (Model-View-Controller ou Modelo-Visão-Controlador), e caracterizando-se por

uma proposta de programação baseada em eventos, de forma similar ao que acontece

com o uso da API Java Swing para desenvolvimento de interfaces gráficas em

aplicações desktop, o JSF busca abstrair fatores relacionados ao modelo de

desenvolvimento proveniente do uso das tecnologias anteriores (JSP e Servlets),

elevando o nível da programação, tornando mais fácil e prático a produção de

aplicações web.

Essencialmente, este framework fornece uma API para: representação de

componentes e gerência do estado deles, manipulação de eventos, conversão de

dados, validação no lado servidor, definição de navegação entre páginas,

internacionalização da aplicação e extensibilidade dos componentes [The Java EE 6

Tutorial].

Para a camada de apresentação, o JSF oferece um conjunto de tags XML para

representação de componentes em páginas web. Estas tags possibilitam a associação

de componentes das páginas com objetos do lado servidor através do uso da

linguagem de expressão (Expression Language ou, simplesmente, EL), e estão

disponíveis por meio das tag libraries, que são bibliotecas de tags a serem declaradas

nas páginas.

Com a finalidade de possibilitar uma compreensão mais prática do framework, na

sua versão 1.2, que foi a versão usada no desenvolvimento do projeto sobre o qual se

refere este trabalho, as explicações serão feitas com base em trechos de código de

uma aplicação JSF simples. A Figura a seguir apresenta um trecho de código de uma

página XHTML que usa alguns componentes JSF:

Page 26: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

17

Figura 4. Uso de componentes JSF

A figura 4 exibe a codificação de uma página simples, com alguns componentes

JSF. Nas linhas 2 e 3, ocorre a declaração das duas tag libraries padrão do JSF, com

seus respectivos prefixos, pelos quais serão referenciadas ao longo do código, e URIs.

A partir disso, os componentes integrantes desses pacotes de tags poderão ser

usados.

Da linha 10 a linha 15, exemplifica-se o uso de alguns componentes da tag

library HTML do JSF. Na linha 12, demonstra-se o uso de um componente que associa

uma entrada de texto do usuário a um objeto do modelo que está no lado servidor

(backing bean), através de EL. Com a expressão “#{exemploMB.nome}”, o valor

inserido no campo de texto deve ser atribuído a propriedade “nome” do managed bean

declarado com o nome de “exemploMB” durante a fase de atualização dos valores do

modelo do ciclo de vida do JSF.

Os managed beans são classes Java que exercem a função de controladores

em uma aplicação JSF. Eles contêm os objetos do domínio que serão ligados aos

componentes JSF, e também os manipuladores de ações (Action Handlers), que são

métodos invocados a partir de um evento, como o clique do usuário em um botão.

Voltando ao exemplo, na linha 13, observa-se um componente que representa

um botão em uma página HTML. Este botão, quando clicado, invocará o método

“manipularEvento()” do managed bean “exemploMB”, conforme indicado na expressão

01 <f:view xmlns="http://www.w3.org/1999/xhtml"

02 xmlns:f="http://java.sun.com/jsf/core"

03 xmlns:h="http://java.sun.com/jsf/html"

04 contentType="text/html">

05 <html>

06 <head>

07 <title>Exemplo</title>

08 </head>

09 <body>

10 <h:form>

11 <h:outputLabel value="seu nome: " />

12 <h:inputText value="#{exemploMB.nome}" />

13 <h:commandButton value="Enviar"

14 action="#{exemploMB.manipularEvento}" />

15 </h:form>

16 </body>

17 </html>

16 </f:view>

Page 27: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

18

“#{exemploMB.manipularEvento}”, declarada como valor no atributo “action” do

componente.

O managed bean “exemploMB” pode ser implementado como demonstrado na

classe conforme a figura 5:

Figura 5. Exemplo da implementação de um managed bean

A classe apresentada contém as propriedades “nome” e “frase”, as quais podem

ser acessadas pelos componentes JSF presentes em uma página web por meio dos

métodos get, para recuperar o valor da propriedade, e set, para atribuir um novo valor a

ela. Com isso, percebe-se que, no exemplo discutido, um componente de uma página

JSF pode recuperar o valor da propriedade “nome” e também alterar valor dela, pois o

atributo “nome” da classe “ExemploMB” tem os métodos get e set correspondente. Já a

propriedade “frase” pode ter seu valor recuperado, mas não alterado, pois o atributo

“frase” só tem o método get, mas não o set.

O método “public String manipularEvento()” é um action handler, o qual pode ser

invocado após lançamento de um evento por um componente de uma página JSF. Ele

faz um processamento com os valores dos atributos do managed bean e retorna uma

String, que servirá para indicar a página que deve ser apresentada após o

processamento do método, conforme as regras de navegação configuradas no arquivo

“faces-config.xml”.

01 public class ExemploMB {

02

03 private String nome;

04 private String frase;

05

06 public String getNome() {

07 return nome;

08 }

09 public void setNome(String nome) {

10 this.nome = nome;

11 }

12 public String getFrase() {

13 return frase;

14 }

15

16 public String manipularEvento() {

17 frase = "Oi, meu nome é " + nome + ".";

18 return "pagina2";

19 }

20 }

Page 28: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

19

Este arquivo, o “faces-config.xml”, é o principal arquivo de configuração de uma

aplicação JSF. É lá onde são declarados os managed beans e as regras de

navegação, conforme demonstrado na figura abaixo:

Figura 6. Declaração de managed bean e definição de regra de navegação no faces-config.xml

Entre as linha 06 e 10, na figura 03, é declarado um managed bean, com a

indicação do nome pelo qual será referenciado na aplicação, do nome completo da

classe que onde está sua implementação e do seu escopo, que pode ser de sessão

(session), requisição (request) ou aplicação (application). Da linha 12 até a 18 tem-se a

declaração de uma regra de navegação, indicando que quando uma requisição partir

da view com o endereço “/pagina1.xhtml” e o action handler responsável por tratar a

requisição retornar a String “pagina2”, deve-se exibir a view com identificada pelo

endereço “/pagina2.xhtml”. Além de servir para declaração de managed beans e de

regras de navegação, o “faces-confi.xml” também é usado para configurar

componentes customizados, tais como conversores e validadores.

Outro elemento importante em uma aplicação JSF é o arquivo descritor de

implantação “web.xml”. É lá que é declarado o Servlet responsável por receber e

processar todas as requisições recebidas do cliente, a partir de componentes JSF, o

Faces Servlet.

01 <?xml version="1.0" encoding="UTF-8"?>

02 <!DOCTYPE faces-config PUBLIC

03 "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"

04 "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">

05 <faces-config>

06 <managed-bean>

07 <managed-bean-name>exemploMB</managed-bean-name>

08 <managed-bean-class>pacote.exemplo.ExemploMB</managed-bean-class>

09 <managed-bean-scope>session</managed-bean-scope>

10 </managed-bean>

11

12 <navigation-rule>

13 <from-view-id>/pagina1.xhtml</from-view-id>

14 <navigation-case>

15 <from-outcome>pagina2</from-outcome>

16 <to-view-id>/pagina2.xhtml</to-view-id>

17 </navigation-case>

18 </navigation-rule>

19 </faces-config>

Page 29: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

20

Figura 7. Delclaração do Faces Servlet no descritor de implantação “web.xml”

2.2.1.1. RichFaces

O RichFaces é um projeto de código aberto desenvolvido pela JBoss para

auxiliar na construção de aplicações de internet ricas com o JSF. Consiste em um

conjunto de componentes avançados de interface de usuário com o intuito de

possibilitar uma fácil integração do potencial da tecnologia AJAX a aplicações JSF, sem

a necessidade de recorrer a JavaScript para essa finalidade. Além disso, também

propõe facilitar o trabalho de padronizar as interfaces de uma aplicação JSF, através

do suporte a Skins.

Este framework disponibiliza aos desenvolvedores duas tag libraries, a Core

Ajax, geralmente referenciada pelo prefixo “a4j”, que contém componentes para

configurar requisições AJAX nas páginas; e a UI, comumente referenciada pelo prefixo

“rich”, que dispõe de recursos para adicionar características de interfaces ricas a

aplicações JSF. Pode-se utilizar o RichFaces em aplicações JSF sem maiores

dificuldades a partir da importação de algumas bibliotecas para o projeto e da

realização de algumas configurações no arquivo descritor de implantação da aplicação,

o “web.xml”.

2.2.1.2. Facelets

Nas primeiras versões do JSF, 1.1 e 1.2, a tecnologia padrão para definição da

camada de view era o JSP. Porém o Facelets surgiu como uma forte alternativa ao

padrão estabelecido, de modo a proporcionar bastantes vantagens quando usado junto

ao JSF. A prova do reconhecimento dessas vantagens foi a adoção desta tecnologia

como padrão para definição da camada de visão do JSF na versão 2.0.

1 <servlet>

2 <servlet-name>Faces Servlet</servlet-name>

3 <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>

4 <load-on-startup>1</load-on-startup>

5 </servlet>

6 <servlet-mapping>

7 <servlet-name>Faces Servlet</servlet-name>

8 <url-pattern>/faces/*</url-pattern>

9 </servlet-mapping>

Page 30: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

21

O Facelets é uma linguagem de declarativa desenvolvida e apropriada para a

construção da camada de visão do JSF. Entre as principais características

relacionadas a esta tecnologia estão as seguintes: uso do XHTML como formato dos

arquivos referentes às páginas web criadas; possibilidade de elaborar, de forma

prática, templates para componentes e páginas; possibilidade de criar e reusar

componentes compostos por outros; disponibilização de uma tag library própria para

uso complementar aos componentes JSF; amplo suporte à linguagem de expressão e

ao uso de componentes AJAX, adaptação; ampla adaptabilidade ao ciclo de vida JSF;

entre outros.

Dentre as vantagens do uso dessa tecnologia, pode-se citar a capacidade de

promover o reuso de código através de templates e da composição de componentes; o

menor tempo necessário para a compilação e melhor performance na renderização de

componentes em relação ao JSP; a independência em relação ao container web; a

validação de EL em tempo de compilação; a grande precisão no apontamento de erros,

de modo a facilitar a depuração. Em suma, o uso do Facelets reduz o tempo e o

esforço que precisa ser gasto no desenvolvimento e implantação [The Java EE 6

Tutorial].

2.2.2. Enterprise JavaBeans (EJB)

A tecnologia EJB propõe um ambiente diferenciado para a execução de

componentes de negócio de aplicações corporativas Java. Este ambiente é chamado

de container EJB, que é uma das partes dos servidores de aplicações corporativas em

conformidade com as especificações JEE, tais como o Jboss Application Server e o

GlassFish Server. Ele tem o papel de assumir a responsabilidade por prover

importantes serviços para os Enterprise beans – como são denominados os

componentes implementados com a tecnologia –, tais como: gerenciamento de

transações, controle de instâncias e segurança. Isso faz com que a implementação

desses serviços seja abstraída para os desenvolvedores das aplicações, de modo que

estes possam se concentrar mais em resolver problemas decorrentes da lógica de

negócio.

Um Enterprise Bean pode ser classificado em dois tipos principais, Session Bean

(Bean de Sessão) ou Message-drive Bean (Bean Orientado a Mensagem).

Page 31: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

22

2.2.2.1. Bean de Sessão

Os beans de sessão são objetos de classes implantadas no servidor que

realizam tarefas a partir de solicitações de clientes. Eles encapsulam a lógica de

negócio de uma aplicação, se responsabilizando pela execução de processos

complexos. Podem ser invocados programaticamente através de chamadas aos

métodos de suas interfaces, que podem ser locais, remotas ou web service, e podem

ser do tipo Stateful, Stateless, ou Singleton.

Um bean de sessão stateful atende às requisições de apenas um cliente,

mantendo o estado conversacional com ele, de forma que os valores de seus atributos

são mantidos entre as requisições realizadas entre a sua instanciação, provocada pela

primeira requisição, até a desconexão do cliente. Um stateless, por sua vez, é

compartilhado entre vários clientes e não mantém estado conversacional com nenhum,

de modo que, ao final da execução de cada método, os estado de seus atributos não

são mantidos.

Exceto durante a invocação de método, todas as instâncias de um bean stateless são equivalentes, permitindo que o container EJB atribua uma instância para qualquer cliente. Devido ao fato de eles poderem suportar vários clientes, beans de sessão pode oferecer uma melhor escalabilidade para aplicações que requerem um grande número de clientes [The Java EE 6 Tutorial]

Um bean de sessão do tipo singleton só tem uma instância para toda a

aplicação, a qual é a responsável por atender as requisições de todos os clientes. Este

tipo de bean mantém os estado de suas variáveis entre as requisições feitas para ele.

Beans de sessão singleton são projetados para circunstâncias em que uma instância de bean única é acessada por clientes em condições de concorrência. [The Java EE 6 Tutorial]

Vale também ressaltar que um bean stateless, bem como um singleton podem

implementar um web service, mas um stateful não.

2.2.2.2. Bean Orientado a Mensagem

Os beans orientados a mensagem são componentes que possibilitam o

processamento de mensagens de forma assíncrona por aplicações JEE. Eles

geralmente atuam como listeners de mensagens de um JMS (Java Messages Service

ou Serviço de Mensagens Java), que são enviadas por clientes. Além de mensagens

Page 32: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

23

JMS, este tipo de bean pode também processar mensagens de outros tipos de MOM

(Message-Oriented Middleware).

Diferentemente do que ocorre com os beans de sessão, os componentes

clientes não acessam os métodos de beans de mensagem diretamente, através de

interfaces. Ao invés disso, enviam mensagens por meio de um middleware, cada uma

destinada ao bean que deve processá-la. Quando a mensagem chega, o container

invoca o método onMessage do bean destinatário, que deve processá-la de acordo

com as regras de negócio da aplicação, podendo, para isso, chamar métodos

auxiliares, invocar um bean de sessão ou armazená-la no banco de dados.

2.2.3. Java Persistence API (JPA)

É fato que o uso de bancos de dados relacionais é amplamente difundido em

grande parte das aplicações de software desenvolvidas, assim como o paradigma da

programação orientada a objetos (POO) é uma tendência largamente utilizada no

desenvolvimento de sistemas. No entanto, o paradigma relacional e o orientado a

objetos possuem características e operam sobre conceitos bastante distintos, de forma

a tornar complexa as operações da POO realizadas sobre dados armazenados em

estruturas relacionais.

Considerando esse contexto, a JPA constitui-se em uma alternativa para abstrair

essa complexidade e facilitar a maneira de trabalhar com bancos de dados relacionais

dentro da programação orientada a objetos. Segundo a própria documentação oficial

da tecnologia [The Java EE 6 Tutorial], a JPA fornece um mecanismo para

desenvolvedores realizarem um mapeamento objeto-relacional e facilita o

gerenciamento de dados relacionais em aplicações Java.

O modelo da JPA é simples, elegante, poderoso e flexível, constituindo-se com

base no mapeamento objeto-relacional realizado para as entidades, que são classes

Java simples, representantes dos objetos persistentes do modelo de domínio da

aplicação. Este mapeamento é feito por meio da utilização de metadados, que podem

ser representados através de marcações feitas em arquivos de configuração XML ou

de anotações inseridas no código das entidades JPA.

A atividade de mapear entidades JPA baseia-se na idéia de configuração por

exceção, de modo que o mecanismo de persistência assume valores default para a

maioria das situações. Dessa forma, considerando o uso de valores padrão

estabelecidos pela API, são necessárias apenas declarações mínimas de metadados,

Page 33: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

24

sendo preciso declarar configurações adicionais apenas se houver a necessidade de

alterar os valores default. A seguir serão indicadas algumas anotações, as quais se

encontram definidas no pacote javax.persistence, utilizadas para realizar configurações

de mapeamento básicas em entidades JPA.

Duas anotações são essenciais e obrigatórias em uma entidade JPA: @Entity e

@Id. A primeira indica que a classe deve ser entendida como uma entidade a ser

persistida, enquanto a segunda informa qual propriedade da classe deve ser a chave

primária da tabela que representará a entidade no banco de dados. A anotação

@GeneratedValue é usada para indicar que a chave primária deve ser gerada

automaticamente. As anotações @Table e @Column especificam, respectivamente, as

propriedades de uma tabela e de uma coluna no banco de dados, tal como o nome, por

exemplo. A anotação @NotNull informa que os valores de determinada coluna não

podem ser nulos, a @Pattern define um padrão para o valores de uma coluna e a

@Transient define que o valor de determinada propriedade não será persistido. As

anotações que indicam a multiplicidade em um relacionamento entre entidades são:

@OneToOne (relacionamento “um-para-um”), @OneToMany (relacionamento “um-

para-muitos”), @ManyToOne (relacionamento “muitos-para-um”) e @ManyToMany

(relacionamento “muitos-para-muitos”). A seguir, uma figura que exibe um trecho de

código exemplificando o mapeamento de uma entidade do projeto que é objeto de

estudo desse trabalho.

Page 34: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

25

Figura 8. Exemplo de mapeamento objeto-relacional de uma entidade com anotações

A gerência do estado de persistência das entidades é feita por meio da utilização

da interface EntityManager. Ela fornece métodos para persistir novas instâncias de

entidades; buscar, mesclar ou remover instâncias de entidades persistidas, verificar se

uma instância está sendo gerenciada pelo contexto de persistência, obter objeto para

realizar transação de banco de dados, etc.

Há também um mecanismo de consultas baseado em objetos, o qual abstrai o

conhecimento a respeito de estruturas relacionais de armazenamento de dados, de

modo que, para colocar na memória entidades persistidas e seus relacionamentos, não

seja necessário conhecer colunas nem chaves estrangeiras de tabelas, por exemplo.

As consultas são expressas em JPQL, uma linguagem de consulta que é derivada de

EJB QL e possui sintaxe parecida com a do SQL, mas que não está vinculada com o

esquema de banco de dados. Essas consultas retornam resultados que são entidades,

proporcionando valiosas abstrações e permitem a consulta através de objetos do

modelo de domínio Java em vez de em tabelas do banco de dados. A figura a seguir

demonstra uma situação de uso de uma consulta JPQL que, quando executada,

retorna uma lista de objetos do domínio. A consulta seleciona somente os objetos

01 @Entity

02 public class Aluno implements Serializable {

03

04 @Id

05 @GeneratedValue(strategy=GenerationType.IDENTITY)

06 private int id;

07 @Column(unique=true)

08 private String numMatricula;

09 private String nomeDoPai;

10 @Column(nullable=false)

11 private String nomeDaMae;

12 @Column(nullable=false)

13 private TipoDeAluno tipoDeAluno;

14 @Transient

15 private boolean matriculado;

16

17 @OneToOne(optional=false)

18 private Pessoa pessoa;

19

20 @OneToMany(mappedBy="aluno")

21 private List<Matricula> matriculas;

22

23 // Métodos gets e sets omitidos nesta imagem

Page 35: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

26

persistidos da classe “Matrícula” que tiverem como valor do seu atributo “aluno” um

objeto correspondente ao que é passado como parâmetro para a consulta.

Figura 9. Exemplo de uma consulta com JPQL

O modelo de entidades móveis, que provê a possibilidade de uma entidade se

desacoplar do módulo de persistência, ser transportada via rede e manipulada em

outras aplicações ou máquinas virtuais, para depois retornar e ser re-acoplada ao

contexto de persistência, também é uma importante característica da JPA, levando em

consideração as arquiteturas cliente/servidor aplicações web e distribuídas, de um

modo geral.

Em síntese, conforme posto em [Keith e Schincariol 2006], A Java Persistence API

realmente introduziu uma nova era na persistência integrada padronizada. Ao ser

executado dentro de um container JEE, todos os benefícios de suporte do container e

facilidade de uso superior aplicam-se, mas também pode ser configurado para ser

executado fora do contêiner, em ambientes JSE.

01

02 Query query = em.createQuery("select m from Matricula m where " +

03 "m.aluno=:aluno order by m.data desc");

04

05 query.setParameter("aluno", aluno);

06 List<Matricula> matriculas = query.getResultList();

07

Page 36: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

27

3. ESTUDO DE CASO

Neste capítulo serão abordadas questões a respeito do ciclo de desenvolvimento

do projeto Soft Educ GCI, considerando-se os seguintes fatores: 1) o contexto que

motivou a realização do projeto; 2) a organização dos stakeholders em torno de

valores, princípios e práticas próprios de processos de desenvolvimento ágeis; 3) o

escopo definido e os requisitos estabelecidos; 4) as tecnologias e as ferramentas

utilizadas no processo; 5) os mecanismos utilizados para gerir o projeto; 6) a

arquitetura proposta para o sistema, o projeto e implementação de suas

funcionalidades; e 7) os resultados obtidos no trabalho.

3.1. Contextualização do Projeto

Como mencionado na introdução deste trabalho, o projeto Soft Educ GCI consiste

na construção de uma estrutura de software apropriada para auxiliar na execução de

atividades próprias do fluxo de trabalho do Centro de Idiomas FUNCERN. No início do

projeto, entre os meses de setembro e dezembro de 2010, quando o projeto estava

associado a disciplina de PDSC, mencionada na sessão 1.1, a equipe de

desenvolvedores era formada por cinco desenvolvedores. A partir da segunda fase do

desenvolvimento, iniciada em março de 2011, quanto o projeto já não se situava mais

no contexto da disciplina de PDSC, a equipe teve o número de integrantes reduzido

para três.

Nos primeiros contatos entre a coordenação do Centro de Idiomas FUNCERN,

representada pela pessoa do senhor Fernando Ferreira Carneiro Filho, e o grupo de

estudantes, houve, por parte da instituição, demonstração de insatisfação com o

aparato informacional utilizado para auxiliar na execução das atividades próprias de

seu processo organizacional, bem como a expressão de um desejo nítido de evoluir em

relação a esse contexto. Com isso, a representação do grupo de desenvolvedores, o

qual estava envolvido na conjuntura da disciplina mencionada anteriormente, propôs

trabalhar, durante os três meses seguintes, no intuito de criar soluções computacionais

para tentar resolver os gargalos existentes na estrutura informacional da organização.

Durante a fase imediatamente anterior ao início do projeto, quando ocorreram os

diálogos pré-eliminares, a equipe de desenvolvimento colheu e documentou várias e

importantes informações referentes ao processo de negócio da organização e aos

Page 37: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

28

softwares utilizados para administrar e manter esse processo. Buscou-se observar,

com uma óptica abrangente, as características dos sistemas, o que era positivo e

negativo em relação ao uso deles, as inconveniências que geravam para a manutenção

do fluxo de trabalho organizacional.

Foi notado que, essencialmente, eram utilizados dois sistemas na instituição. Um

deles, uma aplicação web para sorteio de vagas nas turmas de 1º nível dos cursos

oferecidos. Tal sistema permitia a realização de inscrições via web dos candidatos

interessados pela vagas, e, após período de inscrições, promovia o sorteio das vagas

entre os inscritos. O outro, um sistema cliente/servidor que, no cliente, executava em

ambiente desktop, era utilizado para controle interno da coordenação, dos cursos, das

turmas e dos alunos da organização.

Logo se percebeu que esses sistemas não ofereciam condições de uso

satisfatórias, e que não atendiam devidamente as demandas geradas pelas

necessidades do processo de trabalho na coordenação dos cursos de idiomas. Foram

constatadas nítidas dificuldades para operar e manter os dois sistemas, de modo a

justificar a insatisfação dos usuários.

A seguir, é feita a listagem e a descrição dos problemas encontrados pelo grupo

de desenvolvedores do Soft Educ GCI quanto ao aparato informacional então utilizado

para apoiar as atividades do Centro de Idiomas FUNCERN. Na sequência do conteúdo

desta seção, o sistema que realiza sorteio das vagas para as turmas de 1º nível será

chamado de “sistema I” e o sistema usado para controle interno de cursos, turmas e

alunos será referenciado como “sistema II”.

Falta de integração entre os sistemas utilizados. O sistema I e o sistema II

não estabeleciam nenhuma forma de comunicação entre eles. Os dados

inseridos no sistema I, na inscrição de um candidato para o sorteio, por

exemplo, não eram reaproveitados pelo sistema II durante a realização da

matrícula de um candidato sorteado. Isso gerava uma demanda de trabalho

desnecessária para efetivar matrículas dos candidatos sorteados, pois os dados

deles, que deveriam ser recuperados, eram redigitados pelos funcionários. Tal

situação provocava também maiores tempos de espera das pessoas por

atendimento, deixando insatisfeitos os clientes que procuravam se matricular no

1º nível dos cursos.

Page 38: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

29

Dificuldades e falta de autonomia para operar o sistema I. O coordenador da

organização não possuía autonomia para operar diretamente na coordenação

das funções do sistema I. A cada novo semestre, ele tinha que recorrer à

pessoa responsável pelo desenvolvimento do sistema, para que esta pudesse

executar suas funcionalidades: abrir período de inscrições, gerar relatórios de

inscrições, realizar sorteio de vagas, gerar documento com listagem de

sorteados. Essa situação era pouco cômoda e confortável para a organização.

O sistema II não atendia a várias demandas importantes para os usuários.

Foi constatado que o sistema II não oferecia suporte apropriado a vários

procedimentos do fluxo de trabalho na organização. Como exemplos disso,

podem ser enumeradas as seguintes situações: 1) Não possibilitava um controle

específico para as provas de nivelamento realizadas, e os resultados dos alunos

nessas provas não eram registrados; 2) Não possibilitava listar os alunos de

uma turma com seus respectivos contatos (telefones e e-mail), o que dificultava

o trabalho quando havia necessidade de comunicar algo a estes alunos

rapidamente, como no caso do adiamento de uma aula; 3) Não promovia um

tratamento adequado quanto ao número de vagas remanescentes, nas turmas,

para alunos bolsistas e para alunos pagantes, uma vez que o sistema tratava de

modo indiferente estes dois tipos de alunos; 4) O procedimento de matrícula não

permitia o registro da opção de pagamento do cliente de acordo com todas as

formas de pagamento previsíveis na instituição, de modo que, inúmeras vezes,

os dados do pagamento eram registrados de maneira incompatível com a

realidade e recibos de pagamento eram emitidos com dados incorretos, o que

dificultava o controle de pagamentos; 5) Não era disponibilizada, para o usuário,

informações indicando se o aluno havia sido aprovado ou reprovado, ou havia

cancelado a matrícula nas turmas pelas quais passou.

Sistema II apresentava grande número de bugs. Eram vários os erros

observados no funcionamento do sistema II, entre eles: 1) Inconsistências na

contagem das vagas disponíveis nas turmas quando alunos eram transferidos

de uma turma para outra; 2) Algumas telas e botões não funcionavam; 3)

Durante a execução de alguns fluxos de atividades, o sistema “travava” e tinha

que ser fechado.

Page 39: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

30

Interface gráfica do sistema II pouco clara e intuitiva aos usuários. Os

conceitos se confundiam na apresentação das telas do sistema, o que tornava

difícil o entendimento e a execução de várias funcionalidades, dificultando o

trabalho dos usuários, principalmente dos que eram pouco experientes. Além

disso, havia diversas funcionalidades que os usuários nunca entenderam ou

utilizaram.

Figura10. Exemplo da falta de clareza e de intuitividade na interface gráfica do sistema II

Figura 11. Exemplo de componente de interface gráfica do sistema II que apresenta um funcionalidade nunca compreendida pelos usuários

Page 40: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

31

Sistema II apresentava graves falhas de segurança. As credenciais de

acesso eram compartilhadas por todos os usuários, e todos tinham

possibilidades de acessar qualquer funcionalidade disponível no sistema. Isso

permitia que qualquer pessoa, ao acessar o sistema, pudesse violar informações

importantes, deixando os dados do sistema inconsistentes. Para reforçar o

ambiente de insegurança, existia uma tela que aparentemente permitia a

manipulação do banco de dados através de comandos SQL, o que poderia

representar um potencial risco a segurança dos dados. Somando-se a esses

problemas, não havia nenhum mecanismo de auditoria para registrar as ações

realizadas, vinculando-as aos usuários que as efetivaram e às datas em que

ocorreram.

Figura 12. Tela do sistema II que aparenta permitir manipulação de dados através de comandos SQL

O sistema II era pouco flexível/configurável. Para realizar configurações

simples, que deveriam estar disponíveis para os usuários, era necessário

Page 41: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

32

recorrer a serviços de manutenção realizada pelo responsável pelo

desenvolvimento do sistema.

Dificuldades para obtenção de serviços de manutenção no sistema II. O

serviço de manutenção do software não respondia de forma rápida, eficaz e

eficiente às requisições feitas pela coordenação dos cursos de idiomas.

Não havia solução informacional dedicada a facilitar a comunicação entre

coordenação, professores e alunos. Não havia, por exemplo, a possibilidade

de os professores das turmas lançarem notas e freqüências dos alunos

diretamente em um sistema, nem a de os alunos consultarem suas notas e

freqüência via internet.

3.2. Aplicação de Processo Baseado em Metodologias Ágeis

Decidiu-se que o processo de desenvolvimento do projeto Soft Educ GCI tomaria

como base valores, princípios e práticas propostos por metodologias ágeis de

desenvolvimento de software. Essa decisão tinha o principal objetivo de fazer com que

às mudanças ou acréscimos de requisitos sugeridos pelo cliente pudessem ser

processados e incorporados ao software com rapidez e eficiência. Também se

pretendia maximizar a produtividade do trabalho da equipe, de modo a não permitir que

a documentação exigida por processos mais tradicionais e menos flexíveis fossem uma

barreira à entrega de software funcional ao cliente. Portanto buscou-se estabelecer um

processo compatível com as características do grupo de desenvolvedores, baseando-

se no ciclo de vida do Scrum, e incorporando outras características fundamentadas no

manifesto ágil e no XP.

Inicialmente foi prevista para o processo uma fase pré-eliminar ao sprints de

desenvolvimento, uma espécie de concepção, na qual seriam tomadas decisões

arquiteturais e tecnológicas básicas, e realizadas algumas reuniões entre o time de

desenvolvedores e o product owner, a fim de elucidar requisitos do sistema e

documentar as funcionalidades pretendidas. Durante esta fase foi construído um plano,

o product backlog, que continha as funcionalidades e características pretendidas e uma

previsão do calendário de sprints. Também se definiu o conjunto de tecnologias e

ferramentas que seriam utilizados no início do desenvolvimento, e a 1ª versão do

modelo de domínio do sistema.

Page 42: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

33

Quanto aos papéis dentro do time do projeto, decidiu-se que o coordenador do

centro de idiomas, Fernando Carneiro, seria o product owner, ou seja, o principal

representante do cliente e dos usuários do sistema. Em relação aos desenvolvedores,

foi proposto um mecanismo de auto-organização, no qual todos deveriam contribuir no

planejamento e no monitoramento e controle das atividades, emitindo suas opiniões

para serem discutidas entre o grupo. A cada novo sprint, o papel de scrum master seria

alternado entre os integrantes da equipe. O fragmento textual a seguir, extraído do

plano de desenvolvimento de software do projeto, relata sobre a proposta inicial de

estrutura organizacional e responsabilidades.

Toda a equipe de desenvolvimento estará em ordem hierárquica equivalente e deverá trabalhar de forma cooperativa, tentando contribuir, sempre que necessário, para resolver as dificuldades dos companheiros, visando sempre o melhor para o coletivo. Os valores comunicação, proatividade, criatividade, respeito, coragem e companheirismo deverão basear as relações dentro da equipe de desenvolvedores e entre a equipe e os demais stakeholders. A cada sprint a equipe deverá alternar o scrum master, o qual terá, além das atividades de desenvolvedor, a responsabilidade adicional de conduzir as reuniões do grupo durante o sprint, orientar e monitorar o trabalho, cobrar resultados do grupo e resolver conflitos internos. Todos os desenvolvedores deverão ter suas opiniões consideradas para as decisões tomadas durante o processo. Tais decisões de planejamento, estratégia e controle devem ser estabelecidas a partir do diálogo da equipe em reuniões de planejamento, de revisão ou de retrospectiva de sprint.

[Plano de Desenvolvimento Software Soft Educ GCI]

Em geral, o planejamento do projeto prevê sprints com duração de 4 semanas, de

modo que o objetivo principal, ao final de cada sprint, é entregar um incremento no

software, através da instalação e disponibilização de uma nova versão funcional do

sistema para que os usuários possam experimentar e produzir feedback.

O início de cada sprint é marcado por uma reunião de planejamento entre

desenvolvedores e o product owner, na qual as prioridades são reavaliadas dentro do

contexto do projeto e são decididas quais funcionalidades e características devem ser

incorporadas ao software durante a iteração. Após isto, há uma nova reunião

envolvendo somente os desenvolvedores, quando são formuladas e estimadas as

atividades necessárias para se atingir o objetivo do sprint. Os dados das atividades são

registrados na ferramenta utilizada para gerenciar o projeto, o Assembla.

Os desenvolvedores trabalham em um mesmo ambiente e, a cada dia de

trabalho, durante o sprint, ocorre uma reunião curta (cerca de 15 minutos) entre eles,

Page 43: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

34

na qual cada um expõe sobre o andamento de sua atividade. Algumas atividades, as

de maior prioridade, são atribuídas aos desenvolvedores no planejamento do sprint,

outras são atribuídas ao longo da iteração. Caso a equipe observe que é necessária

uma nova atividade que não foi prevista no planejamento inicial, ela deverá ser

integrada ao sprint backlog durante a execução do sprint. Ao final de cada expediente

de trabalho, os desenvolvedores devem reportar, no Assembla, os avanços obtidos ou

dificuldades encontradas na realização de suas atividades e atualizar o tempo estimado

para a conclusão delas. A partir desta atualização do tempo estimado, o Assembla

constrói o gráfico de sprint burndown, um importante instrumento de observação da

curva de desempenho da equipe ao longo a iteração.

Figura 13. Exemplo de gráfico de sprint burndown do projeto Soft Educ GCI

A equipe trabalha integrando diariamente o código que produz, através do

sistema de controle de versões SVN. O código produzido é de propriedade coletiva e o

uso de alguns padrões de codificação pré-estabelecidos é estimulado e recomendado

dentro do time. Também é recomendado que o código produzido seja simples, claro e

expressivo tanto quanto o possível, e, frequentemente, são realizadas atividades de

refatoração.

Page 44: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

35

Semanalmente, ao menos uma vez, representantes da equipe reúnem-se com o

product owner ou com usuários do sistema para demonstrar os resultados parciais do

trabalho de um sprint, tirar dúvidas relacionadas a regras de negócio, ou questionar

sobre preferências quanto a aspectos da interface gráfica e da interação usuário-

sistema. Dessa forma é possível colher feedback de forma rápida e promover a

evolução do software baseado na evolução dos conceitos dos usuários em relação ao

sistema, que ocorre na medida em que o software passa de algo abstrato, contido

somente no plano das idéias, para algo mais concreto e utilizável. Este modelo de

relacionamento entre desenvolvedores e usuários tende a deixar os usuários mais

satisfeitos.

Ao final de cada sprint é realizada uma reunião que marca a entrega da versão ao

product owner. Nela, representantes da equipe de desenvolvimento apresentam os

resultados finais do sprint, e entregam o relatório de atividades, que é exigência do

cliente. O product owner, por sua vez, avalia o que foi cumprido e o que não foi em

relação aos objetivos esperados para o marco, tendo a liberdade para emitir suas

opiniões em relação ao trabalho dos desenvolvedores. Após isso, a instalação da

versão, no servidor de testes, é providenciada.

Após a reunião com o product owner, para apresentar os resultados da iteração, é

realizada uma reunião de retrospectiva de sprint somente entre os membros do time de

desenvolvimento. Nela devem ser relembrados os pontos positivos e negativos que se

destacaram durante o sprint. Propõe-se uma reflexão sobre que ajustes no

comportamento do time poderiam produzir aumento da efetividade e da eficiência.

Discuti-se o que deve ser acrescentado ao processo ou removido dele. Essa

retrospectiva faz-se no intuito de promover a melhoria continua do processo, do

ambiente de trabalho e do relacionamento entre os integrantes da equipe.

Conforme descrito ao longo dessa seção, a estrutura do processo de

desenvolvimento do projeto Soft Educ GCI e o conjunto de práticas relacionadas

demonstram uma organização profundamente relacionada às idéias propostas pelas

metodologias ágeis. No entanto, algumas práticas essencialmente defendidas por esse

tipo de metodologia não foram incorporadas ao desenvolvimento do projeto.

Como exemplo de uma prática ágil não aplicada, pode-se citar a automatização

de testes. Essa prática é extremamente importante e útil, mas não foi integrada ao

projeto por falta de qualificação técnica da equipe. Nenhum integrante do time tinha

domínio de ferramentas e técnicas que possibilitassem aplicá-la e ainda não foi

Page 45: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

36

possível dedicar tempo o suficiente para que alguém do time se capacitasse para isso.

A não utilização de testes automatizados no processo representa uma falta que é

bastante sentida por todos os desenvolvedores, pois torna mais difícil validar a

correção das funcionalidades implementadas e deixa o sistema mais vulnerável a

introdução de bugs. Assim sendo, almeja-se integrar essa prática ao processo o quanto

antes, já tendo sido, inclusive, realizadas atividades com o objetivo de estudar e

experimentar ferramentas de testes automatizados.

3.3. Escopo e Requisitos do Sistema

Com fins de resolver os problemas mencionados na seção 3.1 deste trabalho, o

escopo do projeto Soft Educ GCI consiste na elaboração de um sistema informacional

integrado, apresentando-se em três módulos distintos para os seus usuários: o módulo

coordenação, acessível para o coordenador dos cursos de idiomas, funcionários e

bolsistas que desempenham atividades na secretaria da coordenação; o módulo

público, acessível para qualquer usuário da web; e o módulo acadêmico, acessível

para professores e alunos da organização. A descrição dos escopos de cada módulo,

bem como dos seus requisitos funcionais e não funcionais serão apontados nas sub-

seções a seguir.

3.3.1. Módulo Coordenação

O módulo coordenação é o mais completo e complexo do sistema e propõe

atender as demandas das atividades fundamentais para a organização, manutenção e

controle da estrutura dos cursos de idiomas oferecidos. A seguir, estão descritos os

requisitos funcionais referentes a este módulo.

RF 01- Gerência de usuários. Possibilidade de cadastrar novos usuários do

módulo coordenação, atribuindo a eles um papel de usuário, e permitindo que

utilizem as funcionalidades do sistema disponíveis de acordo com papel que

exercem. Deve ser possível também listar os usuários cadastrados e pesquisá-los

a partir de seus nomes ou CPF, bem como visualizar e editar os dados deles ou

desativá-los, removendo o direito de acesso deles ao sistema.

RF 02- Gerência de professores. Possibilidade de cadastrar novos professores

para os cursos de idiomas, de listar os professores cadastrados, de pesquisá-los

a partir de seus nomes ou CPF, de visualizar e de editar os dados deles, e de

Page 46: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

37

desativá-los, não permitindo que sejam associados a uma nova turma

configurada.

RF 03- Gerência de cursos. Possibilidade de cadastrar novos cursos, de listar os

cursos cadastrados, de editar os nomes ou número de níveis deles e de desativá-

los. O cadastro e a edição de um curso só dever ser possível quando não houver

um semestre em andamento.

RF 04- Abertura e configuração de semestre letivo. Possibilidade de configurar

dados relativos a um novo semestre de aulas, registrando as datas importantes, a

quantidades de vagas disponíveis nas turmas para os diferentes tipos de alunos,

e os custos dos cursos. Após registrados, os dados do semestre devem poder ser

alterados no sistema. Na abertura de semestre também devem ser criadas as

turmas disponíveis para o semestre.

RF 05- Configuração de turmas. Possibilidade de atribuir um professor a uma

turma, indicar o local, os dias e os horários de aulas. Só devem poder ser

associados a uma turma professores do curso correspondente a turma.

RF 06- Listagem dos alunos de uma turma. Possibilidade de listar todos os

alunos de uma Tuma com seus respectivos telefones para contato e e-mail.

RF 07- Gerência de inscrições para sorteio. Possibilidade de consultar

inscrições realizadas para sorteio das vagas das turmas de 1º nível do semestre

corrente. Deve permitir listar inscritos de cada turma separadamente e fazer

pesquisas de inscrições com dados iguais ou semelhantes. Também deve

possibilitar o cancelamento de inscrições.

RF 08- Gerência de sorteios. Possibilidade de visualizar relatório de demanda

para as vagas remanescentes nas turmas de 1º nível, de realizar 1 ou mais

sorteios destas vagas, de visualizar listagem de sorteados e de gerar arquivo PDF

com tal listagem.

RF 09- Gerência de provas de nivelamento. Possibilidade de cadastrar sessões

de provas de nivelamento, de listar as sessões de provas de nivelamento

cadastradas no semestre corrente, de editar os dados delas e de excluí-las. Só

devem poder ser excluídas sessões de provas de nivelamento que ainda não

tiverem nenhum candidato inscrito. O sistema também deve possibilitar a listagem

dos inscritos em uma sessão.

Page 47: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

38

RF 10- Inscrição de candidatos a nivelamento. Possibilidade de inscrever

candidatos a nivelamento, associando-os a uma sessão de nivelamento

cadastrada e gerando um recibo de inscrição.

RF 11- Registro e consulta a resultados em provas de nivelamento.

Possibilidade de registrar o nível de certificação atingido para cada candidato

inscrito em uma sessão de nivelamento, bem como de consultar esses registros a

partir da pesquisa pelo nome ou CPF da pessoa que realizou a prova.

RF 12- Gerência de alunos. Possibilidade de cadastrar novos alunos, de

pesquisar os alunos cadastrados através de seus nomes ou CPF, de visualizar e

de editar os dados deles.

RF 13- Matrícula de aluno. Possibilidade de vincular um aluno a uma turma,

registrando os dados de pagamento e gerando um recibo de matrícula ao final do

processo. Para uma pessoa ser matriculada em uma turma, ela deve estar em

conformidade com pelo menos um dos seguintes requisitos: ter sido previamente

cadastrada no sistema, ter sido sorteada para uma vaga de uma turma de 1º nível

de um dos cursos, ou ter obtido uma certificação em uma prova de nivelamento.

O sistema deve possibilitar também o cancelamento de uma matrícula.

RF 14- Transferência de alunos entre turmas. Possibilidade de transferir alunos

matriculados em uma turma para outra turma do mesmo curso e de mesmo nível.

Após realização de transferências devem ser gerados comunicados de

transferência.

RF 15- Histórico do aluno. Possibilidade de observar as turmas pelas quais um

aluno passou e visualizar se o aluno foi aprovado, reprovado ou cancelou a

matrícula em cada turma. Também deve ser disponibilizado o histórico de

transferências do aluno.

RF 16- Controle de notas e freqüência. Possibilidade de registrar a presença ou

o número de faltas dos alunos de uma turma a cada aula, e de inserir as notas

dos alunos em cada avaliação. Deve-se permitir indicar que as atividades de uma

turma foram concluídas, para, quando isso acontecer, o sistema informar se os

alunos daquela turma foram aprovados ou reprovados, de acordo com as notas e

a freqüência deles.

RF 17- Certificados de aprovação. Possibilidade de gerar arquivo PDF com

certificados para os alunos aprovados nas turmas de um semestre letivo.

Page 48: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

39

RF 18- Folhas de registro. Emissão de documentos contendo uma lista

enumerada com todos os alunos aprovados durante um semestre letivo.

Dos dezoito requisitos funcionais previstos para este módulo, quinze já foram

implementados, representando mais de 80% do total. Já em relação aos requisitos não-

funcionais, foram previstos dois, os quais estão descritos a seguir. Deles, apenas o

primeiro já está implementado.

RNF 01- Autenticação e autorização de acesso a funcionalidades.

Necessidade de o usuário estar autenticado no sistema para poder acessar

qualquer funcionalidade. Cada usuário deve ter suas próprias credenciais de

acesso, login e senha, sendo que não pode haver dois usuários como o mesmo

login. Quando o usuário autentica-se, o sistema deve identificar o papel que o

usuário exerce no sistema e autorizar o acesso dele somente às funcionalidades

disponíveis para o papel associado.

RNF 02- Auditoria de ações importantes. Registro da data e do horário de em

que determinadas ações foram executadas no sistema, bem como do usuário

responsável pela realização da ação.

3.3.2. Módulo Público

O módulo público dedica-se exclusivamente a proporcionar, ao público em geral,

a possibilidade de se inscrever para o sorteio às vagas das turmas de 1º nível dos

cursos oferecidos. O único requisito para este módulo é o seguinte:

RF 19- Inscrição para Sorteio. Possibilidade de realização de inscrições de

candidatos para concorrer a sorteio das vagas nas turmas de 1º nível

disponibilizadas no semestre corrente. O sistema só deve permitir que o

candidato possa escolher uma turma. Após a realização de uma inscrição, o

sistema deve permitir a geração de um comprovante de inscrição, indicando a

turma para qual se inscreveu, a data de divulgação da 1ª chamada e a de

matrícula. As inscrições só devem ser permitidas em um dado período, que deve

ser pré-configurado durante a abertura do semestre letivo, no módulo público.

Page 49: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

40

Este requisito RF 19 já está implementado, e este módulo não apresenta

requisitos não funcionais.

3.3.3. Módulo Acadêmico

O módulo acadêmico constitui-se em uma ferramenta para os professores

registrarem informações quanto ao andamento das aulas nas turmas, à freqüência e às

notas dos alunos, a fim de que estes possam acessar essas informações via internet.

Dentre os requisitos funcionais para este módulo, está o requisito RF 16, descrito na

seção 3.3.1. Os demais, que ainda não foram descritos, são:

RF 20- Boletim. Possibilidade de os alunos acessarem seus boletins através do

sistema.

RF 21- Relatório de Aulas. Possibilidade de os alunos observarem a lista de

aulas já lecionadas com suas respectivas datas, conteúdos ministrados, e a

informação do número de faltas do aluno em cada dia de aula.

A implementação do módulo acadêmico ainda não foi iniciada e está prevista para

começar no mês de agosto de 2011, conforme o planejamento do projeto entregue ao

cliente. Sendo assim, os professores e alunos da organização ainda não estão

utilizando o sistema. Os requisitos não funcionais previstos para este módulo são os

mesmos previstos para o módulo coordenação (RNF 01 e RNF 02).

3.4. Ferramentas e Tecnologias Aplicadas

No intuito de gerenciar as atividades e as informações do projeto, a principal

ferramenta escolhida para esta finalidade foi o Assembla (http://www.assembla.com),

conforme já havia sido mencionado na seção 3.2 deste trabalho. No entanto, a equipe

também se utilizou de outras ferramentas auxiliares para apoiar a comunicação e o

compartilhamento de informações, quais sejam o Google Groups, o Google Docs e o

Gmail. Em síntese, no Assembla era registrado o planejamento das iterações, a

descrição e os prazos das atividades e as informações referentes aos resultados delas.

Enquanto isso, os serviços do Google eram utilizados principalmente para enviar

rapidamente mensagens a todos os membros do grupo e para compartilhar

documentos relacionados a controle de bugs, controle de acesso a funcionalidades e

cronograma do projeto, por exemplo.

Page 50: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

41

Como sistema de controle de versionamento dos arquivos do projeto, adotou-se o

SVN, por meio de serviço disponibilizado pelo Assembla, que fornece uma interface

gráfica amigável para observar a evolução das versões dos arquivos inseridos no

repositório e para acompanhar os commits, suas descrições e mudanças que

realizaram.

Foi decidido que o sistema seria implementado utilizando-se a linguagem Java

versão 6 e as tecnologias da plataforma JEE que foram explicadas na seção 2.2 deste

trabalho. A JPA foi utilizada para promover o mapeamento objeto-relacional e

simplificar o mecanismo de comunicação entre a aplicação e a camada de persistência;

O EJB 3.0 foi usado com a finalidade de encapsular a lógica de negócios e a interação

com o banco de dados, obtendo as vantagens fornecidas pelo container EJB; E o JSF

1.2 foi empregado de forma integrada ao RichFaces 3.3 e ao Facelets, para construir

as interfaces web do sistema e programar a interação cliente-servidor via web. O

servidor de aplicações coorporativas escolhido para executar o sistema foi o JBoss

Application Server versão 5.1. Quanto ao Sistema de Gerenciamento de Banco de

Dados para hospedar o banco de dados da aplicação, optou-se pelo PostgreSQL

versão 8.4.

Procurou-se padronizar a instalação dos softwares nas estações de trabalho dos

desenvolvedores e configurar ambientes de desenvolvimento homogêneos para os

membros da equipe, a fim de evitar problemas de incompatibilidade de recursos

consumidos ou produzidos. Nesse sentido, o time decidiu usar o sistema operacional

Ubuntu, na versão 10.04 - 32 bits, e a IDE Eclipse Helios com os plugins Subversive,

para integração com o SVN, e JBoss Tools, para facilitar o trabalho com as tecnologias

associadas a plataforma JEE.

Para a produção e edição de imagens foram utilizadas principalmente as

ferramentas GIMP, Inkscape e Pixlr Editor. Para a produção de artefatos de

modelagem do sistema, utilizou-se o Astah Community e o OpenOffice Draw. O

Windows 7 foi empregado como sistema operacional alternativo. Os programas do

pacote Microsoft Office foram utilizados na produção de documentos de texto

formatado e de apresentações de slides.

3.5. Arquitetura e Modelagem do Sistema

Conforme explicado na seção 3.3, os requisitos funcionais do projeto Soft Educ

GCI estão subdivididos em três módulos distintos, e é desta forma que o software deve

Page 51: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

42

se apresentar para seus usuários. Com o intuito de atender as demandas desses

requisitos modulares, e considerando às tecnologias da plataforma JEE utilizadas e os

conceitos relacionados às mesmas, abordados na seção 2.2 deste trabalho, propôs-se,

para a implementação do sistema, uma solução arquitetural baseada em componentes

que será detalhada ao longo desta seção. Observe-se que, como foi dito anteriormente,

o módulo acadêmico ainda não começou a ser desenvolvido, e por isso esta seção não

abordará aspectos arquiteturais relacionados a este módulo em específico.

Antes de se analisar a arquitetura com base na visão de componentes, a qual

retrata a relação entre os principais componentes lógicos, será brevemente explicada a

visão de casos de uso do sistema, que relaciona os atores (usuários) às

funcionalidades que eles poderão acessar. Para os diagramas apresentados nas

figuras 14-a, 14-b e 15, os casos de uso representados com fundo colorido são os que

já estão implementados no sistema, enquanto os que não possuem cor de fundo são

os que ainda não foram implementados.

As figuras 14-a e 14-b constituem o diagrama de casos de uso do Módulo

Coordenação. Neste módulo percebem-se trinta e seis casos de uso, dos quais trinta e

três já foram implementados. Quanto aos atores, pode-se notar que o Coordenador

herda do Secretário, e este herda do Bolsista, de modo que o primeiro deve ter acesso

a todos os casos de uso do módulo; o segundo, a vinte e três; e o terceiro a apenas

dezesseis deles.

Page 52: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

43

Figura 14-a. Primeira parte do diagrama de casos de uso do Módulo Coordenação

Page 53: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

44

Figura 14-b. Segunda parte do diagrama de casos de uso do Módulo Coordenação

Quanto ao Módulo Público, foram propostos apenas dois casos de uso, que

devem poder ser acessíveis, por meio da utilização de um browser, para qualquer

pessoa conectada a internet.

Figura 15. Diagrama de casos de uso do Módulo Público

Page 54: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

45

Em relação à visão lógica do sistema, o diagrama representado pela figura a

seguir expõe os principais componentes relativo à implementação do sistema, e a

forma como eles se relacionam.

Figura 16. Organização arquitetural dos componentes do sistema Soft Educ GCI

A princípio, o diagrama da figura 16 apresenta dois componentes que não foram

desenvolvidos pela equipe do projeto, mas que constituem o ambiente de instalação e

execução do sistema. Estes componentes são: o servidor de aplicações coorporativas

Jboss Application Server, necessário para a instalação e execução do arquivo

Enterprise (EAR) que empacota os módulos implementados do sistema; e o Sistema de

Gerenciamento de Banco de Dados PostegreSQL na versão 8.4, necessário para

executar o banco de dados da aplicação. Tal banco de dados é representado no

diagrama pelo componente denominado “softEduc_GCI_BD”.

Quanto aos componentes representados dentro do container de aplicações

coorporativas, eles representam os módulos do sistema da forma como são

apresentados na IDE utilizada.

O “softEduc_GCI_modelo” é a unidade que encapsula as classes referentes ao

modelo de domínio da aplicação, as entidades JPA. Nele está compreendida a

implementação das dezesseis entidades do modelo de domínio do sistema e de seus

Page 55: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

46

respectivos mapeamentos objeto-relacional. Estas classes e seus atributos persistentes

estão documentados no diagrama a seguir:

Figura 17. Diagrama de modelo de domínio do sistema Soft Educ GCI

Ainda referindo-se à figura 16, pode-se notar que todos os demais componentes

representados dentro do “Jboss A. S.” têm dependência em relação ao componente

“softEduc_GCI_modelo”, indicando que eles devem conhecer as classes do modelo,

Page 56: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

47

pois devem ter a possibilidade realizar operações envolvendo atributos e métodos

delas.

O componente “softEduc_GCI_core” representa a unidade que contém os

Enterprise beans da aplicação. Como foi explicado outrora, Enterprise beans são

classes que encapsulam a lógica de negócio da aplicação e se utilizam de diversos

serviços oferecidos pelo container EJB. Essa unidade está dividida em dois pacotes

principais: “fachada” e “negocio”.

O pacote “negocio” comporta os treze beans de sessão responsáveis por

implementar o núcleo da lógica de negócio da aplicação. Comporta também suas

respectivas interfaces locais, as quais têm a função de declarar os métodos dos beans

que devem estar disponíveis para serem invocados por outros componentes

executados dentro do mesmo servidor de aplicações. É também nos Enterprise beans

do pacote “negocio” que o contexto de persistência das entidades JPA do sistema é

gerenciado. Nos métodos destes beans são realizados os comandos de manipulação

do banco de dados através dos métodos disponibilizados pela interface

“EntityManager” da JPA.

Enquanto isso, o pacote “fachada”, como próprio nome sugere, implementa o

padrão de projeto fachada ou facade. Ele contém dois beans de sessão, que

representam duas fachadas, e suas respectivas interfaces. Essas fachadas têm a

função de abstrair, para os componentes web do sistema, o conhecimento dos

Enterprise beans do pacote “negocio”, no sentido de fazer com que os componentes

web necessitem conhecer somente as fachadas para utilizarem os serviços

implementados nos demais beans. Vale enfatizar que, quanto a tecnologia EJB, foram

utilizados na implementação do sistema apenas beans de sessão do tipo stateless.

Os componentes “softEduc_GCI_administrativo” e “softEduc_GCI_publico”

representam os módulos web do sistema. O primeiro disponibiliza, para os usuários, as

interfaces web com as funcionalidades do Módulo Coordenação, enquanto o segundo

disponibiliza as do Módulo Público. Estas duas unidades estão implementadas com

componentes do framework JSF, do Facelets, e do RichFaces. As estruturas dessas

unidades são similares e, de forma resumida, contêm: um conjunto de páginas no

formato XHTML com os componentes a serem processados na exibição delas; alguns

componentes responsáveis pela conversão e validação de dados oriundos de

requisições dos clientes web; um conjunto de managed beans os quais processam e

respondem às requisições recebidas; e alguns arquivos XML de configuração. Os

Page 57: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

48

managed beans funcionam como controladores das páginas web. Eles podem

manipular instâncias das classes do modelo de domínio e também podem acessar os

serviços oferecidos pelo componente “softEduc_GCI_core”. Esses serviços são

utilizados através da invocação dos métodos declarados nas interfaces

“FachadaAdministrativoLocal” e “FachadaPublicaLocal”.

Ao longo do processo não foi produzido nenhum documento de especificação de

caso de uso nem qualquer diagrama de sequência, haja vista que a equipe avaliou que

a produção destes artefatos seria muito custosa e a manutenção seria praticamente

inviável, considerando-se a abertura do processo para as mudanças desejadas pelo

cliente. Portanto fez-se prevalecer os princípios ágeis que priorizam colaboração com o

cliente, software em funcionamento e respostas a mudanças mais que negociação de

contratos e documentação abrangente.

A responsabilidade de analisar cada caso de uso e de projetar sua solução era

responsabilidade de cada desenvolvedor, desde que, na implementação da solução,

seguisse os padrões arquiteturais e de codificação estabelecidos. Foi acordado que o

planejamento das tarefas e seus resultados seriam documentados no Assembla, no

espaço da descrição ou de comentários da tarefa. Dessa forma, detalhes importantes

de um casos de uso deveriam ser documentados junto ao registro das tarefas

relacionadas ao mesmo no Assembla.

No entanto, em alguns momentos, quando se observou uma maior necessidade

de organização para desenvolver um conjunto complexo de casos de uso inter-

relacionados, a serem implementados por vários desenvolvedores, foi produzido uma

espécie de artefato sem precedentes bibliográficos conhecidos pelos membros da

equipe. Trata-se de um documento exemplificado na figura 18, o qual expressa a

navegação em relação a um conjunto de páginas web do sistema, e indica o modo

como o conteúdo dessas páginas devem se apresentar para o usuário.

Page 58: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

49

Figura 18. Exemplo de artefato que representa esquema de navegação e caracterização de interfaces do sistema

Page 59: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

50

3.6. Resultados Obtidos

Partindo-se dos problemas mencionados na 1ª sessão deste capítulo, aplicando-

se o processo de software descrito, as ferramentas e tecnologias propostas, e a

estrutura arquitetural definida, a equipe está, até o momento, obtendo êxito na

transformação dos requisitos do sistema em software funcional e conseguindo

satisfazer o cliente. Cerca de 70% da totalidade do escopo e dos requisitos previstos

para o sistema já foram implementados e o andamento do projeto está dentro do

cronograma previsto no planejamento entregue ao cliente. A parcela do sistema

implementada até o momento já está funcionando em ambiente de produção, sendo

utilizada no processo de inscrições para sorteio, sorteio de vagas das turmas de 1º

nível, e matrículas.

Na sequência desta sessão serão apresentados os resultados da implementação

dos dois casos de uso do Módulo Público e de oito casos de uso do Módulo

Coordenação, na seguinte ordem: Inscrição para sorteio de vagas para turma de 1º

nível do semestre atual (Módulo Público); Geração de comprovante de inscrição em

sorteio (Módulo Público); Cadastro, edição ou desativação de professores e Listagem

e visualização de dados de professores; Abertura e configuração de semestre letivo e

Ativação e configuração de turmas do semestre atual; Relatório de demanda de

inscrições para as vagas do sorteio, Realização de sorteio e Visualização dos

resultados do sorteio; e Matrícula de Sorteado. Para apresentar esses resultados serão

utilizadas as imagens das telas que compõem o fluxo básico de execução dos casos de

uso mencionados. Em relação a todos os casos de uso do Módulo Coordenação, deve-

se considerar que para acessá-los é necessário que o usuário esteja autenticado no

sistema.

Inscrição para sorteio de vagas para turma de 1º nível do semestre atual

(Módulo Público)

Qualquer internauta poderá acessar esse caso de uso, através do endereço da url

do Módulo Público. Caso o acesso seja realizado fora de um período de inscrições

previamente configurado, o sistema exibirá uma mensagem informando que o

formulário de inscrições está indisponível; caso contrário o sistema apresentará a

página exibida na figura 19.

Page 60: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

51

Para iniciar a inscrição, o usuário deve marcar a caixa de seleção e, em seguida,

clicar no botão “Iniciar Inscrição”, os quais estão situados na parte inferior da página.

Então o sistema deverá apresentar a página exibida na figura 20. Nesta página o

usuário deve preencher os dados do formulário, selecionar a turma na qual deseja

concorrer a uma vaga e clicar no botão enviar. Caso o dados informados no formulário

sejam validados pelo sistema, apresentar-se-á a página exibida na figura 21, na qual o

usuário poderá verificar os dados que inseriu e confirmar sua inscrição, ou então voltar

para alterar algum dado. Caso o usuário confirme sua inscrição, será exibida uma

página conforme a figura 22, mostrando uma mensagem indicando o sucesso na

realização da inscrição do candidato e disponibilizando um link com a possibilidade de

impressão de comprovante da inscrição.

Figura 19. Tela inicial do sistema de inscrições para sorteio das vagas das turmas de 1º nível

Page 61: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

52

Figura 20. Formulário de dados necessários para realizar inscrição para concorrer a sorteio

Page 62: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

53

Figura 21. Tela de confirmação de dados da inscrição para concorrer a sorteio de vagas

Figura 22. Tela indicando sucesso na realização da inscrição para concorrer a sorteio

Page 63: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

54

Geração de comprovante de inscrição em sorteio (Módulo Público)

Este caso de uso é um complemento do CDU descrito anteriormente, de modo

que o usuário só poderá acessá-lo após completar o processo de inscrição para

concorrer ao sorteio das vagas de uma turma do 1º nível, clicando no link “Imprimir

comprovante de inscrição”, exposto na página indicada na figura 22. Fazendo isso,

será aberta uma página com o comprovante de inscrição que poderá ser impresso ou

salvo pelo usuário.

Figura 23. Tela para impressão de comprovante de inscrição

Figura 24. Comprovante de inscrição para concorrer a sorteio de vagas

Page 64: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

55

Cadastro, edição ou desativação de professores e Listagem e visualização

de dados de professores

Após autenticar-se no Módulo Coordenação, usuários do tipo Coordenador ou

Secretário poderão cadastrar um professor acessando o menu “Professores” e o sub-

menu “Novo Professor”. Com isso, será apresentada uma página como a indicada na

figura 25, na qual o usuário deverá inserir os dados solicitados no formulário e clicar no

botão “Cadastrar”. Caso os dados inseridos no formulário sejam validados, será

apresentada uma página conforme a figura 26, indicando que o cadastro foi realizado

com sucesso. Para listar os professores, editar dados deles, desativá-los ou reativá-los,

o usuário deve acessar o sub-menu “Gerenciar Professores”, do menu “Professores”, e

será levado até a página representada na figura 27.

Figura 25. Formulário de cadastro de professor

Page 65: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

56

Figura 26. Tela indicando sucesso no cadastro de um professor

Na tela “Gerência de Professores”, os usuários podem desativar um professor

clicando no ícone em formato de “X”, ou reativá-lo clicando no ícone em formato de “V”.

Para editar os dados de um professor, clica-se no ícone em formato de lápis,

provocando a abertura de uma janela sobre a página, onde a edição poderá ser

realizada. A janela de edição de dados de um professor é mostrada na figura 28.

Figura 27. Tela de gerência de professores cadastrados

Page 66: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

57

Figura 28. Janela de edição de dados de um professor

Abertura e configuração de semestre letivo e Ativação e configuração de

turmas do semestre atual

Para abrir um semestre é necessário que se tenha cursos cadastrados no

sistema, e para ativar e configurar turmas é necessário que os cursos associados a

estas turmas tenham professores cadastrados. Essas ações só podem ser executadas

por um usuário do tipo Coordenador. Para abrir um semestre o usuário deve clicar no

sub-menu “Abrir Semestre”, da opção “Semestre” no menu principal. Isso levará ao

usuário para uma página a exemplo da que é indicada na figura 29. Então o usuário

preenche os campos do formulário e clica no botão “Próximo Passo”. Caso os dados

inseridos no formulário sejam validados, o sistema apresentará uma página como a

exemplificada na figura 30, onde o usuário deve inserir as informações quanto ao

Page 67: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

58

número de turmas e o material didático para cada nível dos cursos oferecidos. Após

isso o usuário deve clicar no botão “Concluir” para completar a abertura do semestre.

Figura 29. Primeiro passo para abertura de um semestre letivo

Figura 30. Segundo passo para abertura de um semestre letivo

Page 68: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

59

Ao completar a abertura de um semestre, o sistema exibe a tela exemplificada

na figura 31.

Figura 31. Tela de ativação e configuração de turmas

Figura 32. Janela de ativação e configuração de uma turma

Page 69: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

60

A página “Ativação de Turmas do Semestre Atual”, além de ser apresentada

após a conclusão da abertura de um semestre, também pode ser acessada através do

sub-menu “Ativar Turmas do Semestre Atual”, do item do menu principal “Semestre”.

Nela as turmas criadas pelo sistema a partir das informações declaradas na abertura

do semestre podem ser ativadas e configuradas. Para tanto, deve-se clicar no ícone

em formato de “V”, provocando a abertura de uma janela sobre a página, onde a turma

poderá ser configurada e ativada. Após serem ativadas, as turmas poderão ser vistas,

re-configuradas ou desativadas na página “Visualização de Turmas”, que é exibida nas

figuras 33 e 34.

Figura 33. Tela para pesquisa e listagem de turmas

Figura 34. Janela para editar dados de uma turma

Page 70: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

61

Relatório de demanda de inscrições para as vagas do sorteio, Realização de

sorteio, Visualização dos resultados do sorteio

Para visualizar relatório que aponta o número de vagas remanescentes em cada

turma de 1º nível e o número de concorrentes a estas vagas, um usuário do tipo

Coordenador deve acessar o sub-menu “Gerenciar Sorteios”, do menu “Sorteio” e clicar

no link “Clique Aqui” disponível no painel inferior da página “Gerência de Sorteios”

(figura 35). Fazendo isso, ele visualizará uma janela sobreposta a página exibindo tal

relatório, conforme exemplificado na figura 36.

Para realizar um novo sorteio, deve-se clicar no botão “Realizar Novo Sorteio”,

também disposto no painel inferior da página “Gerência de Sorteios”. Com isso, será

exibido para o usuário uma caixa de confirmação, conforme apresentado na figura 37.

Caso o usuário confirme a realização de um novo sorteio, o sistema realizará o sorteio

das vagas remanescentes entre os candidatos que estão concorrendo a elas e, após

isto, exibirá uma mensagem indicando sucesso na realização do sorteio e uma nova

linha na tabela que lista os sorteios do semestre atual, como mostrado na figura 38.

Os resultados dos sorteios realizados são acessíveis através dos links

disponibilizados nas colunas da tabela que lista os sorteios, tendo-se a possibilidade de

visualizar os resultados de cada turma individualmente (figura 39), ou o resultado de

todas as turmas no browser (figura 40) ou em um arquivo PDF.

Figura 35. Tela para gerenciar sorteios

Page 71: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

62

Figura 36. Janela com relatório de vagas disponíveis nas turmas e número de candidatos ao sorteio delas

Figura 37. Caixa de confirmação para realização de um novo sorteio

Page 72: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

63

Figura 38. Tela com mensagem indicando sucesso na realização do sorteio e exibindo lista de sorteios realizados no semestre

Figura 39. Telas de visualização dos sorteados para as vagas de uma turma

Page 73: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

64

Figura 40. Tela com resultado geral de um sorteio

Matrícula de Sorteado

Para matricular um candidato sorteado, o usuário deve acessar o sub-menu

“Buscar Sorteados”, do item do menu principal “Sorteio”. Com isso, o sistema deve

apresentar a página “Busca de sorteados”, onde o usuário deverá pesquisar o sorteado

que deseja se matricular, e, ao encontrá-lo, clicar no link “Matricular”. Então o sistema

apresentará um formulário de matrícula com os dados da inscrição do sorteado e os

campos referentes às formas de pagamento. Após concluir a matrícula, o sistema exibe

Page 74: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

65

uma página (figura 43) com uma mensagem indicando que a matrícula foi realizada

com sucesso e um link para impressão de recibo de matrícula (figura 44).

Figura 41. Tela de pesquisa de um sorteado

Figura 42. Tela com formulário para matrícula de sorteados

Page 75: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

66

Figura 43. Tela com mensagem indicando sucesso na matrícula de um sorteado

Figura 44. Tela para impressão de recibo de matrícula em duas vias

Page 76: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

67

4. CONCLUSÃO

Pode-se afirmar que o desenvolvimento do sistema para integrar as informações

referentes ao processo de negócio do Centro de Idiomas FUNCERN está bem

avançado, dentro das expectativas estimadas no planejamento do projeto. As

funcionalidades implementadas e implantadas até o momento estão validadas pelo

product owner e pelos usuários, através das várias experiências que eles tiveram

utilizando o sistema ao longo das sessões de testes e de treinamento realizadas com a

participação deles. O product owner demonstra bastante satisfação com o trabalho

realizado pela equipe de desenvolvedores, reportando, com freqüência, que o software

que está sendo desenvolvido simplifica bastante a realização de atividades que antes

exigiam um esforço muito maior para serem executadas.

A equipe conseguiu estabelecer a organização do processo de desenvolvimento

por meio da adoção de uma adaptação do Scrum integrada a algumas práticas XP.

Além disso, também foi inserido no processo o uso de alguns artefatos oriundos de

metodologias tradicionais, haja vista que o grupo de desenvolvedores estava adaptado

a eles e avaliou a relação custo-benefício para produzi-los e mantê-los como sendo

positiva. Esses fatores representaram a adaptação do processo às características do

time de desenvolvimento e às expectativas do cliente. A busca pela melhoria contínua

do processo também foi algo bastante positivo, notado a cada reunião que acontecia

no intuito de se estabelecer melhores práticas.

Ficou bastante nítida a idéia de que as práticas ágeis atuam no sentido de

repassar para as pessoas a responsabilidade que, na abordagem das metodologias

tradicionais, são depositadas sobre documentos e ferramentas. Isso leva a conclusão

de que o nível de aplicação dessas práticas deve estar diretamente relacionado ao

nível de maturidade, responsabilidade e comprometimento dos membros da equipe do

projeto. Em uma equipe com alto nível em relação a esses critérios o uso dessas

práticas pode ser bastante positivo e conduzir o time a uma organização baseada em

um mecanismo de auto-gerência. Quando o nível de maturidade e responsabilidade

das pessoas envolvidas no projeto não for tão confiável, é indicado mesclar agilidade

com rigidez, sempre procurando motivar o grupo. Também foi inferido que quanto

maior o número de pessoas envolvidas no processo, maior é a dificuldade para

implantação dessas práticas.

Page 77: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

68

O fator comunicação também demonstrou sua importância decisiva no processo.

A comunicação e a aproximação entre desenvolvedores e product owner foi bastante

significativa no sentido de promover, no decorrer do processo, para ambas as partes,

esclarecimentos quanto à melhor forma de implementar os requisitos. Em alguns

momentos, quando os desenvolvedores falharam em relação à comunicação interna,

deixando de reportar sobre o andamento de suas atividades, o processo ficou

prejudicado, de modo que algumas atividades atrasaram o projeto ou produziram

resultados insatisfatórios, o que se conseguiu reverter na com esforços adicionais.

Outros aspectos positivos observados foram: o bom nível de envolvimento e

participação dos desenvolvedores no projeto, o que deve ter sido motivado pela maior

possibilidade deles influenciarem nas decisões tomadas; e o amplo aprendizado em

relação às tecnologias da plataforma JEE utilizadas, tendo em vista que, no início do

projeto, nenhum dos desenvolvedores possuía domínio sobre elas.

Em relação às tecnologias e ferramentas de desenvolvimento utilizadas, notou-se

que as tecnologias da plataforma JEE realmente proporcionam bastantes vantagens e

abstrações. Porém, o tempo necessário para iniciar servidor de aplicações JBoss e

para fazer a implantação da aplicação mostrou-se um fator amplamente negativo, já

que dificultava bastante na hora de observar os resultados da programação. Também o

alto consumo de memória RAM do JBoss Aplication Server, algumas dificuldades e

problemas encontrados no uso da IDE Eclipse, e o grande número de configurações

necessárias para utilizar essas tecnologias e ferramentas em conjunto apresentaram-

se como empecilhos ao desenvolvimento sistema que estão sendo superados até o

momento com o esforço e a paciência dos desenvolvedores.

A não adoção de testes automatizados no processo e a falta de disciplina dos

desenvolvedores em documentar as classes produzidas com comentário Javadoc

foram duas grandes falhas mais perceptíveis no processo. A primeira é bastante

sentida nos momentos de lançamento de builds, quando muito tempo é perdido na

execução de testes manuais para tentar assegurar a correção e a estabilidade do

sistema. Sem testes automatizados, fica muito mais difícil detectar possíveis bugs

introduzidos no sistema por novas implementações. A segunda falha poderá ocasionar

problemas quando for necessário alterar trechos de códigos não entendidos pelo

desenvolvedor responsável. Portanto, é sabido que estas duas práticas devem ser

integradas ao processo tão logo quanto possível.

Page 78: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

69

Quanto aos aspectos relacionados à gerência das atividades e ao

compartilhamento de informações, a experiência foi positiva em relação ao uso do

Assembla e das ferramentas do Google mencionadas na sessão 3.4. Contudo, para

melhor aplicação de características ágeis relacionadas a esses aspectos, faltou o uso

de recurso mais palpáveis e visíveis dentro do ambiente de trabalho, tais como quadro

branco e post its, o que serve de sugestão para ser aplicado na sequência do

desenvolvimento do projeto.

Em síntese, observando-se todos os aspectos mencionados neste capítulo, pode-

se avaliar que os objetivos propostos para este trabalho foram amplamente alcançados

e que a experiência do desenvolvimento do Soft Educ GCI está sendo bastante

positiva, tanto na avaliação do cliente, quanto em relação à capacidade de organização

da equipe de desenvolvimento. Foram notados alguns problemas referentes ao

processo e às tecnologias utilizadas, os quais constituem as lições aprendidas, que

devem servir como base para a melhoria do processo em etapas futuras do

desenvolvimento deste ou de outros projetos.

Quanto à continuidade das ações relacionadas a este trabalho, pretende-se

concluir a implementação dos requisitos levantados e implantação das funcionalidades

correspondentes a eles dentro do prazo estipulado (dezembro de 2011). Além disso, a

equipe vislumbra também a possibilidade de criar uma empresa, de ampliar o número

de desenvolvedores, de estudar novas tecnologias, de adaptar o produto para uso em

outras instituições, de planejar a produção de outros produtos e de se associar a novos

parceiros.

Page 79: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO …diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1542996:apoo... · do Norte (IFRN) com o intuito de oferecer, ao

70

REFERÊNCIAS BIBLIOGRÁFICAS

Portela, C. S. Uma Proposta de Gerenciamento Ágil dos Projetos de Desenvolvimento de Software do CTIC/UFPA. Trabalho de Conclusão de Curso. CTIC/UFPA, Belém-PA, Brasil. 2009.

Soares, M. S. Comparação entre Metodologias Ágeis e Tradicionais para o Desenvolvimento de Software. INFOCOMP (UFLA. Impresso), v. 3, p. 8-13, 2004.

Soares, M. S. Metodologias Ágeis Extreme Programming e Scrum para o Desenvolvimento de Software. RESI. Revista Eletrônica de Sistemas de Informação, v. 3, p. 1-8, 2004.

Manifesto para o Desenvolvimento Ágil de Software. Disponível em: http://www.manifestoagil.com.br/. Acesso em 25 de maio de 2011.

Jendrock, E.; Evans, I.; Gollapudi D.; Haase, K.; SrivathsaThe, C. The Java EE 6 Tutorial. Disponível em: http://download.oracle.com/javaee/6/tutorial/doc/. Acesso em 04 de junho de 2011.

Keith, M.; Schincariol, M. Pro EJB 3: Java Persistence API. Berkely, CA, USA: Apress, 2006. 480p.

RichFaces Developer Guide. Disponível em: http://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html_single/. Acesso em 05 de junho de 2011

Documentation Facelets tools. Disponível em: http://www.jsftoolbox.com/documentation/facelets/. Acesso em 05 de junho de 2011