Fasci-Tech - Fatec São Caetano do Sul

Propaganda
Fasci-Tech
Engenharia de Software em Sistemas Informatizados para Biblioteca
Sueli Aparecida Loddi1
Samaris Ramiro Pereira 2
Bruno de L. Vigidio3
Thiago de A. Roque4
Resumo:
Este artigo aborda o desenvolvimento do sistema de informação
denominado FATEC-SBIB. Este projeto foi desenvolvido por três alunos
da FATEC-SB como trabalho de conclusão de curso. O objetivo do grupo
foi melhorar os processos de gerência de acervo da biblioteca,
automatizando atividades executadas de forma manual. Cada aluno focou
uma perspectiva do desenvolvimento do sistema: o banco de dados
relacional, a tecnologia de arquitetura em multicamadas e a utilização do
método ágil SCRUM.
Palavras-Chave: Banco de dados; Biblioteca; Engenharia de Software;
Scrum; Arquitetura em Multicamadas.
Abstract:
This paper presents the FATEC-SBIB information system, a final
paper developed by three students, to be used as a support to FATEC-SB
library management process. The main objective of the project is to
improve the library collection management and the automation of manually
controlled activities. Each student focused on a different perspective:
relational databases; multi-tiers architecture technology; and project
management through the Agile process SCRUM.
Keywords: Database; Library; Software engineering; Scrum; Multi-tiers
architecture.
1. Introdução
A FATEC-SB (FATEC_SB,2009) é uma Instituição de Ensino Superior, que
iniciou sua atividades no ano de 2005, e divide o Campus com a ETEC Lauro Gomes,
no Município de São Bernardo do Campo. Seu acervo de livros é administrado pela
1
Professora Mestre da Faculdade de Tecnologia de São Bernardo do Campo (FATEC-SB) e do Centro
Universitário Fundação Santo André (FAENG).
2
Professora Mestre da Faculdade de Tecnologia de São Bernardo do Campo (FATEC-SB).
3
Graduado em Tecnologia em Informática para Gestão de Negócios pela Faculdade de Tecnologia de São
Bernardo do Campo (FATEC-SB).
4
Graduado em Tecnologia em Informática para Gestão de Negócios pela Faculdade de Tecnologia de São
Bernardo do Campo (FATEC-SB).
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v.1, n. 2, Jan./Jun. 2010, p.
97 a 112.
Fasci-Tech
biblioteca da ETEC Lauro Gomes, sendo que o sistema de gerenciamento, consulta e
empréstimo dos livros é manual. No intuito de melhorar o funcionamento dessa
biblioteca, foi desenvolvido um sistema de informação em código livre denominado
FATEC-SBIB, como esforço conjunto de três trabalhos de conclusão de curso. Os
autores deste artigo são dois dos desenvolvedores do sistema e seus respectivos
orientadores. São apresentadas as ferramentas empregadas para o desenvolvimento do
sistema e os principais conceitos envolvidos no projeto, entre eles a tecnologia de
arquitetura em multicamadas e a gestão do projetos através do método ágil SCRUM.
A metodologia utilizada foi pesquisa bibliográfica (LAKATOS et al., 1985),
constituída de livros, artigos e materiais disponibilizados na Internet em páginas
idôneas. Foi utilizada também, a experiência vivenciada no desenvolvimento do
sistema.
2. Banco de Dados (BD)
Banco de Dados são softwares de armazenamento de dados baseado em
computador, cujo objetivo é registrar e manter informações consideradas significativas
para a organização. Sua correta utilização possibilita um ambiente eficiente e adequado
de recuperação e armazenamento de grandes quantidades de informações. Seu conceito
originou-se na década de 1970, quando as organizações tinham um alto custo na
contratação de pessoas para armazenar e organizar os dados de forma manual. A
automatização de rotinas com seu auxílio reduziram os custos e erros humanos. Tais
vantagens permanecem até os dias atuais (SILBERSCHATZ et al., 1999).
Um Banco de Dados é criado e mantido por um conjunto de aplicações
desenvolvidas especialmente para esta tarefa. Esses softwares são chamados Sistemas
Gerenciadores de Banco de Dados (SGBD). Um SGBD deve isolar o usuário dos
detalhes internos do banco de dados, promovendo a abstração e independência dos
dados em relação às aplicações, ou seja, tornar a estratégia de acesso e a forma de
armazenamento de dados independente da aplicação (ELMASRI et al., 2005).
Atualmente predomina o Modelo Relacional de Banco de Dados, introduzido no
ano de 1970 pelo Dr. Edgar Frank Codd, conhecido como o pai do modelo relacional.
Sua simplicidade de uso e desempenho o tornou um padrão para aplicações comerciais.
O Modelo Relacional possui uma linguagem de programação própria: Structured Query
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v.1, n. 2, Jan./Jun. 2010, p.
97 a 112.
Fasci-Tech
Language (SQL). Ela se divide em duas partes: (1) Data Definition Language (DDL),
Linguagem de Definição de Dados, destinada à manutenção dos objetos do Banco de
Dados; (2) Data Manipulation Language (DML), Linguagem de Manipulação de
Dados, responsável pela manutenção dos dados armazenados no Banco de Dados.
A
linguagem SQL é utilizada para acessar e fazer a manutenção no Banco de Dados de
duas formas: (1) sendo executada dentro de outras linguagens de programação, ou, (2)
por meio de Store Procedures, que são procedimentos armazenados e pré compilados
que executam conjuntos de comandos (ELMASRI et al., 2005).
Um importante recurso dos SGBDs relacionais é o de Transação. Segundo
Silberschatz et al. (1999), transação “é uma unidade de execução de programa que
acessa e, possivelmente, atualiza vários itens de dados”. A transação é geralmente o
resultado da execução de uma DML de auto nível, ou de algum código em linguagem
de programação. Um SGBD deve garantir a execução apropriada das transações com
relação às falhas – ou a transação é executada por completo ou nada é executado.
Quando não há falhas, as transações completam-se com sucesso, chamadas
então de commited (efetivada) e suas atualizações permanecem no Banco de Dados.
Entretanto, uma transação nem sempre se completa com sucesso. Se ela for abortada,
não terá efeito sobre o Banco de Dados. Portanto quaisquer atualizações que a transação
abortada tiver efetuado devem ser desfeita, esse processo é conhecido como rolled back
(SILBERSCHATZ et al., 1999).
3. C Sharp (C#)
A linguagem de programação C# foi desenvolvida pela Microsoft, dentro do
projeto da arquitetura Dot Net (.Net), especificamente para essa plataforma. Foi criado
tendo como base linguagens de programação já conceituadas no mercado,
principalmente C++, Delphi e Java. As principais vantagens de cada uma dessas
linguagens foram mantidas, erros foram corrigidos e melhorias acrescentadas, tornando
o C# uma linguagem com muitos recursos (SANTOS, 2009).
4. Orientação a Objetos (OO)
Um objeto é uma entidade do mundo real, concreta (uma bicicleta) ou conceitual
(uma estratégia de jogo, uma política de escalonamento em um sistema operacional).
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v.1, n. 2, Jan./Jun. 2010, p.
97 a 112.
Fasci-Tech
Cada objeto tem sua identidade, dois objetos são distintos mesmo que apresentem
exatamente as mesmas características. A estrutura de um objeto são seus atributos e
comportamento. Os atributos representam as características dos objetos e o
comportamento o conjunto de operações aplicáveis ao objeto (TONSING, 2008).
Objetos com os mesmos atributos e comportamentos podem ser agrupados em
uma única classe. Cada classe pode ter um conjunto, que pode ser infinito, de objetos.
Para cada objeto é criado uma instância dentro da classe, assim cada instância dentro de
uma classe tem seus próprios valores para cada atributo. O paradigma OO favorece no
desenvolvimento de software, visto que se propõe a resolver problemas básicos:
diminuir o tempo de desenvolvimento, torná-lo confiável, com baixo custo e
possibilidade de reaproveitamento de códigos. Ferramentas para alcançar este
compartilhamento, tais como abstração, encapsulamento e polimorfismo, estão
presentes na metodologia. (BEZERRA, 2006; BOOCH et al 2006 ).
A abstração focaliza os aspectos essenciais de uma entidade na aplicação a ser
desenvolvida, ou seja, concentrar-se no que ela faz, sem se preocupar com o
desenvolvimento da aplicação. Dessa forma, decisões relativas à implementação serão
tomadas apenas quando houver o entendimento dos requerimentos (BEZERRA, 2006).
O encapsulamento separa os aspectos externos de um objeto (acessíveis a outros
objetos) dos detalhes internos da implementação do objeto, os quais permanecem
escondidos no interior dos objetos, permitindo que a implementação possa ser
modificada sem afetar as aplicações que usam este objeto (BEZERRA, 2006).
Para que um objeto realize alguma tarefa, ele precisa receber um estímulo.
Independentemente da origem do estímulo, quando ele ocorre, o objeto em questão está
recebendo uma mensagem. Uma mensagem é uma solicitação enviada de objeto a outro,
solicitando alguma operação. A mesma mensagem enviada a objetos diferentes podem
gerar comportamentos diferentes no receptor (polimorfismo) (BOOCH et al 2006 ).
A Unified Modeling Language (UML) é uma linguagem gráfica padrão para a
elaboração da estrutura de projetos complexos de software. A UML pode ser empregada
para visualizar, especificar, construir e documentar os artefatos de sistemas de software.
A UML é o resultado da unificação da linguagem de modelagem de objetos de métodos
líderes do mercado (BEZERRA,2006; BOOCH et al 2006 ).
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v.1, n. 2, Jan./Jun. 2010, p.
97 a 112.
Fasci-Tech
Tonsing (2008) afirma que a utilização da UML em um projeto promove os
seguintes aspectos: (1) Disponibilizar mecanismos de especificação em níveis
conceituais; (2) Tornar o processo de desenvolvimento independente da linguagem de
programação; (3) Incentivar o uso do paradigma OO, e (4) suportar conceitos de
programação de alto nível.
5. Desenvolvimento em Multicamadas
Segundo Neward (2003) as camadas são uma separação lógica na estrutura do
código fonte de uma um sistema, onde cada parte dele é independente ficando mais fácil
dividir às responsabilidades do sistema. Segundo o autor a utilização de camadas ajuda
a estruturar aplicativos, que podem ser decompostos em grupos de sub-tarefas, onde
cada grupo representa um nível de abstração. Os primeiros sistemas produzidos
possuíam apenas uma camada, ou seja, feitos em um único código que acessava os
dados, tratava as regras de negócios e fazia a interface com o usuário. Dada a tecnologia
da época, esses sistemas “rodavam” e eram armazenados em um único servidor. Caso
sua lógica não fosse muito bem estruturada, manutenções eram complicadas e
demoradas.
Na década de 1990 os computadores pessoais passaram a contar com capacidade
de processamento suficiente para “rodar” os programas, sem a necessidade de um
servidor. Aliada à evolução das redes de computadores, os métodos de desenvolvimento
de sistemas evoluíram para uma arquitetura descentralizada, e os computadores pessoais
passaram a ter um importante papel nos sistemas e aplicações, pois parte do
processamento era feito na máquina do usuário, e um servidor era responsável por
acessar o Banco de Dados.
Baseado nesse modelo, surgiu a arquitetura em duas
camadas, uma camada é armazenada na máquina do usuário e outra no servidor
(GRANATYR, 2009).
Com o advento da Internet, a arquitetura em duas camadas ficou inviável, pois a
carga de complexos algoritmos de negócios na máquina cliente era muito demorada.
Esse problema levou à criação de novas técnicas de desenvolvimento em multicamadas,
visando melhorar o desempenho e/ou diminuir a necessidade de carregar todos esses
algoritmos nas máquinas clientes. Uma delas foi o modelo em três camadas, que são:
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v.1, n. 2, Jan./Jun. 2010, p.
97 a 112.
Fasci-Tech
apresentação, negócios e dados. A camada de apresentação está localizada fisicamente
na máquina cliente. Essa camada é responsável por fazer a interface entre o cliente e as
outras camadas que estão localizadas em outras máquinas. Essa camada normalmente é
leve, contendo pouco código fonte, composta apenas por telas do sistema e pelas
validações dos campos. Ela armazena as informações fornecidas e operações solicitadas
pelo usuário e transmite essas informações para as demais camadas. Essa camada
também retorna os dados fornecidos pelo sistema e apresenta esses dados para o usuário
(GRANATYR, 2009).
A camada de negócios é responsável por fazer o requerimento ao Banco de
Dados e todo o tratamento dos dados, ou seja, somente ela acessa o Banco de Dados.
Ela pode ser dividida em outras duas camadas: camada de acesso a dados e lógica de
negócios. Na camada de lógica de negócios, ficam localizados todos os métodos para o
tratamento das informações; nessa parte da camada ela faz a interface entre a camada de
apresentação e acesso a dados. Normalmente essa camada fica em um servidor
dedicado, com elevados recursos de hardware, pois nele ficam os métodos para o
tratamento desses dados. Várias estações clientes podem se conectar a um mesmo
servidor de camada de negócios (GRANATYR, 2009).
Na camada de acesso a dados, ficam todos os métodos para fazer acesso físico
ao Banco de Dados, como métodos para abrir/fechar a conexão, entre outros. Essa
camada fica localizada junto à camada lógica de negócios. O objetivo da camada de
dados é isolar o resto da aplicação da manipulação de Dados. Sua função é retornar os
dados de forma que a camada de negócios os trate e/ou atualize, de acordo com as
regras de negócios, separando logicamente, e se possível fisicamente, essas camadas
(MICROSOFT, 2008).
Segundo Battisti (2003) o modelo em quatro camadas surgiu como evolução ao
modelo de três. A idéia básica é que a camada de apresentação é retirada da máquina do
cliente e colocada em um servidor. Isso retira a necessidade de instalação de programa
na máquina cliente; o usuário acessa o programa por meio de um Navegador de Internet
e por meio dele faz todas as operações necessárias.
6. Métodos Ágeis e o Scrum
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v.1, n. 2, Jan./Jun. 2010, p.
97 a 112.
Fasci-Tech
Um método de desenvolvimento de software é um conjunto de atividades que
auxiliam sua produção. O resultado dessas atividades é um produto que reflete a forma
como todo o processo foi conduzido. Os problemas com os projetos e a insatisfação
com as abordagens pesadas levaram os desenvolvedores de software na década de 1990
a propor modificações. (SOMMERVILLE, 2007). Desde então, surgem novos métodos,
chamados de ágeis, que focam de forma diferenciada o desenvolvimento, entre eles:
Scrum, eXtreme Programming, Crystal, Adaptive Software Development, DSDM,
Feature Driven Development e instâncias ágeis do Processo Unificado (LARMAN,
2003).
Sommerville (2007) ressalta que, ao utilizar uma metodologia ágil, um
representante dos stakeholders deve estar disponível quase o tempo todo. Isto se torna
um problema principalmente se houver muitos stakeholders com prioridades distintas.
A motivação para a agilidade e métodos iterativos está nos seguintes tópicos: (1)
Clientes ou usuários não têm certeza do que querem; (2) Eles têm dificuldade de dizer o
que querem e o que sabem; (3) Detalhes do que eles precisam serão revelados durante o
desenvolvimento; (4) Os detalhes são complexos para os usuários; (5) Como eles vêem
o desenvolvimento do produto, eles mudam seus pensamentos; (6) Forças externas
(como um competidor, produto ou serviço) podem levar a modificações.
Scrum é um processo ágil ou ainda um framework para gerenciamento de
projetos ágeis. É um processo de gerência de projetos, certamente não uma
metodologia, pois isto seria pesado demais. Tem suas raízes em um artigo publicado em
1986, que introduziu o termo Scrum ao referir-se às reuniões de equipes. Baseia-se em
equipes de no máximo sete pessoas. Requisitos pouco estáveis e/ou desconhecidos e
iterações curtas. O desenvolvimento da aplicação se divide em fases, com no máximo
30 dias, também chamados de Sprints (MARTINS, 2007; GERMANO, 2009).
Existem três papéis previstos na metodologia: (1) Scrum Master ocupa uma
posição similar à ocupada pelo gerente de projeto e deve agir como um facilitador para
o time; (2) Product Owner representa os interesses da Organização patrocinadora do
projeto, e (3) Equipe de Scrum é o grupo de pessoas responsáveis por desenvolver
funcionalidades do produto, devendo ser auto-gerenciadas, auto-organizadas e
multifuncionais (SCHWABER, 2004; MARTINS, 2007). O quadro 1 ilustra as
responsabilidades de cada papel descritas na metodologia.
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v.1, n. 2, Jan./Jun. 2010, p.
97 a 112.
Fasci-Tech
O Scrum propõe uma forma de trabalho flexível que se adapta a ambientes muito
dinâmicos (KOSCIANSKI et al., 2007). Visa a tratar mudanças frequentes de requisitos
de software e outras situações, tais como: trocas de equipe, adaptações de cronogramas,
trocas de ferramentas de desenvolvimento ou das linguagens de programação.
Para
Kniberg (2007) o melhor e o pior do Scrum é que em cada projeto é necessário adaptar
o processo à situação específica. O quadro 2 mostra um resumo das fases do Scrum.
De acordo com Schwaber (2004) o Scrum introduz alguns novos artefatos. Estes
são usados durante todo o processo que são o Product Backlog e o Sprint Backlog.
Quadro 1 – Responsabilidades no Scrum
Atividade
Responsável
Responsabilidades
Gerenciar a
Visão
Product
Owner
Estabelece, nutre e comunica a visão do produto.
Consegue o investimento inicial e cria Product
Backlog inicial.
Gerenciar o ROI
Product
Owner
Monitora o projeto por meio das metas de Return on
Investimet (ROI) e da visão de investimento. Atualiza
e prioriza o Product Backlog assegurando que a
funcionalidade mais valiosa seja desenvolvida
primeiro. Prioriza e refina o Product Backlog e mede
sucesso vs. despesas.
Gerenciar a
Time
Sprint de
desenvolvimento
Durante uma Sprint o time seleciona e desenvolve as
funcionalidades de maior prioridade no Product
Backlog. Coletivamente, o time expande os itens do
Product Backlog em pequenas tarefas, criando assim o
Sprint Backlog, e depois se auto gerencia.
Gerenciar o
processo
Scrum Master
Direcionar o time para o sucesso; Alinha o projeto e a
cultura organizacional a fim de atender ao ROI;
Organiza reuniões de planejamento e revisão. Protege
o time de influências externas. Otimiza reuniões
diárias e a remove de impedimentos.
Gerenciar a
entrega
Product
Owner
Decide quando criar uma entrega oficial. Por uma
série de razões pode não ser desejável entregar o
produto na conclusão de cada incremento.
Fontes: Adaptado de Schwaber(2004) e Martins (2007)
O Product Backlog é uma lista de requisitos, estórias, funcionalidades que o
cliente deseja, descritas utilizando a terminologia do cliente. Essa lista pode ser ajustada
durante todo o projeto pelo Product Owner, responsável pelo conteúdo, priorização e
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v.1, n. 2, Jan./Jun. 2010, p.
97 a 112.
Fasci-Tech
disponibilidade da mesma. Os itens no Product Backlog podem sofrer alterações de
prioridade, requisitos podem ser adicionados ou removidos (KNIBERG, 2007).
De acordo com Martins (2007) em um processo ágil você nunca deverá planejar
nada além da iteração seguinte, pois como os requisitos e prioridades podem mudar, o
planejamento de ações futuras pode se tornar uma perda de tempo.
Martins (2007) define o Sprint Backlog como uma lista com os itens do Product
Backlog que a equipe acredita que poderá produzir no próximo Sprint. Ela deve se
atualizada diariamente com as evoluções do projeto. Seu formato deve se similar ao
Product Backlog, contando com duas colunas de informações a mais: uma para cada dia
do Sprint e outra para que cada membro da equipe vai apontar quantas horas ainda
precisam ser trabalhadas naquele item para que seja concluído.
Quadro 2 – Resumos das fases do Scrum
Fases
Propósito
Estabelecer a visão.
Definir expectativas.
Assegurar o capital.
Arquitetura.
Identificar requisitos e
Design alto nível. priorizá-los para a
primeira iteração.
Desenvolvimento. Implementar um
sistema pronto para
entrega em uma
iteração de 30 dias
(Sprints).
Fechamento.
Implantação.
PósGame
Game
Pré-Game
Planejamento.
Atividades
Escrever a visão. Orçamento.
Product Backlog. Estimar os
itens. Protótipos e design inicial.
Planejamento. Protótipos e
design inicial.
Reunião de planejamento do
Sprint em cada iteração,
definindo o Sprint Backlog e
estimativas. Reuniões diárias e
de retrospectiva.
Documentação. Teste de
aceitação. Treinamento.
Marketing e vendas.
Fonte: Larman(2003)
7. Desenvolvimento do Sistema FATEC-SBIB e seus desafios
Para o gerenciamento do projeto foi utilizado a método ágil Scrum, tema de
projeto de Trabalho de Conclusão de Curso do aluno Bruno (VIGIDIO, 2009). A
arquitetura do sistema foi implementada em multicamadas, tema do aluno Thiago
(ROQUE, 2009). O aluno Allan focou seu projeto nas transações em Banco de Dados
(FERNANDES, 2009). Este tópico resume os três trabalhos.
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v.1, n. 2, Jan./Jun. 2010, p.
97 a 112.
Fasci-Tech
Dentre as opções de SGBD, optou-se pelo Microsoft SQL Server 2000, um
SGBD relacional conhecido pela sua excelência e estabilidade.
A linguagem para desenvolvimento do sistema foi a C#, pois suporta orientação
a objeto e possibilita a aplicação dos conceitos de multicamadas através do pacote para
desenvolvimento da Microsoft, o Microsoft Visual Studio (MICROSOFT, 2008).
A Arquitetura adotada foi a de desenvolvimento em camada, implementada
pelas camadas: de Banco de Dados, de Negócios e de Apresentação.
Visando à integridade dos dados, foram utilizadas as transações: Empréstimo;
Inserção de obras; Devolução com multa; Devolução sem multa. O sistema conta
também com um dicionário de dados com as definições dos metadados.
A camada de banco de dados foi a primeira a ser desenvolvida e foi dividida
em três partes: tabelas, Store Procedure e Acesso. Para cada parte da camada foi
utilizada uma técnica. As tabelas foram criadas com as técnicas de normalização e de
programação em SQL. Para cada funcionalidade do sistema onde é necessária a
interação com o Banco de Dados, foi criada uma Store Procedure. O Acesso de Banco
de Dados foi feito por uma camada dentro da aplicação, composta por duas classes, que
recebem os parâmetros da aplicação e os enviam para o Banco de Dados e vice-versa.
A camada de negócios encapsulou as regras de negócios da aplicação, onde,
para cada uma das funcionalidades foi criada uma classe, que por sua vez continham os
métodos para as uma regra de negócio. A camada controla quando é necessário um
roteamento e acessa o respectivo método. Essa camada recebe as informações da
camada de apresentação, que foi dividida em diversas telas, cada uma representando
uma funcionalidade de interação.
O quadro 3 mostra o papel e as tarefas dos envolvidos com o projeto, de acordo
com o método ágil Scrum. Com os papéis e ferramentas definidas, a aplicação do Scrum
se iniciou com a criação da visão do sistema. Para gerar o Product Backlog, foram feitas
algumas entrevistas junto ao especialista de domínio e com o Product Owner, para
entendimento das necessidades e para verificar o que era esperado do sistema. Muitas
dessas entrevistas tiveram a participação da equipe toda, o que facilitou o entendimento
para todos. Ao final dessas entrevistas, o Scrum Master e o Product Owner definiram a
visão inicial do sistema. A final dessas entrevistas o Scrum Master e o Product Owner
definiram a visão inicial do sistema, com as seguintes fases de desenvolvimento:
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v.1, n. 2, Jan./Jun. 2010, p.
97 a 112.
Fasci-Tech
controle de obras; controle de usuários; empréstimo de obras; devolução de obras;
relatórios de estatísticas e o manual do usuário.
O Product Backlog adotado no projeto foi uma planilha eletrônica com duas
colunas: uma com o título do item e outra com uma breve descrição do que se esperava
daquele item. O Product Backlog era atualizado pelo Scrum Master antes da reunião de
planejamento do Sprint, utilizando-se uma planilha eletrônica. Durante as reuniões de
planejamento do Sprint, o Product Owner tinha como função detalhar, adicionar e/ou
remover itens da lista.
Quadro 3 – Papéis e tarefas dos envolvidos no projeto
Pessoa
Alan Ueda
Thiago
Roque
Edmilson S.
Carvalho
Papel
Equipe Scrum
Bruno
Vigidio
Scrum Master
José L.
Bianchi
Esp. de domínio
(biblioteca)
Product Owner
Tarefas
Definir datas para as metas estipuladas; Apresentar
os resultados para o Product Owner; Detectar
impedimentos; Participar das reuniões diárias.
Definir a visão do produto; Apresentar os requisitos
necessários para o produto; Definir a ordem das
tarefas; Aceitar ou reprovar o que foi desenvolvido.
Assegurar a aplicação correta das práticas do
Scrum; Eliminar problemas que possam afetar a
realização de tarefas; Atuar como facilitador nas
reuniões diárias; Auxiliar a comunicação.
Apresentar as regras de negócio.
Fonte: Vigidio, (2009)
Na reunião de planejamento, a função da equipe Scrum era estimar os itens em
horas, levando em conta: análise, desenvolvimento e testes. O Scrum Master agia como
mediador, sua função era encontrar o equilíbrio entre levar o máximo de valor ao cliente
sem sobrecarregar a equipe de desenvolvimento. Após concluir a reunião de
planejamento de Sprint e antes de ter a primeira reunião diária, o Scrum Master tem
fazer o Sprint Backlog para que a equipe possa escolher as tarefas. O uso de post-its nas
tarefas, mesmo não fazendo parte dos artefatos do Scrum, é altamente recomendado
pela comunidade ágil, porém neste projeto não foi adotado, por se tratar de uma equipe
pequena e com facilidade de comunicação. O quadro 4 ilustra a primeira Product
Backlog gerada, com a visão geral do sistema.
As reuniões de início do dia levavam entre 15 e 20 minutos. Durante o Sprint, a
equipe precisava assumir uma tarefa, analisar, desenvolver e testar, uma funcionalidade.
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v.1, n. 2, Jan./Jun. 2010, p.
97 a 112.
Fasci-Tech
Na análise, o responsável pela tarefa verificava se possuía todas as informações
necessárias para sua realização, se fosse preciso tirar dúvidas de negócio, elas eram
tiradas com o especialista de domínio ou com o Product Owner. Como artefato de
apoio, os diagramas de UML foram utilizados.
Na maioria das tarefas, a programação era feita em pares, onde dois integrantes
da equipe dividiam o mesmo computador. Quando o Sprint estava próximo de chegar ao
fim, era agendada uma reunião com o Product Owner e a equipe passava a se preparar
para apresentar as novas funcionalidades. Na última semana do Sprint, já com as tarefas
concluídas, o sistema passava por uma bateria de testes e correção de pequenos erros.
Quadro 4 – Primeira Product Backlog para o FATEC-SBIB
Item
Inserir Obra
Atualizar Obra
Excluir Obra
Consultar Obra
Emprestar
Verificar usuário
(empréstimo)
Inserir Usuário
Atualizar Usuário
Excluir Usuário
Consultar Usuário
Devolução
Verificar atraso
Alunos em atraso
Alunos em débito
Rel. circulação
Consulta on-line
Como demonstrar
Inserir os dados da obra, verificar se os dados obrigatórios foram
preenchidos, confirmar solicitar confirmação.
Consultar a obra, alterar os dados, verificar se os dados
obrigatórios foram preenchidos, solicitar confirmação.
Consultar a obra, solicitar confirmação.
Oferecer opções de consulta como: Autor, Código, Categoria,
Título e Tipo.
Informar o usuário (RM), entrar com o(s) código(s) da(s) obra(s),
gerar data de devolução das obras, solicitar confirmação.
Ao digitar o RM verificar se o mesmo já não possui livros
emprestados, e se não é necessário atualizar os dados do usuário.
Inserir os dados do usuário, verificar se os dados obrigatórios
foram preenchidos, solicitar confirmação.
Consultar o usuário, alterar os dados, verificar se os dados
obrigatórios foram preenchidos, solicitar confirmação
Consultar/Selecionar o usuário, solicitar confirmação
Oferecer opções de consulta tais como: Nome, CPF,RM,etc.
Consultar o usuário ou o código de uma de suas obras, escolher
os livros que serão devolvidos, solicitar confirmação.
Quando efetuada a seleção da obra em atraso o sistema deve
gerar a multa ou os dias de suspensão.
Mostrar os usuários em atraso, dar a possibilidade de buscar por
um intervalo de data, por mês ou atual.
Mostrar os usuários em débito, dar a possibilidade de buscar por
um intervalo de data, por mês ou atual.
Exibir os livros de maior circulação organizados por categoria.
Permitir consultar as obras pela Internet
Fonte: Vigidio (2009)
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v.1, n. 2, Jan./Jun. 2010, p.
97 a 112.
Fasci-Tech
Durante a reunião de apresentação com o Product Owner, o Scrum Master fazia
uma pequena retrospectiva dos itens escolhidos no planejamento do Sprint e depois a
equipe apresentava o sistema. Após avaliar a apresentação o Product Owner e o Scrum
Master atualizavam e a priorizava Product Backlog, neste momento se iniciava o
planejamento do próximo Sprint.
O Projeto contou com cinco Sprints, com aproximadamente 30 dias cada, que se
aconteceram entre Fevereiro a Agosto do ano de 2009. Sendo a 3º Sprint levou mais
tempo que o recomendado para terminar, cerca de 60 dias, também houve uma pausa
durante o mês de Julho. Ressalta-se que ao final da 4º Sprint o sistema já atendia a todas
as funcionalidades requeridas no 1º Product Backlog, sendo o último Sprint programado
apenas para uma depuração do produto final.
A versão final do sistema contou com as seguintes funcionalidades: Cadastro de
obras; Cadastro de usuários; Cadastro de leitores; Empréstimo de livros; Devolução de
obras; Renovação de obras; Registro de multas; Consulta de obras por: Código, Título,
Autor, Categoria, Assunto, ISBN; Consulta de usuários por: Nome, Registro, CPF;
Consulta de obras emprestadas; Consulta de multa. Os relatórios da versão final foram:
controle e auditoria, entre eles: Obras; Usuários; Livros mais emprestados; Estatísticas
de atrasos; Estatísticas de multa.
Ao final do projeto a equipe concluiu que: (1) a equipe deve obrigatoriamente
possuir profundo conhecimento da arquitetura selecionada; (2) em se tratando de
aplicações desenvolvidas por metodologias ágeis, por mais flexíveis que estas sejam,
seus princípios devem ser conhecidos e respeitados por toda a equipe, e (3) o sucesso do
projeto depende fortemente do comprometimento da equipe com os objetivos.
8. Considerações Finais
Os sistemas informatizados tornaram-se se uma parte essencial na maioria das
empresas, como ativo de valor. A necessidade de ligação entre as áreas para obter as
informações com mais rapidez e facilidade, demanda sistemas informatizados. Isto
também é aplicado ao ambiente de uma biblioteca, quanto mais rápida for a consulta de
uma obra ou a realização de um empréstimo, melhor não só para o usuário final, como
também para a equipe da biblioteca. Essa necessidade de sistemas gerou a evolução dos
métodos de desenvolvimento para que eles atendessem em tempo hábil ao usuário e
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v.1, n. 2, Jan./Jun. 2010, p.
97 a 112.
Fasci-Tech
também permitissem facilidade de manutenção. O Paradigma OO aliado ao modelo de
desenvolvimento em Multicamadas agrega qualidade ao processo de desenvolvimento,
possibilitando manutenções e atualizações mais rápidas e sem a necessidade de se
atualizarem as máquinas dos clientes.
No desenvolvimento deste Sistema o modelo em Multicamadas mostrou-se
eficiente e eficaz graças à utilização do método ágil Scrum. O sistema gerado
demonstrou ser funcional e de fácil operação nos testes com os stakeholders.
Um sistema necessita de constante manutenção e melhorias para o
acompanhamento de novas necessidades e tecnologias. Como trabalhos futuros, os
autores prevêem: Implantação do sistema; Treinamento de usuários; Suporte e
manutenção; Criação de módulo on-line de consulta e renovação; Levantamento e
falhas e melhorias e desenvolvimento da segunda versão.
O sistema desenvolvido para a FATEC-SB, foi disponibilizado gratuitamente
como software livre. O site da FATEC-SB está sendo reformulado e assim que
concluído permitirá o download completo do sistema, incluindo Instalador, Backup do
banco de dados em estado inicial, Código fonte e Instruções de Uso. Antes disso, o
sistema pode ser solicitado por e-mail aos autores.
9. Referências
BATTISTI, J. Criando Aplicações em 3,4 N Camadas, 2003. Disponível em:
http://www.juliobattisti.com.br/artigos/ti/ncamadas.asp. Acessado em 15 nov. 2009
BEZERRA; E., Princípios de Análise e Projeto de Sistemas com UML. 2. ed. Rio de
Janeiro: Campus, 2006.
BOOCH, G.; RUMBAUGH, J.; JACOBSON, I., UML: Guia do Usuário. 2. ed. Rio de
Janeiro: Campus, 2006.
ELMASRI, R.; NAVATHEM, S. B. Sistema de Banco de Dados. 4ª Edição. São
Paulo:Perarson Addison Wesley, 2005.
FATEC-SB. Faculdade de Tecnologia de São Bernardo do Campo. Disponível em:
<http://www.fatecsbc.edu.br/institucional.htm>. Acesso em nov. 2009.
FERNANDES, A. U. Banco de Dados para Biblioteca: FATEC-SB, um Estudo de
Caso. Monografia de conclusão de curso para obtenção do título de Tecnólogo em
Informática para gestão de negócios. FATEC-SB. 2009.
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v.1, n. 2, Jan./Jun. 2010, p.
97 a 112.
Fasci-Tech
GERMANO,
V.
H.
Scrum
for
team
system.
Disponível
em:
<http://scrumforteamsystem.com/ProcessGuidance/v2>. Acesso em out. 2009.
GRANATYR,
J.
Introdução
ao
modelo
multicamadas.
Disponível
em:
<http://www.devmedia.com.br/articles>. Acesso em dez. 2009.
KNIBERG, H. Scrum e XP direto das trincheiras – Como nós fazemos Scrum. São
Paulo: InfoQ, 2007.
KOSCIANSKI, A.; SOARES, M. dos S. Qualidade de software: Aprenda as
metodologias e técnicas mais modernas para o desenvolvimento de software. 2ª Ed. São
Paulo: Novatec, 2007.
LAKATOS, E. M.; MARCONI, M. A. Fundamentos de Metodologia Científica. São
Paulo: Ed. Atlas, 1985.
LARMAN, C. Agile and Iterative Development: A Manager's Guide. São Paulo:
Addison-Wesley Professional, 2003.
MARTINS, J. C. C. Técnicas de Gerenciamento de Projetos de Software. São
Paulo:Brasport, 2007.
MICROSOFT. How to buy Microsoft Visual Studio 2008. Disponível em:
<http://www.microsoft.com/visualstudio/en-us/howtobuy>. Acesso em dez. 2009.
NEWARD,
T.
Arquitetura
Pragmática.
2003.
Disponível
em:
http://msdn.microsoft.com/pt-br/library/aa905336.aspx. Acessado em out. 2009
RICARTE, L. M. Definições de orientação a objetos. 2001. Disponível em:
http://www.dca.fee.unicamp.br/cursos/POOCPP/node4.html. Acessado em 20 out. 2009
ROQUE, T. de A. Arquitetura Multicamadas Aplicada a um Sistema de Biblioteca.
Monografia de conclusão de curso para obtenção do título de Tecnólogo em Informática
para gestão de negócios. FATEC-SB. 2009.
SANTOS, L. C. dos. Microsoft Visual C# 2008 Express Edition: Aprenda na Prática.
1ª. Ed. São Paulo:Editora Érica, 2009.
SILBERSCHATZ, A; KORTH, H. F; SUDARSHAN, S. Sistemas de Banco de Dados.
São Paulo: Ed. Makron Books, 1999.
SOMMERVILLE, I. Engenharia de Software. 8ª ed. São Paulo: Pearson Addison
Wesley, 2007.
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v.1, n. 2, Jan./Jun. 2010, p.
97 a 112.
Fasci-Tech
TONSING, S. L. Engenharia de Software: Análise e Projeto de Sistemas. 2ª. Ed. Rio
de Janeiro: Ciência Moderna, 2008.
VIGIDIO, B. DE L. Aplicação do SCRUM no desenvolvimento e sistemas. Monografia
de conclusão de curso para obtenção do título de Tecnólogo em Informática para gestão
de negócios. FATEC-SB. 2009.
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v.1, n. 2, Jan./Jun. 2010, p.
97 a 112.
Download