Processo de Desenvolvimento de Software
1 Contextualização e motivação
Vivemos em um cenário extremamente globalizado e capitalista, onde cada vez mais a busca por um espaço e a competição entre as empresas são mais acirradas. Em se tratando de empresas ou instituições desenvolvedoras de software este cenário não é diferente, e por esse motivo a busca pelo desenvolvimento de um produto de qualidade e que atenda as espectativas do cliente dentro do prazo e custo estipulado é fundamental. Um dos maiores problemas enfrentados por empresas desse tipo nos últimos tempos está relacionado à dificuldade de se estabelecer uma metodologia de desenvolvimento de software, levantar com clareza os requisitos do software, dificuldade no controle de versão e manutenção do produto, falta de uma documentação, definição de um processo de desenvolvimento de software, entre outros problemas que por consequência geram produtos não condizentes com seu propósito, além extrapolarem os custos e prazos previstos.
Segundo Pressman [PRESSMAN 2002], a falta de adoções de métodos, ferramentas e procedimentos no desenvolvimento de software, têm alcançado números expressivos de projetos não concluídos, e projetos concluídos que não atendem as necessidades do cliente. Para solucionar este problema, existe uma área do conhecimento da informática denominada engenharia de software que surgiu em meados dos anos 70, propondo a criação e a utilização de sólidos princípios de engenharia a fim de obter software de maneira econômica e confiável. Os fundamentos científicos para a engenharia de software envolvem o uso de modelos abstratos e precisos que permitem ao engenheiro especificar, projetar, implementar e manter sistemas de software, avaliando e garantido suas qualidades. Além disto, a engenharia de software deve oferecer mecanismos para se planejar e gerenciar o processo de desenvolvimento. A engenharia de software compreende diversas áreas específicas, onde podemos enumerar algumas delas:
- Requisitos de software;
- Projeto (Design) do software;
- Construção de software;
- Teste de software;
- Manutenção de software;
- Gerência de configuração de software;
- Gerência de de software;
- Processos de software;
- Ferramentas e métodos de software;
- Qualidade de software.
Dentre estas diversas áreas iremos nos focar na área de processo de engenharia de software, ou simplesmente processo de software, que por sua vez compreende diversas atividades, sendo estas relacionadas à áreas da engenharia de software. De acordo com Filho [FILHO 2001] um processo é um conjunto de passos parcialmente ordenados, constituídos por atividades, métodos, práticas e transformações, usado para atingir uma meta. Ainda em relação à definição de processo Reis [REIS 2003] afirma que 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.
Tendo como base as definições de processo e o seu propósito especificado, o estudo em questão refere-se à implantação de um processo de desenvolvimento de software em uma cooperativa de software livre denominada Tecnolivre. A falta de um processo de desenvolvimento de software e os reflexos de sua ausência na Tecnolivre expressam a motivação desse trabalho.
A Tecnolivre está presente na cidade de Lavras – MG e a idéia de criação do grupo nasceu de estudos do Prof. José Monserrat Neto (DCC/UFLA) sobre Software Livre e Economia Solidária. Entre os anos de 2005 e 2006, seu interesse pelas áreas o entusiasmou para conhecer e discutir sobre o assunto em fóruns virtuais e presenciais, como o FISL 7.0 (Fórum Internacional do Software Livre). Ao voltar deste evento, a idéia de criação de um grupo foi apresentada num colóquio para estudantes de Ciência da Computação da Universidade Federal de Lavras, a qual obteve interesse de alguns dos primeiros membros. Hoje a cooperativa Tecnolivre é composta por 18 cooperados, sendo todos estudantes do curso de Ciência da Computação da Universidade Federal de Lavras. Além da área de desenvolvimento de software a Tecnolivre atua nas seguintes áreas:
- Desenvolvimento de web sites utilizando CMS's
- Estudo de viabilidade e implantação de rede de computadores com terminais leves;
- Manutenção de máquinas;
- Treinamentos: Java, PHP, C/C++, Allegro, Linux;
- Migração de software proprietário para software livre;
2 - Objetivos e justificativas
Este trabalho objetiva implantar um processo de desenvolvimento de software que se adeqüe às características e necessidades da Tecnolivre, de forma garantir uma maior qualidade do produto desenvolvido e uma maior organização interna. Dessa forma propõe-se o estudo de alguns modelos de processos existentes, afim de avaliá-los e então dentre estes escolher o que melhor se enquadre na realidade da Tecnolivre, ou até mesmo formalizar um modelo customizado dentre as várias características dos modelos a serem estudados.
Espera-se que com a implantação de um processo consiga-se estimar de forma mais precisa os prazos e preços dos produtos desenvolvidos e que se tenha um maior controle dos projetos em andamento e seus envolvidos, justificando assim os objetivos propostos.
--
BrunoRezende - 05 Feb 2007
--
AlexandreCoelho - 09 Feb 2007