segunda-feira, 21 de março de 2011

[Seminário] Introdução ao Mantis

Introdução ao Mantis

Edward Furumoto..............................................................RA: 0901413362
Mayara Claro Grego..........................................................RA: 0919436192

A manutenção de software
A manutenção de software é a fase a qual ocorrem modificações no código e em qualquer outro artefato de uma aplicação de software. A manutenção é executada para corrigir falhas na codificação, melhorar o desempenho do software, ou adequá-los aos novos requisitos.
A manutenção representa cerca de 80% do orçamento do orçamento total do ciclo de vida de um software, ou seja, é uma atividade de grande importância de qualquer software.
Dessa manutenção, 20% dos projetos de manutenção são de correção de erros, e a grande maioria é para acrescentar novas funcionalidades ou adaptá-lo a mudanças externas.
Um dos grandes problemas na manutenção de software é a alta rotatividade da equipe de desenvolvimento ou várias gerações subseqüentes de profissionais que modificaram a aplicação e não fazem mais parte da equipe. Assim, sendo necessário desenvolver mecanismos para avaliar, controlar, registrar e rastrear modificações.
Problemas técnicos e gerenciais:
- Complexidade do domínio do problema;
- Obstáculos para gerenciar e estabelecer um processo de desenvolvimento e manutenção;
- Tecnologias ultrapassadas.
Durante a fase de manutenção é possível entrar documentações mal elaboradas, ou nenhuma documentação. Com isso, os desenvolvedores gastam mais tempo analisando o software antes de modificá-los, prejudicando a entrega das demandas de modificações no mesmo.
Entre esses problemas, existem outros, como por exemplo, a maioria dos profissionais é formada com uma visão essencialmente focada no desenvolvimento de novas aplicações. E, não em modelos de manutenção.
Diante disso, a manutenção de software deve ser tratada como uma disciplina, tendo conhecimento nas áreas de manutenção de software como: a configuração de software, engenharia reversa, redocumentação e modelos de gestão para controle de mudanças.
http://www.devmedia.com.br/imagens/engsoft/artigo8/image02.jpg
Ciclo de vida de um defeito genérico.
Gerencia de Configuração de Software
Configuração de um sistema de software é uma coleção de versões específicas de itens de configuração que são combinados de acordo com procedimentos específicos de construção para servir a uma finalidade particular. A Gerencia de Configuração de Software (GCS) é para controlar mudanças e identificar as alterações feitas em softwares durante o seu desenvolvimento e manutenção. Isso permite gerenciar diferentes versões de software em desenvolvimento, permitindo que seja feita a rastreabilidade e auditoria das modificações realizadas.
Vários são os motivos para estudar e adotar a GCS. Atualmente, grandes aplicações necessitam do controle de versões, pois os engenheiros de software devem gerenciar o desenvolvimento de várias aplicações que estão sendo modificadas ao mesmo tempo e por equipes geograficamente distantes, sendo pela inserção de novos requisitos, ou por que houve um erro da aplicação em produção.
Outra motivação diz respeito às dependências que existem entre os componentes de software. Tais dependências muitas vezes são conhecidas localmente. Alguns dos desenvolvedores com esse conhecimento podem abandonar a equipe, ou serem realocados. Desta forma, devem existir meios de compartilhar o conhecimento, a fim de facilitar a manutenção do software.
Algumas atividades sobre gerência de configuração devem ser consideradas:
1 – Identificação: apóia na identificação dos componentes do software e seus tipos, tornando-os acessíveis para a equipe de desenvolvimento. A identificação também visa o mapeamento das dependências entre os seus componentes;
2 – Controle: estabelece o controle das atualizações e das mudanças no produto de software no decorrer do seu ciclo de vida. A atividade de controle deve possuir mecanismos para gerenciar e garantir a integridade da configuração do software.
3 – Geração de Estatísticas: é a geração dos relatórios de status dos componentes e dos pedidos de mudança;
4 – Auditoria e revisão: validação da completude de um produto e da integridade entre os componentes de software.
A GSC possui atividades que devem ser executadas por diversos profissionais com papéis e funções bem distintas:
- Gerente de configuração: os objetivos estão relacionados ao cumprimento de procedimentos e políticas para a criação, mudança e testes nos códigos das aplicações, bem como tornar as informações sobre os projetos mais acessíveis. Esse profissional deve implementar técnicas para manter o controle dos códigos atualizados, criando mecanismos para oficializar os pedidos das mudanças. O gerente cria e compartilha uma lista de tarefas para os Engenheiros de software, determinando o contexto do projeto de manutenção de software.
- Engenheiros de software: manter o desenvolvimento e a criação do produto de software de forma eficiente. Os engenheiros usam ferramentas que ajudam a construir um produto de software consistente, comunicando e coordenando as tarefas que foram concluídas. Um histórico da evolução de todos os componentes deve ser mantido, com o registro dos motivos das mudanças e o que realmente foi alterado. Eles também têm a responsabilidade de manter as áreas de trabalho usadas para criar, atualizar, testar e integrar os códigos das aplicações. Por fim, devem controlar a produção a produção e manutenção de código de acordo com diversas demandas de novos requisitos e a necessidade de correções geradas por erros do software em produção.
- Testador de software: Certificar se o produto de software foi desenvolvido de forma satisfatória.
Assim como todas as áreas da Engenharia de Software, a GCS necessita de soluções de software capazes de auxiliar na implementação de todas as atividades. Apesar disso, não existe uma definição universal sobre quais funcionalidades e requisitos um sistema de GCS deve possuir. Pode-se considerar que um software aplicativo que fornece controle de versão é um sistema para gerência de configuração. Outros softwares permitem registrar os pedidos de mudanças, porém muitos não integram estas funcionalidades ao controle de versão.
De maneira geral, tais sistemas devem possuir os seguintes requisitos: a) registro das versões dos componentes; b) localização das diferenças entre dois códigos modificados; c) repositórios e bibliotecas para armazenar e recuperar componentes; e, d) informações sobre diferentes tipos de componentes. Outros requisitos podem ser definidos para um sistema de GCS, como:
- Construção: os usuários precisam de meios mais fáceis de implementar o software, tendo a funcionalidade de “congelar” o status do produto em algum momento; mecanismos para otimizar os esforços da construção de sistemas; facilidades de fazer a análise dos impactos e facilitar a recuperação e geração de qualquer fase ou parte do produto.
- Auditoria: histórico de todas as mudanças; rastreabilidade; e o log de toso os detalhes dos trabalhos feitos.
- Contagem e estatística: mecanismos que registrem as estatísticas, para examinar o status do produto de software, e gerar facilmente relatórios sobre todos os aspectos do produto e processo.
- Controle: acesso cuidadoso aos componentes dos sistema para evitar qualquer mudança errada ou conflito nas mudanças; suporte on-lne para os pedidos de mudança e relatórios dos problemas; acompanhar e controlar os erros.
- Processo: suporte para seu ciclo de vida e suas políticas organizacionais; identificar tarefas para serem feitas e como e quando elas serão completadas; comunicar informações apropriadas sobre eventos relevantes; e documentar o conhecimento sobre o produto.
- Equipe: áreas de trabalho específicas; resolução de conflitos quando as mudanças são alteradas ao mesmo tempo, e facilidade para suportar a criação e manutenção de diversos produtos de software.
Um exemplo de software, usado para registrar os incidentes e modificações no software, que identifica a mudança com o preenchimento de diversas informações; possibilita o acompanhamento do processo de alteração e execução de mudanças e gera relatórios sobre a evolução dos pedidos é o Mantis.
O que é o Mantis?
Mantis Bug Tracker é uma ferramenta baseada na web que tem como principal função gerenciar defeitos de outros softwares. Ela foi escrita em PHP e funciona em diversos bancos de dados entre eles: MySQL, PostgreSQL e outros.

