Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
UNIVERSIDADE REGIONAL DE BLUMENAU
CENTRO DE CIÊNCIAS EXATAS E NATURAIS
CURSO DE CIÊNCIAS DA COMPUTAÇÃO – BACHARELADO
AMBIENTE WEB PARA GERENCIAMENTO DE PROCESSO
DE SOFTWARE BASEADO NO SCRUM
JHONY ALCEU PEREIRA
BLUMENAU 2005
2005/1-28
JHONY ALCEU PEREIRA
AMBIENTE WEB PARA GERENCIAMENTO DE PROCESSO
DE SOFTWARE BASEADO NO SCRUM
Trabalho de Conclusão de Curso submetido à Universidade Regional de Blumenau para a obtenção dos créditos na disciplina Trabalho de Conclusão de Curso II do curso de Ciências da Computação — Bacharelado.
Prof. Everaldo Artur Grahl - Orientador
BLUMENAU 2005
2005/1-28
AMBIENTE WEB PARA GERENCIAMENTO DE PROCESSO
DE SOFTWARE BASEADO NO SCRUM
Por
JHONY ALCEU PEREIRA
Trabalho aprovado para obtenção dos créditos na disciplina de Trabalho de Conclusão de Curso II, pela banca examinadora formada por:
______________________________________________________ Presidente: Prof. Everaldo Artur Grahl, Mestre – Orientador, FURB
______________________________________________________ Membro: Prof. Fabiane Barreto Vavassori Benitti, Doutora – FURB
______________________________________________________ Membro: Prof. Marcel Hugo, Mestre – FURB
Blumenau, 19 de julho de 2005
Dedico este trabalho a todos que de certa forma ajudaram para a realização do mesmo, principalmente aos meus pais, Alceu e Rosi, que sempre me deram todo carinho e apoio ao qual necessitei.
AGRADECIMENTOS
À Deus, por estar sempre do meu lado me guiando pelo caminho certo.
À minha família, que mesmo longe, sempre esteve presente e me deram muita força
para continuar lutando.
Aos amigos pelo apoio e gentilezas prestadas nas horas de necessidade.
Ao meu orientador por ter acreditado na conclusão deste trabalho e auxiliado para que
isto aconteça.
“Quem disser que estamos fora, não nos conhece.”
Michael Schumacher
RESUMO
A indústria do software é, em sua maioria, formada por pequenas empresas de software, onde essas empresas, por começarem com uma ou duas pessoas acabam por não adotar um processo de software adequado, tornando custosa a adoção de uma metodologia tradicional de gerência de processo. As metodologias ágeis surgiram para suprir as necessidades dessas empresas, onde priorizam as pessoas e os prazos e onde a reescrita do código é uma tarefa simples e rotineira. A metodologia Scrum se destaca das outras metodologias ágeis por seu enfoque no planejamento e visão geral do processo de software. Este trabalho mostra a adaptação de uma ferramenta web de gerenciamento de projeto conhecida como dotProject para atender os artefatos baseados na metodologia Scrum. Para o realização deste ambiente foram utilizados Personal Home Page (PHP) e MySQL. O ambiente desenvolvido apóia as técnicas adotadas pela metodologia ágil Scrum facilitando no manejo de seus artefatos.
Palavras-chave: Scrum. Metodologia ágil. Processo de software.
ABSTRACT
The software industry is, in his majority, formed by small software companies, where those companies, by will begin with one or two peoples end up do not adopt an adequate software process, turning costly the adoption of a process traditional management methodology. The agile methodologies arose for supply the needs of those companies, where prefer the persons and the terms and where it rewritten of the code is a routine and simple task. To Scrum methodology is detached of the other agile methodologies by his approach in the planning and general vision of software process. This work shows a web project management tool adaptation of known as dotProject for attend the devices based in the Scrum methodology. For the environment realization are utilized Personal Home Page (PHP) and MySQL. The developed environment support the techniques adopted by the Scrum methodology facilitating in the management yours devices.
Key-Words: Scrum. Agile methodology. Software process.
LISTA DE ILUSTRAÇÕES
Figura 1 - Modelo de processo baseado em Scrum..................................................................19
Figura 2 - Gráfico de Burn-Down.............................................................................................25
Figura 3 - Tela de seleção de módulos do dotProject...............................................................26
Figura 4 - Framework do dotProject ........................................................................................29
Figura 5 - Representação dos diretórios include e classes com seus arquivos.........................30
Figura 6 - Representação da estrutura de um módulo do dotProject........................................31
Figura 7 - Diagrama de casos de uso do Scrum .......................................................................38
Figura 8 - Diagrama de casos de uso do módulo Product Backlog..........................................39
Figura 9 - Diagrama de casos de uso do módulo Sprint Backlog.............................................40
Figura 10 - Diagrama de casos de uso do módulo Daily Scrum..............................................41
Figura 11 - Diagrama de classe do ambiente dotProject adaptado para Scrum .......................43
Figura 12 - DER lógico do ambiente dotProject adaptado para Scrum....................................44
Figura 13 - Acesso ao sistema ..................................................................................................49
Figura 14 - Página principal do usuário Product Owner..........................................................50
Figura 15 - Página de listagem de empresas.............................................................................51
Figura 16 - Página de formulário para cadastro de empresas...................................................51
Figura 17 - Página de visualização dos dados da empresa.......................................................52
Figura 18 - Página de listagem de projetos...............................................................................52
Figura 19 - Página de formulário para inclusão de projetos.....................................................53
Figura 20 - Página para visualização do projeto ......................................................................53
Figura 21 - Pagina de Product Backlog....................................................................................54
Figura 22 - Página de Product Backlog com projeto selecionado............................................54
Figura 23 - Página de formulário de item do Product Backlog................................................55
Figura 24 - Página de visualização do Product Backlog..........................................................55
Figura 25 - Página de Sprint Backlog.......................................................................................56
Figura 26 - Página de formulário de Sprint Backlog................................................................57
Figura 27 - Página de visualização de Sprint Backlog .............................................................57
Figura 28 - Página inicial do módulo de Daily Scrum.............................................................58
Figura 29 - Página de formulário de registro das Daily Scrum................................................58
Figura 30 - Página de avaliação do Product Backlog...............................................................59
Figura 31 - Página de avaliação do Sprint Backlog..................................................................60
Figura 32 - Página de administração do ambiente....................................................................61
Figura 33 - Página de administração de usuários .....................................................................61
LISTA DE QUADROS
Quadro 1 - Variáveis globais/comumente usadas no dotProject ..............................................32
Quadro 2 - Definições das funções e métodos globais do dotProject ......................................33
Quadro 3 - Métodos da classe CDpObject ...............................................................................34
Quadro 4 - Script para instalação do módulo no framework do dotProject .............................46
Quadro 5 - Script de especificação da classe CSprintBacklog.................................................47
Quadro 6 - Estudo de caso "Controle de Pesca".......................................................................49
LISTA DE SIGLAS
AM – Agile Modeling
ASD – Adaptative Software Development
CSS – Cascading Style Sheets
DER – Diagrama de Entidades e Relacionamentos
DOM – Document Object Model
DSDM – Dynamic Systems Development Method
FURB – Fundação Universidade Regional de Blumenau
HTML – HyperText Markup Language
IDE – Integrated Development Environment
JUDE – Java/UML Object-Oriented Design Tool
PEAR – PHP Extension and Application Repository
PERT – Program Evaluation and Review Technique
PHP – Personal Home Page
SGBD – Sistema Gerenciador de Banco de Dados
SQL – Structured Query Language
TI – Tecnologia da Informação
UML – Unified Modeling Language
XHTML – eXtensible HyperText Markup Language
XP – eXtreme Programming
SUMÁRIO
1 INTRODUÇÃO..................................................................................................................14
1.1 OBJETIVOS DO TRABALHO ........................................................................................15
1.2 ESTRUTURA DO TRABALHO......................................................................................15
2 PROCESSO DE SOFTWARE .........................................................................................17
2.1 METODOLOGIA ÁGIL...................................................................................................17
2.2 SCRUM.............................................................................................................................19
2.2.1 PAPÉIS DO SCRUM......................................................................................................20
2.2.2 ATIVIDADES DO SCRUM...........................................................................................20
2.2.3 ARTEFATOS DO SCRUM............................................................................................21
2.2.3.1 Product Backlog............................................................................................................22
2.2.3.2 Sprint Backlog ..............................................................................................................23
2.2.3.3 Daily Scrum..................................................................................................................24
2.2.3.4 Release Backlog............................................................................................................24
2.2.4 Avaliações do Scrum.......................................................................................................25
2.3 DOTPROJECT..................................................................................................................26
2.3.1 A Arquitetura do dotProject ............................................................................................26
2.3.2 Framework do dotProject................................................................................................28
2.3.2.1 Arquivos e diretórios ....................................................................................................29
2.3.2.2 Variáveis globais/comumente usadas ...........................................................................31
2.3.2.3 Funções e métodos globais sem classe específica ........................................................32
2.3.2.4 A Classe CDpObject.....................................................................................................33
2.4 TRABALHOS CORRELATOS........................................................................................34
3 DESENVOLVIMENTO DO TRABALHO.....................................................................36
3.1 REQUISITOS PRINCIPAIS DO PROBLEMA ...............................................................36
3.2 ESPECIFICAÇÃO ............................................................................................................37
3.2.1 Módulo Product Backlog................................................................................................38
3.2.2 Módulo Sprint Backlog...................................................................................................40
3.2.3 Módulo Daily Scrum.......................................................................................................41
3.3 IMPLEMENTAÇÃO ........................................................................................................45
3.3.1 Técnicas e ferramentas utilizadas....................................................................................46
3.3.2 Operacionalidade da implementação ..............................................................................48
3.3.2.1 Usuário Product Owner ................................................................................................49
3.3.2.2 Usuário Scrum Team ....................................................................................................55
3.3.2.3 Usuário Scrum Master ..................................................................................................58
3.3.2.4 Outros Usuários ............................................................................................................60
3.4 RESULTADOS E DISCUSSÃO ......................................................................................61
4 CONCLUSÕES..................................................................................................................63
4.1 EXTENSÕES ....................................................................................................................63
REFERÊNCIAS BIBLIOGRÁFICAS .................................................................................65
APÊNDICE A – Dicionário de dados das principais entidades utilizadas pelo ambiente ...
..................................................................................................................................67
14
1 INTRODUÇÃO
O uso de um processo de desenvolvimento de software melhora a qualidade desse
software significativamente (SOARES, 2004). Com ele é possível medir desempenho, fazer
estimativas e organizar o caos que é o desenvolvimento de software em muitas empresas. O
fato complica-se quando os modelos tradicionais não são aplicáveis a pequenas empresas que
na sua maioria priorizam o prazo como fator de maior importância, além de sofrerem com a
falta de recursos. Para as empresas que trabalham neste contexto, o ideal é um modelo de
processo que seja ágil, sem muita burocracia e que seja voltada a todas as pessoas envolvidas
nesse processo.
Um desses modelos de processo ágil é conhecido como Scrum. De acordo com
Schwaber e Beedle (2002, p. 1), o Scrum é um processo interativo incremental de
desenvolvimento de software, e um modelo empírico de desenvolvimento de software. Utiliza
técnicas simples unidas ao senso comum e a uma base de experiências passadas, já testadas e
aprovadas. O uso do Scrum vai ao encontro com a necessidade das pequenas empresas de
software pelo fato de ser simples, ágil e sem muita burocracia.
O uso de uma metodologia deve ser facilitado através de uma ferramenta que dê o
apoio necessário nas atividades envolvidas por este processo. Esta necessidade vem ao
encontro de uma lista de atividades e documentos que devem ser gerados no decorrer do
processo e mantidos para uma posterior avaliação, seja de processo ou do software em
questão.
Uma ferramenta disponível para este fim, desenvolvida sob a filosofia OpenSource é o
dotProject. Esta ferramenta contém uma estrutura básica para gerência de processos de
software, porém não se preocupa com a metodologia aplicada. As funcionalidades do
dotProject são desenvolvidas através de módulos para o mesmo, onde esses módulos seguem
15
padrões de desenvolvimento ditados pela própria ferramenta, ou seja, um framework já
definido pelo próprio ambiente. Dentre os módulos que já acompanham o dotProject,
encontram-se módulos para gerência de clientes/empresas, contatos, projetos, tarefas, fórum,
calendário, arquivos, atendimento ao cliente (helpdesk), suporte a várias línguas e controle de
permissão de usuários por módulo (DOTPROJECT..., 2005).
1.1 OBJETIVOS DO TRABALHO
O objetivo deste trabalho é desenvolver um ambiente web para gerenciamento de
processo de software baseado na metodologia ágil conhecida como Scrum.
Os objetivos específicos do trabalho são:
a) estender e adaptar o ambiente dotProject para se adequar a metodologia ágil
Scrum;
b) aprofundar os conhecimentos na metodologia Scrum e difundir como alternativa
de processo para as pequenas organizações de software.
1.2 ESTRUTURA DO TRABALHO
O trabalho está dividido em quatro capítulos distintos, cuja a descrição de cada um
deles segue.
O primeiro capítulo apresenta uma introdução ao tema do trabalho, apresentando os
objetivos e a estrutura do trabalho.
O segundo capítulo apresenta uma fundamentação teórica descrevendo os temas
centrais do trabalho: Processo de Software, Metodologias Ágeis, Scrum e dotProject.
O terceiro capítulo trata da especificação e implementação do ambiente resultado do
16
trabalho. Este é demonstrado através de seus requisitos, diagramas de casos de uso, descrição
dos casos de uso, arquitetura do software, diagramas de entidade relacionamento (DER) e
dicionário de dados. Neste capítulo ainda são demonstradas algumas telas do ambiente com
suas devidas considerações.
Por fim, na conclusão deste trabalho, são descritas as considerações finais, tais como
dificuldades enfrentadas, os resultados alcançados, limitações do ambiente e sugestões para
novas implementações.
17
2 PROCESSO DE SOFTWARE
De acordo com Reis (2003, p. 5), “Processo de Software é um conjunto de atividades
realizadas para construir software, levando em consideração os produtos sendo construídos, as
pessoas envolvidas, e as ferramentas com as quais trabalham.” Desta forma pode-se
considerar Processo de Software todas as atividades, pessoas e ferramentas utilizadas para se
construir um Software.
2.1 METODOLOGIA ÁGIL
As metodologias ágeis foram concretizadas através de um manifesto realizado por
dezessete representantes das diversas metodologias ágeis, entre eles Ken Schwaber, Mike
Beedle, Martin Fowler, Kent Beck e Alistair Cockburn, que em uma reunião realizada em
fevereiro de 2001 procuravam, além de outras coisas, algo em comum. Desta reunião
originou-se o Manifesto for Agile Software Development (AGILE ALIANCE, 2005). Neste
manifesto foram decididos os valores e os princípios que as metodologias ágeis devem ter,
para assim serem classificadas. Tais valores são:
a) indivíduos e interações em vez de processos e ferramentas;
b) software funcional em vez de extensa documentação;
c) colaboração com o cliente em vez de renegociação de contrato;
d) aceitação das mudanças em vez de obediência cega a um plano.
De acordo com Santos, Martins e Leal (2003) as duas principais motivações para a
criação das metodologias ágeis, sendo a primeira o foco no objetivo primário de um projeto
de software que é o próprio software e não grande conjunto de documentação sobre ele, e a
segunda que um artefato é criado primordialmente para permitir a troca de informações e a
18
comunicação entre a equipe para assim permitir as discussões e aprimoramentos no modelo
do software.
Conforme Soares (2004, p. 1) processos tradicionais (orientados a planejamento,
documentação) são pesados e inadequados para pequenas organizações, que em sua maioria
acabam por não utilizar nenhum processo. Isto é ruim, visto que ao final, torna-se desastroso
para a qualidade final do produto apresentado. Por esta razão as chamadas metodologias ágeis
despertam cada vez mais as atenções da comunidade científica, e principalmente dessas
pequenas organizações. Os projetos realizados por essas organizações normalmente tem muita
mudança, os requisitos são passíveis de alterações, o custo do código a ser reescrito não é
elevado, as equipes são pequenas, são curtas as datas de entrega dos resultados, necessitando
de um desenvolvimento ágil, necessitando assim de uma metodologia ágil que se adapte a este
ambiente dinâmico das pequenas organizações.
Dentre os princípios das metodologias ágeis, tem-se bastante destaque para a
simplicidade e a velocidade com que os resultados são apresentados. Diferentes das
metodologias tradicionais, que tem seus requisitos inteiramente descritos e congelados, as
metodologias ágeis respondem melhor as mudanças no decorrer do processo, e esta talvez seja
a característica que mais chama a atenção das empresas que buscam soluções rápidas, e que
nem sempre tem seus requisitos fixos (ABRAHAMSSON et al., 2004).
O mercado de metodologias ágeis cresceu muito nos últimos anos, apresentando
diversas soluções para problemas distintos, mas na sua maioria, essas metodologias não
passaram de meras propostas. Porém, outras metodologias no mesmo contexto, estão se
fixando e chamando a atenção tanto da comunidade acadêmica, quanto das empresas de
software. Dentre as metodologias ágeis conhecidas pode-se citar o eXtreming Programming
(XP), Adaptative Software Development (ASD), Agile Modeling (AM), Dynamic Systems
Development Method (DSDM) e o Scrum.
19
O Scrum se destaca das outras metodologias ágeis por apresentar fatores e artefatos
visíveis para a gerência do processo como gerência de requisitos, manutenção de tarefas,
planos e métricas bem distintos. Toda a abordagem da metodologia Scrum é descrita a seguir.
2.2 SCRUM
Schwaber e Beedle (2002, p. 1) afirmam que o Scrum é uma metodologia ágil de
desenvolvimento de software empírica, significando que ela é voltada às experiências
passadas da equipe e de outras experiências para argumentar seus métodos.
Esta metodologia trata os papéis a serem desempenhados no decorrer do projeto como
sendo apenas três: Product Owner, Scrum Manager e Scrum Team. As responsabilidades de
todas as atividades do projeto são divididas entre esses três papéis. As atividades do Scrum
podem ser resumidas como mostra a Figura 1.
Fonte: adaptado de Control Chaos (2005).
Figura 1 - Modelo de processo baseado em Scrum
20
2.2.1 PAPÉIS DO SCRUM
De acordo com Schwaber (2004, p. 6-7), o Product Owner é o responsável por
representar os interesses de todos envolvidos com o software, e demonstra esses interesses no
Product Backlog, onde ele classifica por ordem de importância os requisitos apresentados. O
Product Owner é o responsável por conseguir os requisitos iniciais do projeto, bem como os
objetivos de retorno de investimento e o plano de liberação. Isto é conseguido com uma
constante atualização e priorização dos itens do Product Backlog. Já o Scrum Team tem a
função de desenvolver o software, sendo este auto-suficiente de suas funções, ou seja, o
Scrum Team se organiza internamente para distribuir as tarefas entre seus membros, bem
como apresentar os resultados, sendo um desses resultados o Sprint Backlog (o documento
que visa mostrar os resultados do desenvolvimento, conforme solicitado no Product Backlog).
E, por fim, o Scrum Master tem a função de manter o processo do Scrum, educar os
participantes do processo na metodologia Scrum e adaptá-lo a cultura da organização. Este
último ainda é responsável por mensurar todo o processo e verificar melhoras a serem feitas.
2.2.2 ATIVIDADES DO SCRUM
Schwaber (2004, p. 7-9) afirma que um projeto Scrum inicia com uma visão macro do
sistema a ser desenvolvido, onde esta visão pode ser vaga no início e tende a ser mais voltada
às regras de negócio do que às implementações do sistema. É de responsabilidade do Product
Owner passar esta visão aos outros membros do projeto e um dos meios de se fazer isto é
utilizando o Product Backlog. O Product Backlog é a lista dos requisitos funcionais e não
funcionais do sistema. Após a priorização do Product Backlog e a definição das futuras
releases é que o trabalho de desenvolvimento é feito. Este trabalho é feito através de Sprints,
21
que são ciclos de desenvolvimento de trinta dias consecutivos de um calendário. O Sprint
inicia com uma reunião de planejamento de Sprint, onde o Product Owner indica para o
Scrum Team quais as prioridades e este decide o quanto pode ser feito no próximo Sprint de
acordo com a priorização do Product Backlog. Dessa reunião é gerado o Sprint Backlog, que
acompanhará o Scrum Team no decorrer do ciclo de desenvolvimento. O Sprint sempre
termina com uma nova funcionalidade do sistema.
Todos os dias o Scrum Team faz uma reunião de quinze minutos denominada Daily
Scrum, onde os membros do Scrum Team respondem a três questões: O que você fez neste
projeto desde a última Daily Scrum? O que você pretende fazer entre agora e a próxima
reunião de Daily Scrum? Quais obstáculos você encontrou desde a última reunião de Daily
Scrum?
Após o final do Sprint, é realizada uma reunião de revisão do Sprint. Todos os
interessados no projeto participam desta reunião, incluindo o Product Owner e outros
stakeholders. Esta reunião informal serve para demonstrar as novas funcionalidades do
software.
Por fim, após a revisão do Sprint e antes da próxima reunião de planejamento de
Sprint, o Scrum Manager realiza uma reunião de retrospectiva do Sprint com o Scrum Team.
Nessa reunião o Scrum Manager encoraja o Scrum Team a revisar as técnicas utilizadas, com
as práticas do Scrum, assim, constituindo-se numa inspeção empírica e adaptativa das práticas
do Scrum.
2.2.3 ARTEFATOS DO SCRUM
Schwaber (2004, p. 9-14) diz que o Scrum introduz alguns artefatos novos. Dentre
esses artefatos encontra-se o Product Backlog. Nele encontram-se os requisitos do sistema
22
definido pelo Product Owner, separado por Sprints e Releases informando aos Scrum Teams
como (em grau de importância) eles devem desenvolver esses requisitos. Para um melhor
acompanhamento do processo, ainda no Product Backlog, encontram-se as estimativas de
tempo para término do requisito. O Product Backlog é dinâmico, alterado a qualquer
momento de acordo com o que o produto necessita.
Outro documento importante do Scrum é o Sprint Backlog, onde os Scrum Teams
podem fazer as suas estimativas particulares através do que é decidido na reunião de
planejamento do Sprint. Ele contém os requisitos que serão desenvolvidos no decorrer do
Sprint, quem originou este requisito, o responsável do requisito e um contador decrescente de
quanto tempo falta para o requisito ficar pronto em horas.
Outros documentos são gerados pelo Scrum, alguns já conhecidos, outros um pouco
menos, como o gráfico de Burn-Down, que representa a quantidade de requisitos atendida por
Sprint, para uma avaliação do processo e seus desvios com relação às estimativas. Tanto
esses, quanto os demais artefatos da metodologia Scrum estão descritos a seguir.
2.2.3.1 Product Backlog
“O Product Backlog é uma lista progressiva, priorizada de regras de negócio e
funcionalidades técnicas que precisam ser desenvolvidas dentro do sistema.” (SCHAWBER e
BEEDLE, 2002). É no Product Backlog que se encontram todos os requisitos,
funcionalidades, tecnologias, avanços e correções de erros existentes no sistema, que ainda
não foram implementados. Desta forma, o Product Backlog é a lista de todo o trabalho que
precisa ser feito.
O primeiro Product Backlog pode ser feito através de uma sessão de brainstorming,
onde vários interessados no projeto se reúnem e jogam idéias que poderiam ser usadas no
23
desenvolvimento do sistema. Estas idéias são estudadas e vistas a viabilidade delas estarem
contidas no projeto. Outras fontes ainda podem existir tanto de maneira formal, quanto de
maneira informal. A princípio o primeiro Product Backlog não é completo, ele apenas precisa
representar os princípios do sistema para uma primeira iteração (Sprint) do processo.
Após o primeiro Product Backlog criado, ele não é concretizado, muito pelo contrário,
ele pode ser modificado ou estendido a qualquer momento, se tornando assim, uma lista
dinâmica de requisitos do sistema.
A única pessoa responsável pela manutenção do Product Backlog é o Product Owner.
Este não pode ser uma comissão de pessoas, mas sim uma única pessoa responsável por tudo
que é desenvolvido no sistema. Esta pessoa não apenas pode como deve sofrer influências de
outras comissões de pessoas ou departamentos para ter uma melhor visão do que deve ser
desenvolvido no sistema.
As estimativas feitas no Product Backlog são feitas também de maneira dinâmica. Elas
não querem dizer quanto tempo, exatamente, a funcionalidade vai ficar pronta, mas sim ser
um ponto de partida para a previsão de término das tarefas no Sprint e um medidor para o
Scrum Team decidir o que pode ser feito no próximo Sprint.
2.2.3.2 Sprint Backlog
De acordo com Schawber e Beedle (2002, p. 71), o Sprint Backlog consiste nas tarefas
que o Scrum Team cria para uma iteração do processo (Sprint). Toda tarefa descrita no Sprint
Backlog tem uma referência dos requisitos apresentados no Product Backlog. Através de uma
reunião feita antes do início do Sprint o Sprint Backlog é gerado, contendo as tarefas que
serão realizadas durante o período do Sprint. As estimativas de tempo são decididas durante
esta reunião denominada Sprint Backlog Meeting. Todas as tarefas, preferencialmente,
24
deverão ser finalizadas até o final do Sprint, sendo que, tarefas não finalizadas devem se
tornar parte do próximo Sprint Backlog.
O Scrum Team é o único responsável por manter o Sprint Backlog, gerando a lista de
tarefas a serem desenvolvidas durante o Sprint, e atualizando as estimativas de tempo,
gerando um histórico de Sprints e tornando a gerência de processo baseado em Scrum, uma
metodologia empírica de desenvolvimento de software, por se basear em experiências
passadas para a geração de novos itens e estatísticas apresentados.
Ao finalizar uma tarefa antecipadamente, o responsável pela tarefa, pertencente ao
Scrum Team, deve continuar atualizando as estimativas de tempo com hora zero (0),
demonstrando assim uma tarefa terminada antes do final do ciclo.
2.2.3.3 Daily Scrum
Durante a Daily Scrum são discutidos diversos assuntos, dificuldades e soluções de
relevância para o projeto atual. Porém, esses assuntos, dificuldades e soluções podem ser
utilizados tanto adiante no mesmo projeto como pode ser utilizado por outros projetos. Desta
forma, o registro dessas reuniões é de altíssima importância, já que, ao estar registrando essas
reuniões, o Scrum Team, estará realizando um histórico de soluções possíveis para diversos
problemas que poderão surgir em projetos futuros.
2.2.3.4 Release Backlog
Sucessor do Product Backlog. Demonstra as funcionalidades, requisitos, tecnologias,
avanços e correções de erros já desenvolvidos na aplicação. São gerados após a finalização do
Sprint. No Release Backlog os requisitos atendidos dentro do Sprint corrente são
25
transformados em Release Backlog e os não atendidos já são automaticamente enviados para
o próximo Sprint.
2.2.4 Avaliações do Scrum
O Scrum tem diversas formas de avaliar até onde está sendo cumprido as exigências e
práticas aconselhadas pelo Scrum. Uma dessas formas é através do gráfico de Burn-Down
(Figura 2), onde se mostra a quantidade de tarefas atendidas num determinado período do
processo, podendo ser uma iteração (Sprint) ou mais dias a ser definidos pelo Scrum Master.
É função do Scrum Master gerenciar o processo e verificar onde estão as falhas e adaptar o
Scrum para que essas falhas sejam corrigidas.
12
34
0
10
20
30
40
50
60
70
80
Ho
ras
Fal
tan
tes
Semana da Sprint
Fonte: adaptado de ControlChaos (2005) Figura 2 - Gráfico de Burn-Down
O Scrum Master se baseia muito no Sprint Backlog juntamente com o Product Backlog
para verificar como está o entendimento entre as duas partes do processo, a que decide o que
vai conter o sistema e a que vai desenvolver o que vai conter o sistema. Através desta análise
o Scrum Master toma as decisões necessárias para discutir entre Scrum Team e Product
Owner, fazendo melhorias e adaptando o Scrum para melhor atender a organização.
26
2.3 DOTPROJECT
O dotProject é um ambiente para gerenciamento de processo de software desenvolvido
sob a filosofia opensource. Este ambiente conta hoje com diversos módulos que auxiliam de
forma genérica as empresas a gerenciar o processo de software sem se preocupar com a
metodologia aplicada para tal.
“O dotProject [...] é um ambiente de gerência de projetos bastante completo, contando
com interface em português, customizável.” (BRASIL, 2004, p. 68). Na Figura 3 pode-se ver
uma tela do dotProject, na administração do sistema, onde o usuário Administrador pode optar
por incluir ou excluir um módulo do sistema ou ainda alternar a ordem de como esses
módulos são vistos no sistema.
Figura 3 - Tela de seleção de módulos do dotProject
O dotProject ainda trabalha com sistema de skins o que ajuda a personalizar o
ambiente, modificando o visual dele sem trocar as funcionalidades dos módulos.
2.3.1 A Arquitetura do dotProject
De acordo com o site do dotProject (2005), assim como diversos outros sistemas de
Tecnologia da Informação (TI), a arquitetura do sistema é a parte mais considerável do
27
sistema. E como dotProject não é diferente, ele utiliza o sistema de múltiplas camadas. A
arquitetura de múltiplas camadas do dotProject conta com cinco camadas bem distintas para
desenvolvimento do ambiente. Estas camadas são definidas, quanto ao seu escopo, como
global, quando o módulo é independente e utilizado por todo o sistema, e local, quando a
camada é específica para cada módulo utilizado.
A primeira camada do dotProject é a camada de persistência. Ela é a camada de mais
baixo nível do ambiente, pois é onde são gravados os dados utilizados por todo o sistema.
Utiliza-se nesta camada Sistema Gerenciador de Banco de Dados (SGBD) MySQL, podendo
ser trocado para PostgreSQL caso este seja preferido. Também se utiliza de arquivos do
sistema, tanto para armazenar os dados, como para controle de versão e manutenção de
arquivos. Seu escopo é global.
A segunda camada, de server-side, é provavelmente a mais importante. Ela é quem
promove o acesso aos serviços do servidor web, bem como os serviços do banco de dados.
Ela promove uma abstração de banco de dados utilizando tecnologia ADOdb, que é um
conjunto de classes escritas em PHP para abstração de banco de dados. Nesta camada também
se encontram os serviços de internacionalização, bem como de validações de formulários,
requisições e parâmetros do servidor web. Utiliza para estes serviços tecnologia PHP e PHP
Extension and Applicxation Repository (PEAR) (um conjunto de funções complementares ao
PHP distribuído pela própria comunidade PHP). Seu escopo é global.
A terceira camada, a de lógica de negócios, define as regras de negócio utilizadas pelo
sistema, auxiliando a camada dois a manter os dados coerentes, para que não ocorram
problemas de inconsistência dos dados. Também é nesta camada que se definem os modelos
de base de dados, assim como as restrições a estes dados (constraints). Dentre as
responsabilidades desta camada está a especialização das classes, produção de formulários,
computação dos dados e preparação para comunicação com a quarta e quinta camadas. O
28
escopo desta camada é local.
A quarta camada, de estrutura de apresentação, gera a estrutura para os conteúdos
através de scripts processados no servidor, em PHP. Para geração da estrutura lógica da
informação é utilizada tecnologia Smart (sistema de templates para PHP) e para
documentação lógica e abstração de formato de telas utiliza tecnologia eXtensible HyperText
Markup Language (XHTML) 1.0. O escopo desta camada é local.
A quinta e última camada trata da interface com o usuário. Ela é responsável pelas
adaptações do front-end com o usuário do sistema, adicionando facilidades e interatividade
com o usuário final. Para tratar das cores, posicionamento e fontes do sistema esta camada
utiliza tecnologia Cascading Style Sheets (CSS). Esta tecnologia permite desenvolver a
interface com o usuário sem se preocupar com a compatibilidade do ambiente com o
navegador utilizado pelo cliente, já que a maioria dos navegadores tem esta tecnologia
embutida. Também se encontram nesta camada validações de formulário executados na
máquina cliente (client-side), interatividade e controle de eventos, tudo através de outras
tecnologias como JavaScript e Document Object Model (DOM). Esta camada é local, porém
pode ser considerada em parte global, pelos padrões utilizados em todo o sistema.
2.3.2 Framework do dotProject
Neste tópico são mostrados os elementos mais importantes do framework do
dotProject, sua disposição e funcionalidade no ambiente conforme demonstrado no site do
dotProject (2005).
29
2.3.2.1 Arquivos e diretórios
A Figura 4 mostra de maneira macro os principais componentes desse framework de
acordo com o site do dotProject (2005), onde seus componentes se apresentam em forma de
arquivos e diretórios. Os três únicos arquivos que ficam na pasta raiz de instalação do
ambiente são os arquivos ChangeLog, que serve de histórico do sistema para respectivas
trocas de versões; fileviewer.php, que é um script para visualização de arquivos utilizado por
todo o sistema; e por último, porém mais importante de todos, o index.php que é o arquivo
principal do ambiente que controla as mensagens de erro, instância dos objetos das classes
base, carregamentos das variáveis principais e das definições de tela, além de buscar a
linguagem a ser utilizada no ambiente.
Figura 4 - Framework do dotProject
Dos diretórios encontrados no framework básico do dotProject, destacam-se dois
diretórios globais que se pode ver na Figura 5: o diretório classes, onde se localizam todas as
classes principais do ambiente utilizadas de forma global, e o diretório include, utilizado para
30
armazenar todos os arquivos importantes como arquivo de permissões, configuração da base
de dados, configurações do ambiente e do script de email.
Figura 5 - Representação dos diretórios include e classes com seus arquivos
Os diretórios misc, locales e style, servem respectivamente para armazenar arquivos de
funções gerais, traduções para outras línguas e estilos de telas para o ambiente dotProject.
No diretório lib encontram-se todas as classes e bibliotecas utilizadas pelo ambiente
que não foram desenvolvidas pela equipe do dotProject. Dentre essas bibliotecas encontram-
se as utilizadas para geração de gráficos, documentos em pdf e acesso a base de dados.
Outros diretórios como db e docs são diretórios que servem para armazenar arquivos
utilizados na instalação ou atualização do ambiente, como arquivos de ajuda e scripts de
banco de dados. O diretório functions serve para armazenar funções dos módulos básicos do
dotProject.
Também existem os diretórios images e files que são utilizados respectivamente para
armazenar as imagens do ambiente (que são utilizadas por vários módulos) e os arquivos que
são adicionados pelos usuários ao ambiente para destacar uma funcionalidade ou tarefa
realizada.
Desses diretórios o mais importante deles é o diretório modules, que mantém todos os
módulos do dotProject em forma de diretórios. Estes diretórios têm por nome, o nome do
próprio módulo e dentro de cada diretório tem os arquivos necessários para o funcionamento
do módulo, além das classes globais. A Figura 6 demonstra a estrutura básica dos arquivos
dentro de cada módulo. O primeiro desses arquivos é o [mod].class.php, onde [mod] é o nome
31
do módulo do ambiente, utilizado para desenvolver a classe base do módulo. O arquivo
addedit[obj].php serve exclusivamente para a criação dos formulários para inclusão/exclusão
dos objetos do módulo, sendo que cada módulo pode ter diversos objetos. O arquivo
do_[obj]_aed.php realiza os procedimentos do banco de dados para inclusão, alteração e
exclusão dos objetos do módulo. O módulo ainda pode conter um diretório chamado images
para armazenar as imagens específicas desse módulo. Além desses arquivos, mais dois são
utilizados para a criação de um módulo. O arquivo index.php é utilizado para preencher a
página inicial do módulo e utiliza o arquivo w_[prop]_[obj].php para definir diversas
visualizações de propriedades ou objetos diferentes.
Figura 6 - Representação da estrutura de um módulo do dotProject
2.3.2.2 Variáveis globais/comumente usadas
O dotProject trabalha com um conjunto de variáveis de ambiente distintas que servem
para auxiliar no manejo dos dados com relação a interação com os usuário. O Quadro 1
mostra essas variáveis e a funcionalidade de cada uma delas.
32
string $m Contém o nome do módulo atual, onde o usuário se encontra. bool $canRead Usada de forma global no sistema para verificar permissão de leitura nos módulos. bool $canEdit Usada de forma global no sistema para verificar permissão de escrita nos módulos. array $dPconfig Lista das variáveis de configuração do dotProject que se encontram no arquivo
config.php dentro do diretório includes. array $perms Lista de permissões string $sql Comumente usado para armazenar os comandos enviados ao banco de dados. Fonte: adaptado de DOTPROJECT (2005).
Quadro 1 - Variáveis globais/comumente usadas no dotProject
2.3.2.3 Funções e métodos globais sem classe específica
O dotProject tem um conjunto de funções e métodos que são utilizados para auxiliar os
módulos com funções de escopo global. Essas funções na verdade são chamadas a outros
métodos e funções que acabam chamando outros métodos e funções até as bibliotecas de mais
baixo nível do dotProject. Desta forma, não serão demonstrados esses métodos e funções de
mais baixo nível, mas sim, os métodos e funções de interesse para se construir um novo
módulo. O Quadro 2 tem a definição dessas funções, o arquivo que se encontram e a
descrição do que faz cada uma dessas funções ou métodos.
33
bool getDenyEdit( string $m, int $item_id )
config.php Retorna verdadeiro quando o usuário tem direito de escrita no módulo $m ou no $item_id respectivo, caso contrário retorna falso.
bool getDenyRead( string $m, int $item_id )
config.php Mesmo que anterior, porém, apenas para leitura.
db_bindHashToObject( array $hash, object $object, string $prefix, bool $checkslashes, bool $bindAll )
db_connect.php Liga o conteúdo de $hash com as propriedades do objeto $object.
db_delete( string $table, string $keyName, mixed $keyValue )
db_connect.php Exclui as linhas da tabela $table onde $keyName tem o valor $keyValue
array db_loadList(string $sql, int $maxrows )
db_connect.php Retorna um array associativo da sentença SQL, limitada por $maxrows
array db_loadObject( string $sql, object &$object, bool $bindAll )
db_connect.php Liga o conteúdo da primeira linha da sentença SQL com o objeto $object.
string addHistory( string $description, int $project_id, int $module_id )
main_functions.php Adiciona uma entrada no histórico para mudanças de percurso marcadas.
string defVal(mixed $var, mixed $def )
main_functions.php Retorna o valor padrão $def se a variável $var não esta setada.
string dPformSafe( string $txt, bool $deslash )
main_functions.php Converte $txt para uma string com aspas duplas no início e no final.
string dPgetParam( array &$arr, string $name, mixed $def )
main_functions.php Retorna o valor de um array nomeado, ou o valor padrão $def.
string arraySelect( array &$arr, string $select_name, array $select_attribs, string $selected, bool $translate = false)
main_functions.php Retorna um formulário HiperText Markup Language (HTML) baseado na chave do primeiro array, traduzido, caso $translate for igual a verdadeiro.
Fonte: adaptado de DOTPROJECT (2005).
Quadro 2 - Definições das funções e métodos globais do dotProject
2.3.2.4 A Classe CDpObject
A Classe CDpObject está contida no arquivo dp.class.php e é responsável pelo acesso
a base de dados com abstração de banco de dados. Através desta classe as outras classes são
extendidas para fornecer acesso à base de dados. Dentre as suas propriedades estão a $_tbl,
que é a responsável por armazenar o nome da tabela na base de dados, a $_tbl_key, que se
responsabiliza pelo nome da chave primária da tabela na base de dados e por fim a
propriedade $_error que armazena a mensagem de erro.
Os métodos que se encontram na classe CDpObject são demonstrados no Quadro 3
com suas funcionalidades.
34
bind( $hash ) Preenche os dados contidos em $hash no objeto. load( $oid=null, $strip=true ) Carrega os dados do banco de dados baseados no $oid utilizando a chave
primária do banco. store( $updateNulls=false) Realiza as inclusões e alterações no banco de dados baseado no conteúdo
do Objeto. canDelete( string &$msg, $oid=null, $joins=null )
Verifica a dependência dos dados com relação a outros módulos.
delete( $oid = null ) Exclui dados do banco de dados baseado no valor de $oid. Fonte: adaptado de DOTPROJECT (2005).
Quadro 3 - Métodos da classe CDpObject
2.4 TRABALHOS CORRELATOS
Não foi possível encontrar um trabalho correlato do desenvolvimento ou estudo de
uma ferramenta ou ambiente que desse suporte ao Scrum. Encontra-se muito mais material
sobre eXtreming Programming (XP) do que sobre Scrum. Sendo assim, descreve-se o
trabalho realizado por Pohren (2004) utilizando XP. O trabalho trata de uma ferramenta de
gerência de processos baseado no XP, o XPManager. O trabalho ainda defende as
metodologias ágeis como solução para projetos com requisitos instáveis e equipes de trabalho
realmente pequenas. Neste mesmo trabalho são mostradas as dificuldades de se encontrar
ferramentas que dê apoio a este tipo de metodologia, sendo que, acima de tudo estas
ferramentas devem ter as mesmas características desse tipo de metodologia, devem ser
práticas, sem muita burocracia e ágeis.
Outros trabalhos auxiliaram em partes específicas deste trabalho. Como o trabalho
realizado por Marquardt (2004), que mostra a realização de um ambiente web para gerência
de requisitos.
Um artigo apresentado por Soares (2004) mostra as metodologias ágeis no
desenvolvimento de software. Fala sobre o XP e o Scrum como alternativas às metodologias
tradicionais orientadas a documentação, deixando o desenvolvimento do software uma tarefa
muito menos burocrática. Este artigo ainda mostra que as metodologias ágeis em geral estão
35
sendo bem aceitas na indústria de software, havendo assim, cada vez mais interesse deste
público por essas metodologias.
36
3 DESENVOLVIMENTO DO TRABALHO
Este capítulo demonstra o desenvolvimento do ambiente web. São apresentados
requisitos, especificação e implementação do protótipo do ambiente.
3.1 REQUISITOS PRINCIPAIS DO PROBLEMA
O ambiente deverá atender aos integrantes do processo de Scrum para facilitar no
manejo dos artefatos gerados pelo mesmo. Por se utilizar de um outro ambiente, o novo
ambiente deve apresentar claramente o desenvolvimento dos novos módulos. Os principais
requisitos do ambiente são:
a) framework: o ambiente deverá ser desenvolvido sob o framework do dotProject,
utilizando os padrões e instruções utilizadas para a criação de módulos para o
mesmo;
b) classificação dos usuários: o ambiente deverá permitir uma classificação dos
usuários em Product Owner, Scrum Master e Scrum Team. Como padrão, o
dotProject mantém sempre um usuário Administrador, desta forma, manter este
nível como no original do ambiente. Para efeito de visualização deve-se contar
com mais um usuário conhecido como Stakeholder que não interage no
desenvolvimento, mas participa do processo influenciando o Product Owner sobre
o que deve ser feito no sistema;
c) adaptação do ambiente: o ambiente deverá se adaptar ao nível de usuário para
apresentar as opções de maior relevância a cada um dos usuários, modificando
menus e acessos a módulos específicos de cada um dos tipos de usuário;
d) Product Backlog: o ambiente deverá contar com um módulo para gerência do
37
Product Backlog. Este deverá contar com uma lista de requisitos do sistema, onde
o usuário poderá ordenar esta lista em grau de importância, assim como definir
expectativa de prazos para cada uma das funcionalidades do sistema e definir
planos de sprints e releases;
e) Sprint Backlog: o ambiente deverá contar com um módulo para gerência do Sprint
Backlog. Este deverá conter uma lista das tarefas a serem realizadas, bem como
expectativas de tempo definidas pelo próprio Scrum Team;
f) Release Backlog: o ambiente deverá apresentar as funcionalidades solicitadas pelo
Product Owner que já foram desenvolvidas separadamente das já desenvolvidas
classificando-as como Release Backlog;
g) Daily Scrum: o ambiente deverá conter um módulo para registro das Daily Scrum,
onde os integrantes dessa reunião deverão reportar o que farão até a próxima
reunião, o que foi desenvolvido desde a última reunião e quais as dificuldades
encontradas e soluções possíveis para estas dificuldades apresentadas pelo outros
integrantes do grupo ou descobertas;
h) avaliações: o ambiente deverá apresentar gráficos de Burn-Down para que o Scrum
Master possa avaliar o processo, tanto da visão do Product Backlog, quanto da
visão do Sprint Backlog;
i) tradução: o ambiente deverá ser desenvolvido na língua nativa do dotProject
(inglês) e traduzido para o português através dos arquivos de configuração de
linguagem adotados pelo dotProject.
3.2 ESPECIFICAÇÃO
Para a especificação do ambiente foi utilizada a ferramenta Java/UML Object-Oriented
38
Design Tool (JUDE) Communit, que é uma ferramenta freeware para desenvolvimento de
diagramas Unified Modeling Language (UML). Para o Diagrama Entidade Relacionamento
(DER) foi utilizado o DBDesigner 4 que é também uma ferramenta freeware para edição
desse tipo de diagramas. Para um melhor entendimento cada módulo desenvolvido foi
descrito separadamente.
Na Figura 7 é mostrado o diagrama de casos de uso geral do Scrum agrupando os
artefatos por suas funcionalidades em pacotes. Estas funcionalidades foram desenvolvidas no
ambiente como módulos para o dotProject e cada um desses pacotes é descrito em detalhes a
seguir.
Figura 7 - Diagrama de casos de uso do Scrum
3.2.1 Módulo Product Backlog
Neste módulo o usuário representado no diagrama (Figura 8) como Product Owner é o
único usuário de acesso para manter módulo, fazendo inclusão, alteração e exclusão dos itens
deste módulo. Os outros níveis de usuário podem apenas visualizar. O usuário representado
39
no diagrama como Scrum Master é o único que tem acesso ao caso de uso Verificar requisitos
X prazos.
Figura 8 - Diagrama de casos de uso do módulo Product Backlog
A seguir são descritos brevemente os casos de uso deste módulo:
a) manter Product Backlog: o Product Owner deve selecionar o item Product
Backlog do menu do ambiente e após isso, selecionar o projeto para visualizar os
itens já cadastrados e então clicar no item inserir para adicionar um novo item, ou
clicar sobre o item para alterar, ou ainda clicar no botão excluir para eliminar um
item do Product Backlog. O Product Owner deve informar dentre os dados do
Product Backlog a prioridade, release, sprint, descrição e estimativa em horas do
item. A estimativa de tempo informada pelo Product Owner deve ser ajustada para
informar uma estimativa média de tempo. O índice de ajuste da estimativa é
informado pelo Scrum Master nas propriedades do sistema.
b) verificar requisitos X prazos: o Scrum Master deve selecionar o item Product
Backlog do menu do ambiente e após isso, selecionar o projeto para visualizar os
itens já cadastrados só então selecionar a guia Avaliação. O sistema apresenta um
gráfico de Burn-Down apresentando do eixo “Y” os requisitos atendidos e no eixo
40
“X” o tempo decorrido do projeto.
c) priorizar Product Backlog: o Product Owner deve selecionar o item Product
Backlog do menu do ambiente e após isso selecionar o projeto para visualizar os
itens cadastrados e então clicar nas setas acima e abaixo que estão ao lado do item
para poder alterar a prioridade dele, ou clicar sobre o item e alterar a prioridade
pelo campo prioridade.
3.2.2 Módulo Sprint Backlog
Neste módulo o usuário é representado no diagrama (Figura 9) pelo Scrum Team que é
o único responsável por manter o Sprint Backlog. Desta forma nenhum outro usuário tem
acesso de edição neste módulo, apenas leitura. O usuário representado pelo Scrum Master é o
único com acesso ao caso de uso Verificar tarefas X prazos.
Figura 9 - Diagrama de casos de uso do módulo Sprint Backlog
A seguir são descritos brevemente os casos de uso deste módulo:
a) manter Sprint Backlog: o Scrum Team deve selecionar o item Sprint Backlog no
menu do ambiente e após isso selecionar o projeto para visualizar os itens
cadastrados. A tela deve habilitar a visualização do Sprint atual com todos os itens
do mesmo. Após isso o Scrum Team deve clicar no item inserir para incluir novos
itens, ou selecionar o item para ser editado, ou ainda clicar sobre excluir para
41
remover um item do Sprint Backlog. Dentre os dados que o Scrum Team deve
informar, encontram-se o item do Product Backlog que este item está atendendo, a
descrição, uma estimativa de tempo para o item ficar pronto e o status do item
(não iniciado, em progresso ou concluído). A cada semana o Scrum Team deve
informar quantas horas ainda faltam para terminar o item do Sprint Backlog, e caso
concluído, informar com zero o valor da hora e trocar o status do item.
b) verificar tarefas X prazos: o Scrum Master deve selecionar o item Sprint Backlog
no menu do ambiente e após isso selecionar o projeto para visualizar os item
cadastrados, em seguida selecionar a guia Avaliação. O sistema apresenta um
gráfico de Burn-Down apresentando no eixo “Y” as tarefas cumpridas e no eixo
“X” o tempo decorrido do projeto.
3.2.3 Módulo Daily Scrum
Neste módulo o usuário classificado como Scrum Team (Figura 10) registra após cada
uma das Daily Scrum o que foi feito, o que ele irá fazer e quais as dificuldades encontradas e
soluções possíveis encontradas, discutidas durante a reunião.
Figura 10 - Diagrama de casos de uso do módulo Daily Scrum
A seguir são descritos os casos de uso desse módulo:
a) registrar Daily Scrum: o Scrum Team deve selecionar o item Daily Scrum no menu
do ambiente para visualizar a tela de procura. Após isso, o Scrum Team deve
42
selecionar o item inserir para registrar um novo item do Daily Scrum. Os valores
de entrada para um novo item são as três perguntas chaves da Daily Scrum: “O que
você fez desde a última Daily Scrum?”, “O que você fará até a próxima Daily
Scrum?” e “Quais problemas, dúvidas e soluções encontrados desde a última Daily
Scrum?”.
b) consultar Daily Scrum: o Scrum Team deve selecionar o item Daily Scrum no
menu do ambiente para visualizar a tela de procura. O Scrum Team deve escrever
uma ou mais palavras chaves para então clicar no item Busca da tela. Os resultados
são apresentados na mesma tela filtrados pelas palavras chaves do usuário, no caso
o Scrum Team.
Para uma melhor compreensão do que foi feito, na Figura 11 apresenta-se um
diagrama de classes onde se tem as principais classes do ambiente desenvolvido. As classes
que pertencem ao ambiente dotProject estão preenchidas com uma cor escura, enquanto que
as classes novas estão preenchidas com a cor branca.
As classes CProductBacklog, CSprintBacklog e CDailyScrum, que são as três classes
principais que servem aos requisitos do Scrum, são estendidas/especializadas da classe
CDpObject que é a classe que faz a comunicação com a camada de persistência do ambiente.
No dotProject não existe uma classe específica que cuide dos usuários do ambiente,
este processo é distribuído entre as classes da interface do ambiente (CAppUI) e a classe de
sistema (CSystem) que não é apresentada no diagrama, por ser uma classe global ao qual não
se faz chamadas diretas a ela.
43
Figura 11 - Diagrama de classe do ambiente dotProject adaptado para Scrum
Há uma dependência da classe de empresas (CCompany) e a classe de projetos
(CProject), esta se dá no ambiente de forma que não se pode criar um projeto sem associá-lo a
uma empresa, sendo que esta característica é do próprio ambiente dotProject e não foi
alterada. Uma dependência da classe de projetos é feita na classe de Product Backlog
(CProductBacklog) desta forma, também na se pode ter um Product Backlog sem associá-lo a
um projeto. Da mesma forma é feito com a classe de Sprint Backlog (CSprintBacklog) que
depende da classe de Product Backlog.
44
Complementando o diagrama a classe CAppUI é a responsável por toda a integração
dos módulos, verificação de acesso dos usuários, criação das telas e personalização através de
Templates.
Para uma melhor compreensão do armazenamento dos dados e da estrutura que será
aproveitada do dotProject, a Figura 12 mostra um Diagrama de Entidade e Relacionamento
(DER) lógico das principais entidades utilizadas na adaptação do ambiente. O modelo mostra
as novas entidades voltadas para o Scrum juntamente com as entidades já existentes no
dotProject. Os relacionamentos apresentados não estão fisicamente na base de dados, mas são
definidos na segunda camada do dotProject.
Figura 12 - DER lógico do ambiente dotProject adaptado para Scrum
As três entidades criadas para apoiar as funcionalidades do Scrum são:
45
a) product_backlog: utilizada para armazenar os dados do Product Backlog incluídos
pelo Product Owner;
b) sprint_backlog: utilizada para armazenar os dados do Sprint Backlog incluídos
pelo Scrum Team;
c) daily_scrum: utilizada para armazenar os dados do Daily Scrum registrando todos
os dias pelo Scrum Team.
As outras entidades encontradas no diagrama já são parte integrante do dotProject e
foram utilizadas para apoiar o processo. Estas entidades são:
a) projects: guarda os dados referentes ao projeto;
b) companies: guarda os dados referente as empresas cadastradas no sistema
separando por categoria (cliente, fornecedor, interno, etc.);
c) users: guarda os dados referentes aos usuários do sistema incluindo sua categoria
(administrador, product owner, scrum team, scrum master e stakeholder).
Complementando o DER lógico, no Apêndice A está o dicionário de dados com a
descrição dos atributos.
3.3 IMPLEMENTAÇÃO
Para implementação do ambiente foram utilizados apenas softwares livres, desde
servidor web (Apache), sistema gerenciador de banco de dados (MySQL), linguagem de
scripts do servidor Personal Home Page (PHP), o framework de trabalho (dotProject),
inclusive a Integrated Development Environment (IDE) para edição dos códigos, onde foi
utilizado Eclipse com a extensão (plug-in) para edição de código PHP. No framework do
dotProject ainda são utilizados Hyper Text Markup Language (HTML) e JavaScript para
interação com o usuário e validação das informações, além de outras tecnologias já
46
comentadas (ver arquitetura do dotProject).
A implementação é feita sobre a forma de módulos para o ambiente dotProject que já
disponibiliza todo conjunto de classes e variáveis de ambiente para esta programação.
3.3.1 Técnicas e ferramentas utilizadas
A criação de um módulo do dotProject inicia com a criação de um arquivo de
setup.php para a instalação, atualização, exclusão e configuração do módulo. O Quadro 4
mostra o exemplo deste arquivo para a criação do módulo Product Backlog.
<?php $config = array(); $config['mod_name'] = 'Product Backlog'; $config['mod_version'] = '1.0.0'; $config['mod_directory'] = 'productbacklog'; $config['mod_setup_class'] = 'CSetupProduct'; $config['mod_type'] = 'user'; $config['mod_ui_name'] = 'Product Backlog'; $config['mod_ui_icon'] = 'product.gif'; $config['mod_description'] = 'Módulo para gerência da Product Backlog'; $config['mod_config'] = true; if (@$a == 'setup') echo dPshowModuleConfig( $confi g ); class CSetupProduct { function configure() { global $AppUI; $AppUI->redirect( 'm=productbacklog&a=configure' ); return true; } function remove() { db_exec( "DROP TABLE product_backlog ;" ); return null; } function upgrade( $old_version ) { return false; } function install() { $sql = "CREATE TABLE product_backlog ( " . " product_backlog_id INTEGER UNSIGNED NOT NULL AU TO_INCREMENT". ",project_id INTEGER(11) NOT NULL" . ",product_backlog_nm VARCHAR(256) NOT NULLL" . ",product_backlog_ds TEXT NULL" . ",hour_est INTEGER UNSIGNED NULL" . ",prior_id INTEGER UNSIGNED NULL" . ",sprint_id INTEGER UNSIGNED NULL" . ",release_id INTEGER UNSIGNED NULL" . ",product_backlog_st CHAR NULL" . ",PRIMARY KEY (product_backlog_id)" . ",UNIQUE KEY product_backlog_id (product_backlog_ id)" . ",INDEX product_backlog_project_fk(project_id)" . ");"; db_exec( $sql ); db_error(); return null; } } ?>
Quadro 4 - Script para instalação do módulo no framework do dotProject
Como se pode conferir, este arquivo inicia com a declaração de um array com as
47
configurações do módulo (nome, versão, tipo, etc.) e em seguida há a declaração da classe de
configuração para o módulo específico. Esta classe conta com quatro funções que servem para
configuração, instalação, atualização e exclusão do módulo no sistema.
Além do arquivo de instalação de módulo, é necessário um arquivo para
implementação da classe do módulo. Este deve ter no seu nome o nome do módulo e o sufixo
.class e a extensão .php. No Quadro 5 é apresentado o exemplo deste arquivo para o módulo
Sprint Backlog (sprintbacklog.class.php)
<?php require_once( $AppUI->getSystemClass ('dp' ) ); class CSprintBacklog extends CDpObject { var $sprint_backlog_id = NULL; var $product_backlog_id = NULL; var $sprint_backlog_nm = NULL; var $sprint_backlog_ds = NULL; var $sprint_backlog_st = NULL; var $requisitor_id = NULL; var $user_id = NULL; var $hours_1 = NULL; var $hours_2 = NULL; var $hours_3 = NULL; var $hours_4 = NULL; function CSprintBacklog() { $this->CDpObject( 'sprint_backlog', 'sprint_backl og_id' ); } } ?>
Quadro 5 - Script de especificação da classe CSprintBacklog
Neste arquivo é feita uma requisição do módulo global dp onde fica localizada a
declaração da classe CDpObject, que é estendida pela classe CSprintBacklog para acessar a
tabela sprint_backlog da base de dados. Todos os atributos da tabela são colocados como
atributos da classe para haver a comunicação entre as duas entidades. O único método escrito
na classe CSprintBacklog é o método construtor, que informa para a classe qual o nome da
tabela e da chave primária na base de dados. Os outros métodos para edição, exclusão, etc.
são herdados da classe CDpObject.
Há ainda mais três arquivos necessários para o desenvolvimento do módulo. Um deles
é utilizado para fazer os scripts de comunicação com a base de dados, responsável pela
inserção, alteração e exclusão dos registros do módulo (do_modulo_aed.php). Os dois últimos
48
são utilizados para desenho da interface com o usuário, sendo um deles o formulário de
inserção/alteração de registros (addedit.php), e o outro como interface inicial do módulo para
listagem, filtros, etc (index.php).
Outros arquivos ainda podem fazer parte do módulo, porém estes são a base para a
construção de um módulo.
3.3.2 Operacionalidade da implementação
Para uma melhor compreensão do ambiente, é apresentado a seguir um estudo de caso
hipotético (Quadro 6) apresentado na disciplina de Requisitos de Software na Universidade
Regional de Blumenau (FURB). Este estudo de caso é utilizado para testar o ambiente e
realizar uma demonstração das telas que serão vistas á seguir.
Uma entidade ambientalista decidiu criar um banco de dados sobre as pescas realizadas na sua região de
atuação, a fim de disponibilizar dados de interesse dos pescadores, entidades de pescadores e a comunidade em
geral. Foi realizado um censo onde foram coletadas as seguintes informações: Dados sobre embarcações:
proprietário, nome da embarcação, comprimento, inscrição na capitania dos portos, ano construção. Sobre o
proprietário é cadastrado o nome, endereço, CPF, apelido e município; As embarcações podem ser para pesca
artesanal ou industrial. Quando for barco para pescaria industrial, devem ser armazenados ainda dados como a
capacidade de estocagem e se a embarcação possui tanque de isca. No caso da pesca artesanal devem ser
informados ainda o tipo de material do casco e o tipo de propulsão do barco (motor, vela, remo, etc.). Para cada
embarcação serão armazenados os diversos tipos de petrechos de pesca utilizados (rede, caniço, etc.) e também o
tipo de conservação do pescado (refrigerado, sem refrigeração, etc.). Cabe aos pesquisadores o cadastramento
das espécies de animais encontrados na área marítima considerada pelo sistema. Sobre cada espécie é anotado
código, nome científico e nome popular. Os fiscais vão informar os dados coletados sobre as pescas, que foram
anotados nos pontos de desembarque, registrando a data, hora, embarcação e para cada espécie capturada, será
registrada a quantidade em quilos obtida e o petrecho utilizado para sua captura. Sobre as pescas realizadas
(desembarques), o sistema disponibilizará aos usuários em geral dois relatórios mensais: quantidade total
pescada por espécie e embarcações com maior quantidade de pesca (quilos) utilizando rede.
49
Quadro 6 - Estudo de caso "Controle de Pesca"
A primeira página do ambiente é a de acesso ao sistema (Figura 13). Nesta deve-se
informar o Nome do usuário e senha, logo depois clicar no botão entrar para ser redirecionado
para a página principal do ambiente.
Figura 13 - Acesso ao sistema
O ambiente configura as opções de menu e outros itens através do tipo de usuário que
acessa o sistema. Por isso, é mostrado a seguir como é a operacionalidade do ambiente de
acordo com cada um dos tipos de usuário.
3.3.2.1 Usuário Product Owner
Depois de autenticado o acesso é apresentada a página inicial do ambiente (Figura 14),
os menus dos módulos que o usuário tem acesso e a tela de do primeiro módulo que, no caso
do Product Owner, é o Product Backlog. As opções disponíveis no menu são:
a) product backlog: gerencia os itens do Product Backlog (requisitos);
b) projetos: gerencia os projetos;
c) empresas: gerencia as empresas;
d) contatos: gerencia os contatos das empresas.
50
Figura 14 - Página principal do usuário Product Owner
No canto superior direito ainda encontra-se algumas opções de acesso rápido. São elas:
a) ajuda: ajuda do ambiente;
b) minhas informações: acesso rápido as configurações do usuário atual;
c) hoje: acesso rápido a agenda com a data de hoje;
d) sair: saída do sistema.
Essas opções são padrões para todos os usuários do ambiente.
Para se ter um Product Backlog o usuário deve antes ter no ambiente um projeto
cadastrado no ambiente. O dotProject exige que uma empresa seja vinculada ao projeto,
podendo ser assim a própria empresa tratada como empresa do tipo interna.
As opções de cadastro de empresas, contatos e projetos são visíveis para qualquer
usuário, exceto para o tipo stakeholder que tem acesso apenas a página de Product Backlog
somente para leitura.
O usuário deve clicar no item “empresas” para apresentar a tela de listagem de
empresas cadastradas no ambiente (Figura 15). Nesta página as empresas são separadas em
guias de acordo com os tipos que foram cadastradas no ambiente.
Para incluir uma nova empresa o usuário deve clicar no item “nova empresa” no canto
superior direito da página do ambiente. Este levará a uma outra página para ser incluído os
dados da nova empresa (Figura 16).
51
Figura 15 - Página de listagem de empresas
Figura 16 - Página de formulário para cadastro de empresas
Ainda na listagem de empresas o usuário pode escolher verificar uma empresa, ou
mesmo alterar os seus dados. Para isto basta ele clicar sobre o nome da empresa requerida e
ele será levado à tela de visualização da empresa (Figura 17) onde ele pode verificar todas as
informações da empresa bem como escolher alterar ou excluir a empresa selecionada.
52
Figura 17 - Página de visualização dos dados da empresa
Nesta tela ainda encontram-se informações adicionais nas abas de rodapé da página.
Nestas abas o usuário pode escolher visualizar os projetos ativos, projetos arquivados,
departamentos, usuários e contatos da empresa de forma rápida e prática.
Após a empresa cadastrada, já é possível cadastrar um projeto para esta empresa. Desta
forma é utilizado o item de menu “projetos”, neste item o usuário é levado a listagem de
projetos do ambiente (Figura 18). Nesta página são separados por situação e ainda podem ser
filtrados pela empresa proprietária do projeto.
Figura 18 - Página de listagem de projetos
53
No canto superior direito da página o usuário encontra o item “novo projeto” que o
leva a página de formulário para inserção de um novo projeto com todos os seus dados
(Figura 19). A mesma janela é utilizada para a edição de um projeto já cadastrado, para isso o
usuário deve selecionar o projeto na listagem de projetos e na página de visualização de
projetos (Figura 20) o usuário deve selecionar o item “editar projeto”.
Figura 19 - Página de formulário para inclusão de projetos
Ainda na página de visualização de projeto (Figura 20) o usuário pode excluir o
projeto através do item “excluir projeto” no canto superior direito da página.
Figura 20 - Página para visualização do projeto
Depois de uma empresa e um projeto cadastrado, o usuário pode então incluir um item
54
no Product Backlog. Ao entrar no sistema o usuário do tipo Product Owner já é levado à
página de Product Backlog, caso contrário este poderá escolher a opção Product Backlog no
menu de acesso. Ao acessar esta página (Figura 21) o usuário é solicitado a selecionar um
projeto na listagem de projetos.
Figura 21 - Pagina de Product Backlog
Após selecionar o projeto são apresentados os itens do Product Backlog (Figura 22)
separados por Sprint e Release, bem como em ordem de prioridade.
Figura 22 - Página de Product Backlog com projeto selecionado
Nesta página é disponibilizado ao usuário alterar a prioridade do item do Product
Backlog através dos botões de setas acima e abaixo que cada um dos registros contém. Para
adicionar um novo item de Product Backlog, o usuário deve apenas acessar o item “novo
55
Product Backlog” para ser enviado a página de formulário de novo Product Backlog (Figura
23). Neste formulário são informadas todas as informações do item do Product Backlog, e ele
pode ser usado tanto para inserção como para alteração de um item.
Figura 23 - Página de formulário de item do Product Backlog
Para poder visualizar as informações, editar ou mesmo excluir um item do Product
Backlog o usuário deve clicar sobre o item e ele será levado à página de visualização do item
de Product Backlog (Figura 24). Nesta tela o usuário terá todas as informações do Product
Backlog.
Figura 24 - Página de visualização do Product Backlog
3.3.2.2 Usuário Scrum Team
Depois de autenticado o acesso o usuário é levado ao menu principal com as opções
56
disponíveis para este tipo de usuário. As opções disponíveis no menu são:
a) sprint backlog: gerencia os itens do Sprint Backlog (tarefas);
b) product backlog: gerencia os itens do Product Backlog (requisitos);
c) daily scrum: registro das reuniões de Daily Scrum;
d) projetos: gerencia os projetos;
e) empresas: gerencia as empresas;
f) contatos: gerencia os contatos das empresas.
O usuário com acesso de Scrum Team se difere do Product Owner simplesmente pelo
acesso ao Sprint Backlog e o Daily Scrum, que são respectivamente onde o Scrum Team
realiza a gerência de suas tarefas e o registro das reuniões de Scrum Daily. O acesso do Scrum
Team aos outros módulos apresentados é somente leitura, não podendo incluir, alterar ou
excluir qualquer item apresentado.
O usuário com nível de acesso definido como Scrum Team tem como página inicial no
sistema o próprio Sprint Backlog, porém ele pode ser acessado no menu pelo item Sprint
Backlog, onde o usuário é levado a página de Sprint Backlog (Figura 25).
Figura 25 - Página de Sprint Backlog
Nesta página o usuário pode incluir um item do sprint backlog através do item “novo
57
Sprint Backlog” no canto superior direito da página, dessa forma o usuário será levado à
página de formulário do Sprint Backlog para incluir um novo item (Figura 26).
Figura 26 - Página de formulário de Sprint Backlog
Clicando em um dos itens de Sprint Backlog o usuário será levado à página de
visualização do Sprint Backlog (Figura 27), onde ele pode editar ou mesmo excluir o item
selecionado.
Figura 27 - Página de visualização de Sprint Backlog
Para fazer o registro das Daily Scrum o usuário deve acessar o item “Daily Scrum” no
menu para ser levado a página de Daily Scrum (Figura 28). Esta página apresenta um
formulário para buscas de assuntos na base de Daily Scrum, sendo que para encontrar um
assunto, basta o usuário informar algumas palavras chaves e clicar no item “buscar”.
58
Figura 28 - Página inicial do módulo de Daily Scrum
Para registrar a Daily Scrum, o usuário deve acessar o item “nova Daily Scrum” no
canto superior direito da página, onde ele será levado à página de formulário de registro da
Daily Scrum (Figura 29). Nesta página o usuário do tipo Scrum Team responde as três
perguntas realizadas durante a Daily Scrum: O que você fez desde a última Daily Scrum? O
que você fará até a próxima Daily Scrum? Quais problemas e soluções surgiram desde a
última Daily Scrum?
Figura 29 - Página de formulário de registro das Daily Scrum
3.3.2.3 Usuário Scrum Master
Depois de autenticado o acesso é apresentada a página inicial do sistema com as
opções disponíveis para este tipo de usuário. As opções disponíveis no menu são:
a) sprint backlog: gerencia os itens do Sprint Backlog (tarefas);
59
b) product backlog: gerencia os itens do Product Backlog (requisitos);
c) daily scrum: registro das reuniões de Daily Scrum;
d) projetos: gerencia os projetos;
e) empresas: gerencia as empresas;
f) contatos: gerencia os contatos das empresas.
O que difere o acesso do usuário definido como Scrum Master dos demais é o acesso
total aos módulos apresentados e algumas opções de avaliação contidas dentro dos módulos.
Uma dessas opções de avaliação é dentro do módulo Product Backlog onde o Scrum Master
tem acesso a mais uma guia onde encontra o gráfico de Burn-Down para o Product Backlog
(Figura 30). O Gráfico pode ser gerado selecionando as opções de Sprint ou Release onde se
selecionado release a contagem de tempo é feita através das Sprints e se caso o usuário
selecione a opção Sprint a contagem de tempo é as quatro semanas onde é realizada a Sprint.
Figura 30 - Página de avaliação do Product Backlog
O outro item adicional para o Scrum Master é dentro do módulo de Sprint Backlog, na
guia de avaliação onde ele encontra o gráfico de Burn-Down para o Sprint Backlog (Figura
31). O usuário já inicia com o gráfico da Sprint atual podendo escolher qualquer uma das
60
outras Sprints já realizadas.
Figura 31 - Página de avaliação do Sprint Backlog
3.3.2.4 Outros Usuários
Existem ainda dois tipos de usuários que tem acesso ao sistema. Um deles é o usuário
do tipo stakeholder que tem acesso somente de leitura ao item de Product Backlog para ser
informado do que foi pedido e o que foi realizado durante um determinado Sprint.
O outro tipo de usuário não é padrão do Scrum, mas sim do próprio dotProject. O
usuário do tipo Administrador é o único que tem acesso a todos os itens de menu e mais
alguns itens adicionais que servem para gerenciar o sistema (Figura 32) e seus usuários
(Figura 33).
61
Figura 32 - Página de administração do ambiente
Figura 33 - Página de administração de usuários
3.4 RESULTADOS E DISCUSSÃO
Um resultado considerável diante deste trabalho, foi a documentação realizada sobre o
Scrum com seus artefatos, papéis e atividades na língua portuguesa. Esta documentação
possibilita a disseminação desta metodologia tanto nos meios acadêmicos, quanto no meio
profissional, onde a busca por metodologias deste tipo é cada vez maior.
62
O estudo realizado sobre a ferramenta dotProject significou muito, pois foi um estudo
que possibilitou a realização deste trabalho e colaborou com a documentação do dotProject na
língua portuguesa para desenvolvedores dessa plataforma.
O ambiente desenvolvido atende aos principais artefatos do Scrum, sendo estes
separados em três módulos do dotProject. No primeiro módulo atende-se a três desses
artefatos, sendo eles o Product Backlog, o Release Backlog e o gráfico de Burn-Down gerado
a partir dos requisitos versus o tempo decorrido. No segundo módulo se atende a mais dois
artefatos, sendo eles o Sprint Backlog e o gráfico de Burn-Down, desta vez analisando as
tarefas versus o tempo decorrido no Sprint. No terceiro e último módulo é o Daily Scrum que
atende a um artefato que não é explicitamente definido no Scrum, porém achou-se
conveniente registrar as dúvidas e soluções apresentadas durante esta reunião.
Foram realizados apenas testes funcionais ao longo da evolução do ambiente. Os
resultados apresentados demonstram o atendimento adequado aos principiais artefatos
utilizados pelo Scrum.
63
4 CONCLUSÕES
Foi desenvolvido um ambiente web para gerenciamento de processo de software
baseado na metodologia Scrum. Por se utilizar do dotProject como base de desenvolvimento,
este teve sua finalização melhor depurada por se utilizar de diversas classes e funções já
bastante testadas. A principal dificuldade com relação ao dotProject foi a sua documentação,
que é basicamente restrita ao site da comunidade dotProject.
O dotProject foi estendido e adaptado para se adequar a metodologia ágil Scrum. Para
isso foram criados três módulos adicionais (Product Backlog, Sprint Backlog e Daily Scrum).
Estes foram desenvolvidos na língua nativa do dotProject (inglês) e traduzidos para o
português através de arquivos de configuração do dotProject.
O estudo realizado na metodologia ágil Scrum poderá servir de referência para novos
estudos sobre esta metodologia. O estudo demonstrou que o Scrum por ser uma metodologia
ágil pode ser utilizado como alternativa de processo de software para pequenas e médias
empresas de software, pois é um processo pouco burocrático que visa resultados ao invés de
documentação extensa, reage a mudanças e valoriza os indivíduos que participam no processo
e a interação entre eles.
4.1 EXTENSÕES
Uma extensão para este trabalho seria a maior integração do módulo de tarefas já
existente no dotProject com o módulo Sprint Backlog criado no decorrer do trabalho para
geração de percentuais de conclusão de trabalho, bem como a contabilização das horas
trabalhadas e o custo do trabalho realizado.
Uma segunda sugestão de extensão da ferramenta é a inclusão de artefatos que não são
64
exclusivamente do Scrum, mas que podem fazer uma maior integração entre as tarefas como o
gráfico de Program Evaluation and Review Technique (PERT) que demonstra a dependência
de uma tarefa em relação à outra.
65
REFERÊNCIAS BIBLIOGRÁFICAS
ABRAHAMSSON, Pekka et al. New directions on agile methods: a comparative analysis. In: ICSE – INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING, 25., 2003, Portland. Proceedings... Portland: IEEE Computer Society, 2003. Disponível em: <http://www.informatik.uni-trier.de/~ley/db/conf/icse/icse2003.html#AbrahamssonWSR03>. Acesso em: 10 mar. 2005.
AGILE ALIANCE. Manifesto for agile software development. [S.l.], 2005. Disponível em: < http://www.agilemanifesto.org/>. Acesso em: 06 jul. 2005.
BRASIL, Secretaria de Logística e Tecnologia da Informação. Guia Livre : referência de migração para software livre do governo federal. Brasília: CISL, 2004. 233 p. Disponível em: <http://www.governoeletronico.gov.br/governoeletronico/publicacao/noticia.wsp?tmp.noticia=469&wi.redirect=RXN5BU>. Acesso em: 13 maio 2005.
CONTROL CHAOS. What is Scrum. [S.l.], 2005. Disponível em: <http://www.controlchaos.com>. Acesso em: 15 jun. 2005.
DOTPROJECT. Open source software. [S.l.], 2005. Disponível em: <http://www.dotproject.net>. Acesso em: 15 jun. 2005.
MARQUARDT, Luciano. Ferramenta web para gerenciamento de requisitos de software. 2004. 87 f. Trabalho de Conclusão de Curso (Bacharelado em Ciência da Computação) – Centro de Ciências Exatas e Naturais, Universidade Regional de Blumenau, Blumenau.
POHREN, Daniel. XPMANAGER: uma ferramenta de gerência de projetos baseados em extreme programming. 2004. 172 f. Trabalho de Conclusão de Curso (Bacharelado em Ciência da Computação) – Instituto de Ciências Exatas e Tecnológicas, Centro Universitário Feevale, São José dos Campos.
REIS, Christian. Caracterização de um processo de software para projetos de software livre . 2003. 247 f. Dissertação (Mestrado em Ciências da Computação e Matemática Computacional) – Instituto de Ciências Matemáticas e de Computação, Universidade de São Paulo, São Carlos.
SANTOS, Alexandre Denes dos; MARTINS, Jefferson Carlos; LEAL, Manoel Flávio.Agile Modeling – Overview. Bate Byte. Curitiba, n. 131, maio 2003. Disponível em: <http://www.pr.gov.br/batebyte/edicoes/2003/bb131/index.shtml>. Acesso em: 06 jul. 2005.
SCHWABER, Ken. SCRUM Development Process: Advanced Development Methods. In: ANNUAL CONFERENCE ON OBJECT-ORIENTED PROGRAMMING SYSTEMS, LANGUAGES, AND APPLICATIONS ADDENDUM TO THE PROCEEDINGS, 10., 1995, Austin. Proceedings... Austin: ACM/SIGPLAN, 1995. Disponível em: <http://jeffsutherland.com/oopsla/oo95summary.html>. Acesso em: 15 jun. 2005.
66
SCHWABER, Ken. Agile project management with Scrum. Redmond, Wash: Microsoft Press, 2004.
SCHWABER, Ken; BEEDLE, Mike. Agile software development with Scrum. Upper Saddle River, New Jersey: Prentice Hall, 2002.
SOARES, Michel dos Santos. Metodologias ágeis extreme programming e Scrum para o desenvolvimento de software. RESI Revista Eletrônica de Sistemas de Informação. Campo Largo, v. 3, n. 1, nov. 2004. Disponível em: < http://www.presidentekennedy.br/resi/>. Acesso em: 15 jun. 2005.
67
APÊNDICE A – Dicionário de dados das principais entidades utilizadas pelo ambiente
Companies Coluna Tipo PK Descrição company_id INTEGER Sim Código da empresa company_module INTEGER Não utilizado/documentado company_name VARCHAR(100) Nome da empresa company_phone1 VARCHAR(30) Telefone principal da empresa company_phone2 VARCHAR(30) Segundo telefone da empresa company_fax VARCHAR(30) Fax da empresa company_address1 VARCHAR(50) Endereço principal da empresa company_address2 VARCHAR(50) Segundo endereço da empresa company_city VARCHAR(30) Cidade da empresa company_state VARCHAR(30) Estado da empresa company_zip VARCHAR(11) Código postal da empresa company_primary_url VARCHAR(255) Endereço eletrônico da empresa company_owner INTEGER Responsável pela empresa no ambiente company_description TEXT Descrição da empresa company_type INTEGER Tipo da empresa (Interno, Cliente, ...) company_email VARCHAR(255) Email da empresa company_custom LONGTEXT Observações sobre a empresa daily_scrum Coluna Tipo PK Descrição daily_scrum_id INTEGER Sim Código do registro de Daily Scrum user_id INTEGER Código do usuário do registro de Daily Scrum daily_scrum_qt1 TEXT Primeira questão do Daily Scrum daily_scrum_qt2 TEXT Segunda questão do Daily Scrum daily_scrum_qt3 TEXT Terceira Questão do Daily Scrum product_backlog Coluna Tipo PK Descrição product_backlog_id INTEGER Sim Código do requisito project_id INTEGER Código do projeto product_backlog_nm VARCHAR(255) Nome do requisito product_backlog_ds TEXT Descrição do requisito hour_est INTEGER Horas estimadas pelo Product Owner product_backlog_st INTEGER Status do requisito sprint_id INTEGER Identificação do ciclo do requisito release_id INTEGER Identificação do versão do requisito prior_id INTEGER Identificação de prioridade do requisito project Coluna Tipo PK Descrição project_id INTEGER Sim Código do projeto project_company INTEGER Empresa responsável do projeto project_department INTEGER Departamento do projeto
68
project_name VARCHAR(100) Nome do projeto project_short_name VARCHAR(50) Nome curto para o projeto project_owner INTEGER Usuário responsável pelo projeto project_url VARCHAR(255) Endereço eletrônico do projeto project_demo_url VARCHAR(255) Endereço eletrônico do demo do
projeto project_start_date DATETIME Data de inicio project_end_date DATETIME Data prevista para o fim project_actual_end_date DATETIME Data atual do fim project_status INTEGER Situação do projeto project_percent_complete TINYINT Percentual completo do projeto project_color_identifier VARCHAR(6) Cor de identificação do projeto project_description TEXT Descrição do projeto project_target_budget INTEGER Previsão de gastos do projeto project_actual_budget INTEGER Gastos atual project_creator INTEGER Criador do projeto project_active TINYINT Situação de projeto ativo project_private TINYINT Situação de projeto privado sprint_backlog Coluna Tipo PK Descrição sprint_backlog_id INTEGER Sim Código da tarefa product_backlog_id INTEGER Requisito que gerou a tarefa sprint_backlog_nm VARCHAR(255) Nome da tarefa sprint_backlog_ds TEXT Descrição da tarefa requisitor_id INTEGER Usuário requisitor da tarefa user_id INTEGER Usuário responsável pela tarefa
hours_1 INTEGER Previsão/trabalhado na primeira
semana hours_2 INTEGER Previsão/trabalhado na segunda semana hours_3 INTEGER Previsão/trabalhado na terceira semana hours_4 INTEGER Previsão/trabalhado na quarta semana user Coluna Tipo PK Descrição user_id INTEGER Sim Código do usuário user_username VARCHAR(20) Nome para entrada no sistema user_password VARCHAR(32) Senha para entrada no sistema user_parent INTEGER Não utilizado/documentado user_type TINYINT Tipo do usuário user_first_name VARCHAR(50) Primeiro nome do usuário user_last_name VARCHAR(50) Sobrenome do usuário user_company INTEGER Empresa do usuário user_department INTEGER Departamento do usuário user_email VARCHAR(255) Email do usuário user_phone VARCHAR(30) Telefone do usuário user_home_phone VARCHAR(30) Telefone residencial do usuário user_mobile VARCHAR(30) Telefone celular do usuário user_address1 VARCHAR(50) Endereço principal do usuário
69
user_address2 VARCHAR(50) Segundo endereço do usuário user_city VARCHAR(30) Cidade do usuário user_state VARCHAR(30) Estado do usuário user_zip VARCHAR(11) Código postal do usuário user_country VARCHAR(30) Pais do usuário user_icq VARCHAR(20) ID do icq do usuário user_aol VARCHAR(20) ID do aol do usuário user_birthday DATETIME Aniversário do usuário user_pic TEXT Foto do usuário user_owner INTEGER Responsável pelo usuário