Gestão de Defeitos - Mantis BugTracking System
Mantis, é uma ferramenta de gestão de defeitos muito utilizada pelas empresas que adotam uma política de controle de testes e qualidade.
É uma ferramenta FREE pelos termos do GNU General Public License (GPL). Escrita em PHP, tem seu código aberto, o que permite ao usuário a possibilidade de uma grande variedade de customizações que, inclusive, são incentivadas no arquivo principal do sistema. Um grande diferencial de seus concorrentes é a possibilidade de utilização do sistema em diversos idiomas, inclusive o Português - Brasil.
São 6 níveis de usuários, (Visualizador, Relator, Atualizador, Desenvolvedor, Gerente e Administrador) cada qual possui diferentes níveis de atribuições e permições dentro do sistema, um Visualizador por exemplo pode apenas ver os registros de erros efetuados, e o Administrador tem poderes completos.
Os casos reportados (issues) são separados por projetos e sub-projetos, dessa forma ficam bem organizados dentro do sistema. Assim que são salvos, os casos são designados a um usuário, que receberá um email notificando-o como responsável pela resolução do bug. Após solucionar o erro, o responsável terá que responder ao remetente que avaliará se o caso pode ser encerrado ou não. Todas as ações são gravadas em logs que irão gerar relatórios consistentes sobre o andamento dos casos dentro de um projeto.
Com o Mantis, um gerente de projetos, por exemplo, poderá ter um controle total dos erros encontrados pelos testadores e o tempo de resposta por parte dos desenvolvedores e quais desenvolvedores estão com quais erros. Existe também uma opção que permite a um usuário acompanhar um caso e ser avisado sobre qualquer alteração no seu registro.
Estas são apenas algumas das diversas funcionalidades do sistema.
Nos próximos posts falarei mais sobre a configuração e customização do sistema.
O Mantis é uma ferramenta capaz de manter e administrar os registros e solicitações de colaboradores e usuários de sistemas e recursos de informática, facilitando o rastreamento de falhas e problemas em potencial, gerando estatísticas e documentando todo o processo de resolução das ocorrências ou problemas.
Mantis é um sistema de analise de erros opensourcebaseado em tecnologia web. Construído com base PHP funciona permite que seja uma aplicação multi plataforma.
É bastante fácil de instalar e muito flexível na sua configuração. Permite ainda especificar um numero indeterminado de estados de tarefas e atribuir perfis, programador, tester, coordenador, visualizador, etc. aos utilizadores.
Por exemplo é possível definir que apenas os testers podem declarar bugs e apenas os coordenadores os podem analisar.
O fluxo de trabalho também pode ser configurado através da ferramenta.
É uma ferramenta bastante completa e útil.

Nenhum comentário:

Postar um comentário