Relatório Técnico. Um Estudo Empírico sobre Práticas de Engenharia de Requisitos junto a Empresas de Pacotes de Software - PDF
Download "Relatório Técnico. Um Estudo Empírico sobre Práticas de Engenharia de Requisitos junto a Empresas de Pacotes de Software"
Kátia Tuschinski Caminha
1 Financiamento: Apoio: Relatório Técnico Um Estudo Empírico sobre Práticas de Engenharia de Requisitos junto a Empresas de Pacotes de Software Projeto Financiado pelo CNPq: Um Framework de Engenharia de Requisitos para Desenvolvimento de Produtos de Software Universidade Federal de Pernambuco Centro de Informática Coordenadora: Dr. Carina Alves Equipe: Silvia Cássia Pereira George Valença João Henrique Rodolfo Vasconcelos Carolina Neves Rosangela Souza Maiores informações sobre o projeto:
2 1. Resumo Executivo Este relatório técnico apresenta os resultados de um estudo empírico realizado junto a empresas que desenvolvem pacotes de software de Recife PE. O objetivo deste estudo foi examinar as principais práticas de desenvolvimento de software conduzidas por empresas. Neste estudo, analisamos os principais desafios e problemas enfrentados pelas empresas estudadas durante o processo de Engenharia de Requisitos (ER). Diversos estudos mostram que o processo de engenharia de requisitos é um fator crítico para o sucesso de projetos de software. De acordo com pesquisa do Gartner Group, aproximadamente 60-70% das falhas ocorridas em projetos de TI são devidas à inadequação do processo de aquisição, análise e gerenciamento de requisitos. Em geral, qualquer empresa desenvolvedora de sistemas de software necessita entender da melhor forma possível quais são os requisitos de potenciais clientes. Um dos principais objetivos do processo de engenharia de requisitos envolve o entendimento das reais necessidades e metas de clientes e usuários. Empresas que desenvolvem produtos de software visando um amplo mercado consumidor, geralmente com clientes espalhados em várias localidades, sofrem dificuldades ainda maiores para atender satisfatoriamente clientes com diferentes realidades organizacionais e necessidades específicas. Diante da crescente demanda por produtos de qualidade e da crescente exigência dos mercados consumidores, empresas de TI têm reconhecido a importância de programas de melhoria do processo de desenvolvimento de software. Pequenas e médias empresas enfrentam desafios particulares para gerenciar e melhorar seus processos em função de restrições financeiras e de pessoal. Nosso enfoque nesta pesquisa foi examinar as dificuldades enfrentadas por tais empresas para melhorar seus processos de engenharia de requisitos. Durante o período de agosto de 2006 a dezembro de 2006, realizamos um estudo com 13 empresas de pacotes de software baseadas em Recife. O estudo foi dividido em duas etapas. Na primeira, aplicamos um questionário para obter informações gerais sobre as empresas. Na segunda fase, realizamos uma entrevista semi-estruturada para investigar em detalhes como é conduzido o processo de engenharia de requisitos em cada empresa. Os principais resultados do estudo incluem os seguintes aspectos: Os maiores desafios enfrentados pelas empresas estudadas durante o processo de desenvolvimento de software são cumprir prazo de entrega, entender os requisitos dos clientes e carência de mão de obra especializada; 58,3% das empresas afirmaram não possuírem um processo bem definido de engenharia de requisitos; Os problemas mais freqüentes relacionados ao processo de engenharia de requisitos são: falta de um processo definido de ER, dificuldade de entender as reais necessidades dos usuários, marketing deficiente, dificuldade de interação com clientes e dificuldade em gerenciar requisitos; A partir dos resultados obtidos neste estudo empírico podemos concluir que, de um modo geral, as empresas compreendem a importância de conduzir um processo bem definido de requisitos para melhorar a qualidade do software e melhor satisfazer seus clientes. No entanto, elas ainda enfrentam dificuldades em definir um processo de ER específico e apropriado para sua realidade e também escolher métodos e ferramentas adequadas para suas necessidades. Dessa forma, acreditamos que iniciativas para disseminar e introduzir boas práticas em ER pode representar um importante passo para melhorar a qualidade do processo de ER das empresas estudadas.
3 3 2. Metodologia da pesquisa Esta pesquisa foi financiada pelo Conselho Nacional de Desenvolvimento Científico e Tecnológico e conduzida por uma equipe de pesquisadores e estudantes do Centro de Informática da Universidade Federal de Pernambuco. O objetivo estratégico do projeto é estimular e apoiar a troca de conhecimento na área de engenharia de software entre universidade e empresas do setor de TI. O estudo empírico foi conduzido segundo normas e premissas do método qualitativo. Este método de pesquisa é constituído de passos e técnicas que propiciam a compreensão, investigação e análise de questões por quê e como para melhor entender o objeto de estudo. No contexto desta pesquisa, o principal objetivo do estudo foi entender como empresas de pacotes de software conduzem o processo de engenharia de requisitos e quais são os principais desafios e problemas envolvidos durante o processo de ER. A pesquisa teve início com a análise bibliográfica da área e investigação de estudos semelhantes conduzidos por pesquisadores junto a empresas de software de outros países. O resultado desse estudo bibliográfico originou o levantamento de dez hipóteses relacionadas às características e práticas correntes no desenvolvimento de pacotes de software. A próxima etapa da pesquisa caracterizou-se pela identificação das empresas que iriam participar do estudo. Nesta fase, contamos com o apoio do SOFTEX Recife para divulgar a nossa pesquisa junto às empresas associadas. Assim, várias empresas foram convidadas via telefone e/ou para participar de um seminário sobre o projeto da pesquisa. Dentre as empresas participantes, 13 delas concordaram em participar do estudo. Em paralelo, elaboramos um questionário a fim de obter informações gerais sobre as empresas e entender as principais características sobre os produtos oferecidos e o processo de desenvolvimento adotado pelas mesmas. Em seguida, foram realizados pré-testes do questionário com especialistas da área durante o evento WER 06 (Workshop on Requirements Engineering), que foi realizado no Rio de Janeiro em julho de Também aplicamos o questionário com um grupo de 3 desenvolvedores de empresas de software a fim de garantir que as questões estavam claras e fáceis de entender. O objetivo dos pré-testes foi propiciar a descoberta/discussão de informações, bem como possibilitar possíveis ajustes, corrigindo erros e falhas contidos nas questões. O estudo foi dividido em duas fases. A primeira foi caracterizada pela aplicação do questionário junto a cada empresa participante. O questionário continha trinta e seis questões, que demandou ao respondente em média trinta minutos para completar o questionário. A análise dos questionários foi feita com o apoio da ferramenta SPSS (Statistical Package for the Social Sciences), que é amplamente usada para apoiar análises estatísticas. Esta análise nos possibilitou uma caracterização das empresas, bem como uma melhor compreensão do desenvolvimento do software, enfatizando principalmente o processo de engenharia de requisitos empregado pelas mesmas. A segunda fase foi caracterizada pela realização de entrevistas semi-estruturadas nas empresas participantes. Os entrevistados foram indicados pelo representante da empresa. O cargo exercido pelas pessoas entrevistadas era gerente de projeto, gerente de negócio ou analista de qualidade. Em cinco empresas entrevistamos mais de uma pessoa por empresa, a justificativa foi porque o entrevistado principal considerou importante esclarecer algumas questões com outras pessoas mais envolvidas em determinadas atividades da empresa. A entrevista foi guiada/conduzida por vinte e três questões que foram respondidas em sessenta minutos, em média. Vale salientar que todas as entrevistas foram guiadas pelas mesmas perguntas básicas. Dependendo do andamento
4 4 de cada entrevista, fizemos perguntas mais específicas para esclarecer pontos que consideramos relevantes. Esta é uma das maiores vantagens de utilizar método qualitativo de pesquisa, pois permite grande flexibilidade ao pesquisador. Os objetivos específicos das entrevistas foram entender como as empresas realizam o processo de engenharia de requisitos, investigar as formas de interação com os clientes e as estratégias de marketing utilizadas durante o desenvolvimento de pacotes de software, bem como descobrir quais são os principais desafios enfrentados durante o processo de engenharia de requisitos, além das possíveis melhorias no processo de ER. As entrevistas foram realizadas por dois pesquisadores, sendo que um deles foi responsável por fazer as perguntas e o outro foi responsável por realizar anotações durante a entrevista, assim como transcrevê-la. A equipe total foi composta por sete pesquisadores, onde a coordenadora do projeto conduziu todas as entrevistas. Após a realização das entrevistas, as mesmas foram transcritas e posteriormente revisadas por dois pesquisadores, objetivando assegurar a exatidão e a uniformidade do processo. A análise das entrevistas foi realizada através de leitura e discussão das transcrições. Cada pesquisador ficou responsável por ler todas as entrevistas e sublinhar as seções por ele consideradas relevante. Posteriormente, cinco reuniões foram realizadas com intuito de promover a discussão das informações encontradas e possibilitar a formulação de conclusões preliminares. A fim de auxiliar a atividade de análise e interpretação dos dados, foi utilizada a ferramenta Nvivo, que permite a análise qualitativa dos dados obtidos, auxiliando na organização dos registros da pesquisa e das interpretações dos mesmos. 3. Resultados Obtidos Nesta seção, apresentamos os principais resultados obtidos no estudo empírico realizado junto a 13 empresas de pacotes de software de Recife-PE. 3.1 Caracterização das Empresas As empresas estudadas têm características bastante distintas, tanto em relação ao domínio de aplicação em que atuam, como em relação ao número de funcionários e idade. A Tabela 1 apresenta as principais características das treze empresas participantes neste estudo. A maioria das empresas pode ser caracterizada como pequena e média empresa. Este é um aspecto bastante relevante, pois vários estudos têm enfatizado a necessidade de tais empresas em adotar boas práticas de engenharia de software adequadas para suas necessidades [Richardson, 2007]. Algumas empresas estão envolvidas em programas de melhoria da qualidade de seus processos e produtos. Dentre as empresas estudadas, quatro têm ISO 9001 e duas têm MPS_BR nível G. Isso revela que empresas de software estão progressivamente conscientizando-se da importância de melhorar a qualidade de seus processos e produtos.
5 5 Empresa Idade (anos) nº total de funcionários nº funcionários envolvidos no desenvolvimento Certificação A ISO 9001 B Não C Não D MPS BR NÍVEL G E ISO 9001 / Em processo de MPS.BR nível G F MPS BR NÍVEL F G Não H ISO 9001 / MPS.BR nível G (em processo para o F) I Não J Não L Não M 3-9 Não N ISO 9001 / Em processo de CMMI 2 Tabela 1 Caracterização geral das empresas estudadas Um resultado interessante é que oito empresas relataram que fazem reuso de componentes. Enquanto sete empresas (53,8%) disseram que seu produto faz parte de uma família de produtos. A prática de reuso é extremamente positiva para melhorar a produtividade e qualidade de produtos de software. No entanto, como essa era uma questão dicotômica (i.e. Sim/Não) do questionário não pudemos obter informações mais precisas sobre as práticas específicas de reuso adotadas pelas empresas. Acreditamos que esse é um interessante tema para futuras pesquisas Nº Total de funcionários Nº de Funcionários envolvidos diretamento no desenvolvimento Figura 1 Número total de funcionários X número de funcionários envolvidos no desenvolvimento de software
6 6 As empresas relataram que a experiência média da equipe de desenvolvimento é de dois a quatro anos, o que representa 69,2% da amostra, enquanto 30,8% têm uma experiência de cinco a dez anos. O número total de funcionários trabalhando nas 13 empresas é cerca de (mil cento e noventa e oito) funcionários, dos quais 366 (trezentos e sessenta e seis) participam diretamente o processo de desenvolvimento de software (ver Figura 1). As empresas atuam em domínios bastante distintos, desde jogos e produtos de entretenimento até ferramentas de gerenciamento de informação e aplicações de inteligência artificial. Ao todo, as empresas desenvolvem cerca de 60 produtos, onde existem empresas que desenvolvem somente um produto até empresas com trinta e cinco produtos. No entanto, a maioria das empresas desenvolve em média quatro produtos. A Figura 2 mostra as principais categorias dos produtos desenvolvidos pelas empresas. A maior representatividade é de sistemas de informação, seguido de sistemas para Web. A plataforma mais freqüente é Desktop com representatividade de 92,3%, equivalente a doze empresas. Já em relação à forma de contrato estabelecido entre as empresas e clientes, a mais freqüente foi licença de uso, com representatividade de 69,2%. Em média, o tempo de desenvolvimento de um novo produto/versão do software é de 5,97 meses. Este dado confirma a grande pressão enfrentada pelas empresas para entregar produtos dentro de prazos bastante curtos. Além disso, esta observação pode revelar a necessidade das empresas adorarem processos de desenvolvimento ágeis para satisfazer ciclos de desenvolvimento bastante curtos. Dez empresas afirmaram que seus produtos de software são customizados para vários clientes. De outra parte, cinco empresas relataram que também desenvolvem software para uso interno. Já produto entregue sem customização para clientes foi observado em quatro empresas. Finalmente, desenvolvimento de componentes subcontratados de um sistema de software foi observado em duas empresas. Vale ressaltar que há empresas que desenvolvem seus produtos de formas diferentes e/ou utilizando todas as formas citadas acima Jogos Sistema para Web Sistema de informação Sistemas inteligentes Sistema de tempo real Figura 2 Tipos de produtos desenvolvidos pelas empresas estudadas A abordagem de desenvolvimento mais utilizada é o paradigma orientado a objetos, tendo-se observado que 12 empresas adotam esse paradigma, representando 92,3% da
7 7 amostra. Em relação à linguagem de programação, a mais utilizada é JAVA, em primeiro lugar; PHP e em segundo; C++, em terceiro. A Figura 3 apresenta tais resultados. 9 8 Java Object Pascal (Delphi) C++ PHP Visual Basic Net (C#, ASP.NET, VB.NET) 2 1 Pascal C ASP 0 Figura 3 Linguagens de Programação mais utilizadas 3.2 Considerações Iniciais COTS x Bespoke Sistemas de software podem ser classificados em duas categorias: COTS (Commercial off-the-shelf) ou bespoke. COTS são também conhecidos na literatura por produtos de software, pacotes de software ou software de prateleira. Já bespoke é chamado de software tradicional ou customizado. A diferença entre as duas classificações consiste, basicamente, na natureza e no modo como o software é desenvolvido. Um bespoke é geralmente desenvolvido segundo a especificação de requisitos de um ou poucos clientes, os requisitos são elicitados diretamente com o cliente e, portanto, devem atender as necessidades específicas deste. Dessa forma, tem-se um software sob medida ou por encomenda. Um COTS é voltado para diversos clientes e usuários finais, bem como diferentes setores de mercado (e.g. sistemas ERP - Enterprise Resource Planning). Um mesmo produto é utilizado por vários usuários, centenas ou milhares de usuários em alguns casos (e.g. produtos da Microsoft). Assim, os requisitos geralmente são inventados ou elicitados por meios indiretos, como por exemplo, pesquisa de mercado, eventos especializados ou fóruns de discussão. Em situações onde os produtos apresentam considerável nível de inovação, o cliente é desconhecido até que se lance o produto no mercado. Dentre as treze empresas entrevistadas, a grande maioria tem seus produtos enquadrados na intersecção entre COTS e bespoke. Isto ocorre devido ao uso freqüente de parametrização e customização dos produtos de modo a satisfazer às necessidades específicas de clientes. Em boa parte dos casos, um programa com funcionalidades básicas é apresentado ao cliente, o qual pode sugerir melhorias e novas características.
8 8 Logo, existe um núcleo comum para diversos clientes, mas cada cliente pode requisitar a inclusão de novas funcionalidades. Clientes x Usuários Clientes e usuários podem ser stakeholders (i.e. qualquer pessoa interessada no software) diferentes no processo de desenvolvimento de software. De acordo com [KUJALA, 2002], o cliente é quem solicita e paga pelo software, enquanto o usuário é quem efetivamente o utiliza. Dentre as empresas pesquisadas, foram encontrados tanto casos em que cliente e usuário são o mesmo stakeholder, quanto situações em que eles representam papéis diferentes. Em algumas situações, existe a figura do distribuidor/vendedor, que como o nome sugere, distribui o produto nos canais de venda, pagando por ele (sendo um cliente) ou fazendo algum tipo de acordo comercial com a empresa desenvolvedora (sendo um parceiro). Esse acordo comercial pode incluir divisão de lucros ou royalties entre as partes, exploração dos direitos sobre o produto por um período determinado, dentre outros. 3.3 Processo de Engenharia de Requisitos Nesta seção, apresentamos um panorama do processo de engenharia de requisitos. Serão destacadas as principais fases do processo de ER e apresentados os resultados obtidos através do estudo empírico relativos a cada uma das fases Visão Geral Segundo [KOTONYA, 1997], um requisito pode descrever: Uma facilidade no nível do usuário; por exemplo, um corretor de gramática e ortografia. Uma propriedade muito geral do sistema; por exemplo, o sigilo de informações não autorizadas. Uma restrição específica no sistema; por exemplo, o tempo de varredura de um sensor. Uma restrição no desenvolvimento do sistema; por exemplo: a linguagem que deverá ser utilizada para o desenvolvimento do sistema. Embora esta seja a definição formal de requisito, a maioria das empresas entende que requisito é uma funcionalidade que o cliente necessita ou funcionalidades que o produto deve satisfazer. Esta definição não é errônea, contudo, não expressa a totalidade de sua definição. Em [IEEE, 1984] engenharia de requisitos é definido como o processo de aquisição, refinamento e verificação das necessidades do cliente para um sistema de software, objetivando-se ter uma especificação completa e correta dos requisitos de software. Segundo [BELL, 1996], a maioria dos requisitos coletados são incompletos, inconsistentes e ambíguos, e que fazendo uso destes requisitos, é inevitável o impacto negativo na qualidade do software final. Este impacto torna-se um tanto significante visto que todas as atividades do processo de desenvolvimento, principalmente as etapas iniciais, são dependentes da participação e entendimento das reais necessidades dos clientes e/ou usuários finais, e que o mau entendimento dos requisitos é freqüentemente um fator de insucesso, re-trabalho, atrasos e custos adicionais durante o desenvolvimento de software [KUJALA, 2002], [SOMMERVILLE, 1998].
9 9 Em resumo, pode-se dizer que o processo de engenharia de requisitos é constituído por atividades bem definidas, ou seja, possui fases pré-estabelecidas e uma diversidade de técnicas, práticas e artefatos que podem ser utilizados ao longo do processo de desenvolvimento. A maioria das empresas entrevistadas reconhece a importância de se ter um processo de engenharia de requisitos bem definido, contudo, 58,3% das empresas afirmam que não possuem um processo de requisitos bem definido e institucionalizado. Dentre essas empresas, observamos que elas acreditam que a experiência adquirida por outras empresas na especificação de um processo de requisitos bem definido possa ser compartilhada. Tais empresas não almejam reinventar a roda, mas sim adaptar um processo de ER já estabelecido para a sua realidade local. Dessa forma, empresas esperam, de maneira geral, que a definição de um processo de engenharia de requisitos seja condizente com a realidade da empresa. Além disso, espera-se que o processo de engenharia de requisitos seja ágil, pois o tempo das interações/ciclos de desenvolvimento é cada vez mais curto e as empresas precisam ser competitivas para responder às necessidades do mercado de forma rápida. Algumas empresas relatam que o desenvolvimento de produtos é realizado segundo modelo de desenvolvimento criado pela equipe de projetos da própria empresa. Em particular, cinco empresas declararam o uso de metodologias ágeis, como por exemplo, extreme Programming e SCRUM, para guiar as fases do processo de desenvolvimento. Três empresas relataram que tais metodologias ágeis foram devidamente adaptadas para suas necessidades específicas. Em particular, esta estratégia de adaptar as metodologias-padrão é recomendada pelas próprias abordagens ágeis. Vários modelos de processo de engenharia de requisitos podem ser encontrados na literatura. Contudo, não existe um modelo que trate dos requisitos de maneira ideal. Neste relatório iremos considerar as atividades do processo de engenharia de requisitos segundo o modelo proposto por [KOTONYA, 1997], o qual descreve as seguintes fases do processo de engenharia de requisitos: elicitação, análise e negociação, documentação e validação. A seguir, descrevemos cada uma das fases do processo de engenharia de requisitos, bem como apresentamos os resultados da pesquisa empírica Elicitação de Requisitos Elicitação de requisitos é a atividade que envolve a descoberta dos requisitos do sistema. Analistas e clientes interagem com o intuito de examinar e melhor entender o problema a ser resolvido, bem como identificar os serviços que o sistema deve fornecer, analisar questões de hardware, restrições do sistema, entre outros. Este é um processo complexo, pois não envolve somente perguntar aos stakeholders quais são as suas necessidades. Este processo engloba o adequado entendimento da organização e de seu processo de negócios. O foco da atividade de elicitação é identificar os fatos relevantes que compõem os requisitos do sistema, bem como a maneira que estes são entendidos por qualquer pessoa que esteja engajada no desenvolvimento do sistema ou que será afetada pelo mesmo. Existem várias técnicas que podem ser usadas durante o processo de elicitação de requisitos. A escolha de uma técnica adequada depende não somente dos recursos disponíveis, mas também do tempo disponível e do tipo de informação que se deseja obter. Algumas das técnicas de elicitação são relatadas a seguir: Técnicas tradicionais ou informais inclui o uso de questionários, entrevistas e análise de algum tipo de documentação existente; Técnicas de elicitação de grupo são técnicas de dinâmica de grupo que busca
10 10 obter conhecimento relevante das reais necessidades dos diferentes usuários; Prototipação é utilizada quando há um elevado grau de incerteza ou quando é desejável um retorno rápido ao usuário. Dessa forma, deverá ser possível o desenvolvimento do protótipo durante o processo de desenvolvimento, a fim de que este possibilite um melhor entendimento do sistema a ser desenvolvido. Nossos resultados indicam que os clientes participam da definição dos requisitos em 92,3% das empresas estudadas. Essa participação ocorre através das etapas de elaboração, revisão e aprovação dos requisitos. É interessante verificar, entretanto, que na atividade inicial de um projeto, diferentemente das atividades iniciais descritas pelas metodologias ou mesmo pelo processo de engenharia de requisitos tradicional, 40% das empresas fazem uso de técnicas e abordagens de marketing, como por exemplo: pesquisa de mercado, benchmark de produtos e produtos concorrentes. Estas empresas relatam que a visão do escopo do projeto é possível a partir da pesquisa de mercado, pois é na realização desta atividade que é descoberto o que seriam os requisitos do produto. Dentre estas empresas, 20% explicitam que a fase de definição de requisitos é a próxima atividade e que esta é realizada internamente, sem a participação direta de usuários finais. Algumas abordagens também adotadas pelas empresas na fase de elicitação de requisitos envolvem informações sobre seus clientes obtidas através de , reuniões, entrevistas, questionários, fóruns e informações obtidas em workshops e feiras. Neste último, é relevante o contato com terceiros, algumas vezes chamados de publishers, visto que estes têm posse de contatos diretos com grandes compradores e usuários finais, bem como expertise em marketing Análise e Negociação de Requisitos O principal objetivo desta fase é realizar a análise dos requisitos e formular descrições dos requisitos para que estes possam ser interpretados de maneira mais clara pelos stakeholders envolvidos no projeto. Esta fase pode ser feita em paralelo com a fase de elicitação de requisitos, pois segundo [KOTONYA, 1997], estas fases estão ligadas. Durante a elicitação de requisitos alguns problemas podem ser descobertos, tais como: requisitos incompletos, ambíguos, entre outros e a análise dos requisitos visa solucionar estes problemas. A partir dessas informações, os requisitos precisam ser analisados, discutidos e priorizados, para que depois desse processo possam ser documentados. Entretanto, vale ressaltar que, realizar todo o processo de engenharia de requisitos de maneira ordenada e sistêmica implica em alto custo financeiro, de tempo e de recursos, de modo que a realização do mesmo, na maioria dos casos, não é cumprida satisfatoriamente. Acreditamos que metodologias ágeis são bastante adequadas para empresas que desenvolvem produtos de software. Uma importante observação é que a fim de utilizar metodologias ágeis é necessário que clientes e usuários tenham participação direta no processo de desenvolvimento. Na atividade de análise de requisitos, a maioria das empresas utiliza modelos de casos de uso descrito pelo padrão UML. Vantagens para adotar casos de uso estão relacionadas a facilidade de descrever e detalhar os requisitos, bem como o aproveitamento de tal especificação na elaboração dos casos de testes do produto. Segundo o processo de engenharia de requisitos tradicional, a atividade de negociação dos requisitos é realizada em paralelo à analise. Contudo, segundo as transcrições das entrevistas, a atividade de negociação não é realizada explicitamente pelas empresas entrevistadas. Acreditamos que a negociação de requisitos é realizada informalmente junto com a priorização de requisitos. Apesar de nenhuma empresa relatar o uso de estratégias
11 11 de negociação de requisitos, todas elas realizam a priorização dos requisitos que deverão ser incluídos em cada versão do software. Em geral, a priorização de requisitos é feita de forma bastante simples. O analista classifica a importância dos requisitos usando uma escala numérica. A escolha dos requisitos a serem implementados leva em consideração o tempo disponível para as próximas iterações do desenvolvimento. Dessa forma, os requisitos mais críticos são priorizados, que normalmente são aqueles que corrigem erros de versões anteriores do sistema ou que tem maior valor para os clientes. Observamos que algumas empresas priorizam os requisitos dos clientes usando um sistema de banco de horas disponível mensalmente para cada cliente. Ocasionalmente, requisitos considerados de alta prioridade podem ser considerados inviáveis de serem implementados dentro do tempo para entrar no próximo release. Dessa forma, o analista deve negociar com o cliente quais requisitos devem ser implementados primeiramente. Essa negociação é normalmente feita via telefone ou . De acordo com as entrevistas, encontramos três políticas de atualização dos sistemas vendidos sob contrato de manutenção. Na primeira, cada requisito que é implementado é disponibilizado para todos os clientes, sofrendo customização por parametrização. Na segunda, cada cliente possui uma versão diferente do sistema. Dessa forma, o cliente recebe especificamente por aquilo que paga. Na terceira política, novas funcionalidades são compartilhadas entre os clientes, dependendo do valor observado para eles, podendo haver ou não cobrança Documentação de Requisitos Tradicionalmente, o documento de requisitos é considerado um contrato entre o cliente e a empresa desenvolvedora do sistema. Portanto, é desejável que tal documento seja escrito de maneira clara e objetiva, que possa ser entendido por qualquer pessoa que esteja envolvida no processo de engenharia de requisitos, bem como descreva em detalhes os requisitos funcionais, não-funcionais, organizacionais e outros aspectos relevantes do sistema. Tais aspectos são características inerentes a cada projeto e podem variar segundo a natureza do software a ser desenvolvido. Em geral, empresas que desenvolvem software para um amplo mercado consumidor não precisam preparar um documento de requisitos formal. Frequentemente, o software já está disponível no mercado e clientes não precisam fechar um contrato para desenvolver um produto sob demanda. Dessa forma, no contexto de empresas de pacotes de software, o papel do documento de requisitos não é primariamente de natureza contratual. No entanto, o documento de requisitos é um importante artefato do desenvolvimento do software, pois uma documentação permite que requisitos sejam rastreados ao longo do ciclo de vida de software e mudanças futuras nos requisitos possam ser devidamente gerenciadas. Estudos mostram que o gerenciamento de requisitos é uma atividade importante no processo de engenharia de requisitos, pois este permite que os requisitos sejam rastreados e gerenciados ao longo da evolução do sistema [ALVES, 2001]. Nosso estudo revela que a maioria das empresas documenta os requisitos usando notação textual para descrever as necessidades dos clientes e usuários. Algumas vezes essa documentação informal é realizada a partir da solicitação de requisições e/ou mudanças enviadas por usuários após o lançamento de novas versões do produto. Várias empresas relataram que a atividade de documentação precisa ser melhorada, no entanto, ainda precisam estabelecer e institucionalizar um processo de ER para efetivar novas estratégias de documentação.
12 Validação dos Requisitos Durante a fase de validação, os analistas devem confirmar que os requisitos especificados refletem as necessidades dos clientes. Algumas técnicas podem ser utilizadas, apoiando o processo de validação, como por exemplo: revisões e checklists. O processo de validação deve envolver os principais stakeholders, como por exemplo, cliente, usuário final e analistas de sistemas. Eles revisarão os requisitos a fim de identificar problemas, omissões e ambigüidades. Neste contexto, alguns problemas identificados por [KOTONYA, 1997] podem ser listados: Falta de conformidade com padrões de qualidade; Requisitos mal-formulados, bem como ambíguos; Erros no modelo de sistema ou problemas pendentes; Conflitos entre requisitos, os quais não foram detectados e tratados na fase de análise. A partir da conclusão dessa fase, pode-se dizer que há um conhecimento detalhado do domínio do problema e dos requisitos relevantes do sistema a ser desenvolvido. Contudo, possíveis mudanças podem acontecer, visto que o processo de desenvolvimento de software geralmente acontece de maneira iterativa e incremental, bem como é passível a modificações. Assim, qualquer atividade do processo de engenharia de requisitos pode ser realizada mais de uma vez, conforme a necessidade de cada projeto de desenvolvimento de software. Assim como em algumas atividades anteriormente citadas, a validação dos requisitos também é afetada quando o foco é o desenvolvimento de pacotes de software. Isto é devido à dificuldade de contato com os clientes e algumas vezes também pela falta de comprometimento dos mesmos para com o que foi acordado. Dessa forma, observamos que nas empresas estudadas a atividade de validação é muitas vezes realizada mediante reuniões com a própria equipe de desenvolvimento e usa resultados de testes-beta. Algumas empresas relataram que têm problemas para convencer os clientes para que eles validem os requisitos a serem implementados numa nova versão do produto. Esse fato sugere que clientes não querem se comprometer previamente e que preferem verificar se o sistema de fato atende as suas necessidades depois que a nova versão é disponibilizada. 4. Principais Problemas Durante o Processo de ER Nesta seção apresentamos os principais problemas enfrentados pelas empresas estudadas em relação ao processo de engenharia de requisitos. Estes pontos foram levantados a partir da análise das entrevistas realizadas nas empresas Falta de um Processo de ER Definido Segundo o estudo realizado, observamos que a maioria das empresas se preocupa com a qualidade dos seus produtos, bem como do processo de desenvolvimento dos mesmos. Entretanto, devido à alta competitividade do setor juntamente com fatores como prazo reduzido e crescente demanda por entrega rápida de novas versões do produto impactam diretamente no processo de desenvolvimento de software. Em particular, a atividade de engenharia de requisitos é bastante afetada, pois a estratégia freqüente de empresas de produtos de software é iniciar o desenvolvimento o mais rápido possível, limitando o esforço nas fases de entendimento do problema e planejamento. Se por um lado esta estratégia pode garantir que o produto seja entregue dentro do prazo, por outro lado, o produto desenvolvido pode simplesmente não atender às necessidades dos clientes e usuários. Este é um
13 13 compromisso bastante complexo e empresas precisariam considerar informações estratégicas no momento de tomar tais decisões. Identificamos que 58,3% das empresas afirmam não possuir um processo bem definido de engenharia de requisitos. Assim, pode-se dizer que mais da metade das empresas segue um processo de engenharia de requisitos ad-hoc, subestimando (ou mesmo ignorando) os benefícios trazidos por um processo bem definido. Contudo, esta realidade é diferente para as empresas que obtiveram certificação MPS-BR ou que estão em processo de certificação. Por exigência dessas certificações, estas empresas já demonstram considerável maturidade em seus processos de aquisição, análise e gerenciamento de requisitos. Os entrevistados dessas empresas descreveram os processos adotados, mas enfatizaram que por estar em busca de melhoria contínua têm interesse em utilizar novas técnicas e métodos para enriquecer seus processos de ER. Em resumo, o grupo de empresas que afirmou não possuir um processo bem definido de requisitos sente dificuldade em implantar um processo adequado para sua realidade, seja por falta de tempo ou até mesmo inexperiência na condução de procedimentos de melhoria contínua de processos. Todos os entrevistados ressaltaram a importância de adotar processos que estejam alinhados às necessidades e cultura local, ao invés de utilizar abordagens pré-formatadas e genéricas. Devido ao tamanho das empresas, observamos que tais empresas não podem arcar com o alto risco e custo de adotar novos processos sem que os analistas de negócio e gerentes de projeto estejam certos da viabilidade dos mesmos Dificuldade de Entender as Reais Necessidades dos Usuários Dentre as empresas pesquisadas, a atividade de elicitação de requisitos dos clientes é realizada de diversas maneiras. Em algumas empresas, a elicitação de requisitos é realizada com base em técnicas tradicionais, tais como reuniões e entrevistas. É importante salientar que a fim de utilizar tais técnicas, as empresas precisam ter uma interação direta com clientes e usuários. Contudo, empresas que desenvolvem produtos para um amplo mercado consumidor (e.g. jogos), têm grande dificuldade para entrar em contato com os usuários finais de seus produtos. Muitas vezes, os designers iniciam o projeto sem saber ao certo qual será o público-alvo. Além disso, algumas empresas relataram que tem acesso somente a clientes intermediários, sem poder entrar em contato diretamente com usuários. Mesmo para as empresas que podem interagir diretamente com clientes e usuários, há uma considerável dificuldade em compreender exatamente quais são as necessidades e desejos dos usuários, visto a dificuldade que os mesmos têm em descrevê-las. Em geral, usuários utilizam jargões técnicos de difícil entendimento por parte dos analistas. Sem um processo, metodologia ou técnica de elicitação dos requisitos, os analistas muitas vezes não compreendem as reais necessidades ou intenções do cliente com relação às funcionalidades do sistema a ser desenvolvido. Outro aspecto apontado está na dificuldade do analista em extrair conhecimento tácito, ou seja, aquele conhecimento que está nas entrelinhas. Em outro contexto, há empresas que consideram a pesquisa de mercado a primeira atividade do processo de requisitos, pois sua abordagem difere da utilizada na maioria das empresas, visto que é inviável reunir centenas ou milhares de pessoas para levantar requisitos ou até mesmo porque o software a ser desenvolvido não é uma necessidade direta de um cliente ou de um nicho de mercado. Assim, empresas consideram fundamental obter a visão do mercado. Observamos que empresas realizam benchmark de produtos competidores a fim de conhecer características e necessidades de nichos específicos de mercado. Pode-se concluir, a partir desses casos, que a engenharia de requisitos está abrindo espaço para técnicas de marketing e publicidade, visto que as técnicas tradicionais não são suficientes para coletar requisitos dos clientes ou necessidades do mercado.
14 Dificuldade de Interação com Clientes e Usuários Observamos que dentre as empresas estudadas, o número de clientes que cada empresa possui chega a variar de um a 187 clientes. Esta variação é considerável e reflete a diversificada inserção no mercado dos produtos desenvolvidos pelas empresas. A maioria das empresas participantes demonstrou preocupação em relação à interação com os clientes, contudo apenas quatro empresas fazem uso de ferramentas CRM visando o gerenciamento e controle do relacionamento com o cliente. Estas empresas relatam que este tipo de ferramenta proveriam um repositório centralizado com diversas informações dos clientes, facilitando também possíveis investigações dos contatos, bem como acessos a históricos. Uma empresa optou por desenvolver uma ferramenta interna para armazenar a comunicação com os clientes, embora ela, assim como a grande maioria das empresas, considera a interação via como a forma mais freqüente de contato com clientes durante o pós-venda. A interação com os clientes pode ser vista segundo dois aspectos: o primeiro, quando o pacote de software é um produto novo, e o outro quando o pacote é um novo release de software já existente no mercado. Quando o pacote de software é um produto novo, geralmente o contato com os clientes é realizado através de parceiros, agências de publicidade, como também por meio de feiras, eventos e campanhas de marketing. Quando o pacote de software é uma nova versão de um produto que já é encontrado no mercado, a interação pode ser dada mediante os meios anteriomente citados, bem como através de suporte/manutenção, calls centers, entre outros. Uma outra maneira de interação com os clientes citada por empresas pode ser efetivada através de anúncios em sites na internet e/ou sites parceiros, bem como através de download ou vendas on-line. A fim de manter um bom relaciomento com os clientes, algumas empresas realizam questionários informais ou pesquisa de aceitação junto aos seus clientes. Entretanto, a maioria das empresas afirma que é necessário investir mais na área comercial e de marketing, visto que é uma área importante para o crescimento da empresa e para ganhar competitividade. Particularmente nas empresas que atendem clientes fora de Pernambuco, a possibilidade de manter o contato via Internet é visto como fundamental, a fim de reduzir custos. Mesmo assim, devido a estratégias específicas de marketing ou quando há um número representativo de clientes fora do Estado, algumas empresas possuem franquias ou outra forma de representação comercial. Novos módulos/produtos só surgem quando há uma demanda real e já existente é identificada. Essa preocupação aumenta a chance das empresas só investirem em projetos que produzirão um bom retorno. De um modo geral, as empresas consideraram as formas atuais de interação com o cliente satisfatórias, apesar de identificarem alguns pontos para melhoria.todas as empresas estudadas afirmam que os clientes são envolvidos diretamente no processo de elicitação de requisitos para uma nova versão do produto. No entanto, não pudemos obter informações mais detalhadas sobre como esse envolvimento é realizado. Assim, acreditamos que esse seria um ponto interessante para futuras investigações. É comum a dificuldade que algumas empresas encontram devido à ausência de contato direto com o clientes/usuários finais, muitas vezes devido ao seu pequeno porte e escassez de investimentos. Nestes casos, quem tem contato com os clientes/usuários finais muitas vezes são parceiros grandes, como IBM e XEROX, agências de publicidade e/ou publisers. Além disso, algumas empresas reconhecem que o relacionamento com o cliente deve ser realizado de maneira estratégica, pois seus clientes estão distantes e ocupados, e que se deve encontrar formas eficazes de envolver os clientes durante o processo de planejamento e análise do produto.
15 Marketing Deficiente Um problema comum relatado pelas empresas pesquisadas diz respeito à necessidade de melhorar o marketing de seus produtos e/ou de sua empresa. Em geral, este aspecto é deficiente ou inexistente devido à limitação de investimento ou falta de pessoas especializadas nessa área dentro da empresa. Em alguns casos, geralmente quando o produto tem como clientes intermediários grandes parceiros ou agências de publicidade, aspectos relacionados ao marketing, empacotamento do produto, entre outros, deixa de ser responsabilidade das empresas desenvolvedoras. Ou seja, as empresas possuem apenas o compromisso de desenvolvimento do software em si, qualquer outro aspecto referente à comercialização é de responsabilidade de terceiros. Algumas empresas têm obtido sucesso ao lidar com os problemas de marketing e publicidade. Tais empresas relataram que o marketing é realizado geralmente através da divulgação de seus produtos em sites proprietários e de parceiros e através de pessoas que indiretamente possuem um vínculo com a empresa. Em geral, as empresas estudadas concordam que uma efetiva estratégia de marketing é fundamental para atrair novos clientes, em especial, em mercados ainda inexplorados pela empresa. Uma empresa descreveu um caso positivo em terceirizar esta atividade através de uma agência de marketing. Esta empresa estava tentando entrar no mercado de numa nova região, sem muito sucesso, depois que a agência contratada fez o levantamento e planejamento de marketing do mercado nessa região, a empresa conseguiu fechar vários contratos com clientes. Acreditamos que a possibilidade que empresas desenvolvedoras de produtos de software possuem de inserção em amplos mercados consumidores evidencia a importância de estratégias de marketing para melhor entender tais mercados e assim oferecer soluções satisfatórias para diferentes clientes Dificuldade em Gerenciar Requisitos O processo de gerenciamento de requisitos é considerado um dos mais importantes durante o desenvolvimento de software. O objetivo do gerenciamento de requisitos é gerenciar os requisitos dos produtos e componentes de produtos do projeto e identificar as inconsistências entre requisitos e as reais necessidades dos usuários assim como entre os requisitos e outros artefatos gerados durante o projeto. No processo de engenharia de requisitos tradicional, o documento de requisitos possui relevância significativa não somente pelo aspecto de documentar as necessidades do cliente, mas também por ser um contrato entre o cliente e a equipe de desenvolvimento. Com base no estudo realizado, é visto que a maioria das empresas participantes trata a documentação de requisitos como uma atividade informal. Uma das justificativas é baseada no fato de que a documentação de requisitos da maneira como é realizada num processo de desenvolvimento tradicional demanda considerável tempo, o que a torna inviável na maioria das vezes devido ao fato de que as empresas desenvolvedoras de pacotes de software focam em práticas ágeis. Para algumas empresas, a carência de um documento formal de requisitos não traz impactos negativos durante o processo de desenvolvimento e/ou venda do software. Todavia, o impacto gerado pela inexistência de documentos às vezes só é evidenciado em estágios avançados de desenvolvimento do software ou quando a empresa objetiva obter certificações de qualidade. Além disso, a falta de um documento de requisitos torna o gerenciamento e rastreamento de requisitos uma atividade impraticável. Uma empresa relatou a dificuldade para armazenar o histórico das mudanças dos requisitos de várias versões do produto, já que naquele momento não havia na empresa um processo definido e institucionalizado para documentação e gerenciamento de requisitos.
16 16 Dentre as empresas que realizam algum tipo de gerenciamento de requisitos, algumas fazem uso de ferramentas bastante simples de gerenciamento de requisitos para dar suporte aos seus processos. Sendo que em algumas empresas as ferramentas foram desenvolvidas internamente, pois o alto custo para aquisição de ferramentas de gerenciamento de requisitos ainda é um obstáculo para as empresas. Diante deste cenário, um dos benefícios dessa pesquisa é apresentar para as empresas participantes do estudo uma avaliação de ferramentas livre para suportar o gerenciamento de requisitos. No apêndice, apresentamos essa avaliação que foi realizada por estudantes do Centro de Informática dentro da disciplina de Engenharia de Requisitos e orientada pela coordenadora da pesquisa. 5. Conclusões Neste relatório apresentamos os principais resultados do estudo empírico conduzido junto a 13 empresas de produtos de software. Este estudo confirmou algumas hipóteses levantadas a partir da nossa experiência e obtidas através da análise de outros estudos semelhantes realizados em outros países. O resultado mais importante foi verificar que existe um consenso entre as empresas estudadas sobre a importância do processo de engenharia de requisitos para melhorar a qualidade dos seus processos de desenvolvimento. As empresas participantes deste estudo têm níveis de maturidade distintas. Dessa forma, pudemos observar diferentes práticas e preocupações em relação à forma com que as atividades tradicionais do processo de ER são conduzidas pelas empresas. De um modo geral, as empresas estão interessadas em adotar novas práticas e técnicas de ER desde que sua adoção seja devidamente alinhada com a realidade organizacional da empresa. Além disso, tais práticas precisam ser adequadas de acordo com recursos financeiros e de pessoal disponíveis na empresa. Um desafio relatado por várias empresas é a carência de pessoal capacitado no mercado para exercer atividades de engenharia de software. Acreditamos que este problema é ocasionado pela grande ênfase dada nos cursos de graduação em Ciência da Computação para a área de programação, em detrimento às áreas estratégicas de planejamento e análise. Nesse sentido, acreditamos ser necessário uma melhor capacitação de estudantes e profissionais nas fases iniciais do desenvolvimento de software. É importante salientar que este estudo foi realizado com um funcionário representando cada empresa. Conforme foi citado na Seção 2, em algumas entrevistamos mais de uma pessoa por empresa (no máximo três). Diante deste fato, não podemos garantir que a visão desses indivíduos reflita de fato a visão global da empresa. Este pode ser considerado um fator limitante da pesquisa. Nossa conclusão é que empresas de produtos de software sofrem desafios devido à crescente competitividade e demanda por prazos de entrega bastante curtos. Além disso, é geralmente difícil entender as reais necessidades de diferentes clientes e usuários. Diante desse contexto, acreditamos que empresas de produtos de software podem obter benefícios reais se adotarem boas práticas em engenharia de requisitos. Tais práticas precisam ser ágeis e simples de serem adotadas e, principalmente, elas precisam ser adaptadas para as necessidades de cada empresa. A próxima fase da pesquisa será iniciada em Abril de Esta fase envolve a seleção de quatro empresas dentre as estudadas para participar do programa de melhoria do processo de engenharia de requisitos que será conduzido pela equipe de pesquisadores. Durante o programa, será feito um acompanhamento detalhado do processo de engenharia de requisitos e serão propostas boas práticas para projetos pilotos dessas empresas.
17 17 6. Referências Bibliográficas [ALVES, 2001] ALVES, C. F; Seleção de Produtos de Software Utilizando uma Abordagem Baseada em Engenharia de Requisitos. Dissertação de Mestrado em Ciências da Computação.Centro de Informática. Universidade Federal de Pernambuco. [BELL, 1996] BELL, T. E. e THAYER, T. A.; Software Requirements: Are They Really a Problem? Second International Conference on Software Engineering. San Francisco. [IEEE, 1984] IEEE Std. 830; IEEE Guide to Software Requirements Specification. The Institute of Electrical and Electronics Engineers, New York, EUA. [KOTONYA, 1997] KOTONYA, G. e SOMMERVILLE, I.; Requirements Engineering Processes and Techniques. John Willy & Sons. [KUJALA, 2002] KUJALA, S.; User Studies: A practical Approach to User Involvement for Gathering User Needs and Requirements. PhD Thesis. Helsinki University of Technology, Department of Computer Science and Engineering, Espoo, Finland. [SOMMERVILLE, 1998] Sommerville, Ian. Software Engineering, Addison Wesley; 6ª edição. [RICHARDSON, 2007] Richardson, I. Wangenheim, C. Why Are Small Software Organizations Different? IEEE Software, January/February 2007.
18 18 APÊNDICE Avaliação de Ferramentas Free para Gerenciamento de Requisitos Coordenação: Carina Alves Autores: Cesar Augusto Delmas Daniel Andrade Penaforte Hector Paulo de Lima Oliveira João Henrique Correia Pimentel INTRODUÇÃO Atualmente, existe uma grande diversidade de ferramentas para gerenciamento de requisitos disponíveis no mercado, como a Telelogic DOORS, a IBM Rational RequisitePro e a Borland CaliberRM. Entretanto, na hora de adquirir uma ferramenta, as empresas verificam que elas são caras demais ou não atendem às suas necessidades. As ferramentas gratuitas, especialmente as open source, podem então ser uma boa alternativa para as empresas pelo baixo custo de implantação e a flexibilidade de se adaptar o aplicativo alterando diretamente o código fonte. GERENCIAMENTO DE REQUISITOS O principal objetivo do gerenciamento de requisitos é controlar a evolução dos requisitos, por constatação de novas necessidades ou de deficiências nos requisitos registrados até o momento. A Figura 1 ilustra as atividades chaves do gerenciamento de requisitos. Todas essas atividades estão ligadas aos requisitos em si. O controle de mudanças deve facilitar a evolução dos requisitos e permitir que nenhuma solicitação de mudança seja perdida ou desconsiderada. O gerenciamento de configuração trata das diferentes versões dos artefatos, incluindo suas revisões, bem como dos diferentes releases do sistema em desenvolvimento. Rastreabilidade é a identificação, manutenção e visualização dos relacionamentos entre requisitos (rastreabilidade vertical), e entre os requisitos e demais elementos do sistema, como classes e casos de teste (rastreabilidade horizontal). Gerenciar qualidade, neste contexto, é adotar mecanismos que permitam um menor re-trabalho por falhas nos requisitos. Figura 1 Visão geral do gerenciamento de requisitos IMPORTÂNCIA DO USO DE FERRAMENTAS NO GERENCIAMENTO DE REQUISITOS Em um estágio inicial de evolução do processo de gerenciamento de requisitos, as empresas costumam utilizar editores de texto de uso genérico para gerar e manter documentos de requisitos. Esses editores possuem limitações quando se trata de manter o
19 19 documento atualizado, comunicar as mudanças, armazenar meta-informação, definir relacionamentos verticais e horizontais, distribuir o documento e automatizar o fluxo do processo. Por serem projetadas especificamente para este fim, as boas ferramentas de gerenciamento de requisitos possuem funcionalidades que atendem essas necessidades. Assim como qualquer melhoria de processo, a adoção de uma nova ferramenta provoca um impacto inicial negativo no desempenho da empresa, como ilustrado na Figura 2. Com a persistência da empresa a curva de aprendizagem deverá ser vencida, levando o processo a um novo patamar de performance. Figura 2 Impacto da melhoria de processo na performance da empresa. Fonte: Software Requirements. Karl E. Wiegers RETORNO DE INVESTIMENTO (ROI) NA ADOÇÃO DE FERRAMENTAS Retorno de Investimento (do inglês, Return On Investment ROI) é um método popular, no ambiente corporativo, para se medir o sucesso de um projeto de melhoria de processo. Uma forma usual de se avaliar o retorno é através da Taxa Benefício /Custo: ROI = Benefício Custo Entre os custos da adoção de uma ferramenta de gerenciamento de requisitos estão a aquisição do software, implantação, treinamento e desperdício de tempo da equipe envolvida. Os benefícios são aumentar a eficiência do processo, evitar o custo de perda de requisitos, evitar o custo de re-trabalho e evitar o custo de defeitos relacionados aos requisitos. Um modelo detalhado para se calcular o ROI pode ser encontrado na referência 3. AVALIAÇÃO DAS FERRAMENTAS A partir de pesquisa na Internet, foram encontradas e avaliadas seis ferramentas disponibilizadas gratuitamente. A avaliação teve como base uma lista de critérios previamente definidos, ligados às funcionalidades oferecidas e ao ambiente de configuração. Selecionando quais são os critérios mais importantes, a empresa terá facilidade em escolher uma ferramenta que seja mais adequada às suas necessidades. DEFINIÇÃO DOS CRITÉRIOS Os critérios foram definidos a partir de pesquisas já existentes, feitas com ferramentas proprietárias e de análise da ferramenta Telelogic DOORS, considerada entre as mais completas disponíveis no mercado. A Tabela 1 apresenta os critérios utilizados, juntamente com uma breve descrição dos mesmos. Os critérios foram divididos nas categorias
20 20 Documento, Rastreabilidade, Relatórios, Controle de Versão, Trabalho Colaborativo e Ambiente, para melhor compreensão. Critérios Documento Importação de requisitos Dados estruturados Atributos customizáveis Suporte a figuras, tabelas e gráficos Especificação formal Rastreabilidade Relacionamentos verticais Relacionamentos horizontais Criação de semântica para rastreabilidade Matriz de rastreabilidade Relatórios Criação de relatórios (views) Exportação de relatórios (views) Busca de requisitos Ordenação de requisitos Controle de versão Controle de mudanças Recuperação de versão Propostas de mudança Aprovação de documentos Descrição É capaz de capturar os elementos de arquivos ( como texto, Word, Excel) e armazenar o conteúdo como requisitos Os dados são armazenados de forma estruturada, contendo semântica É possível inserir novos atributos aos requisitos, além dos que já vêm no software É possíver inserir e visualizar figuras, tabelas e gráficos como parte dos requisitos Suporta linguagens de especificação formal, como Z Permite a inclusão de relacionamentos entre os requisitos Permite a inclusão de relacionamentos entre os requisitos e outros elementos do sistema Permite que exista vários tipos de relacionamento, com semântica definida pelo usuário Exibe uma matriz contendo os relacionamentos existentes Exibe os requisitos na forma de um documento Exporta um documento de requisitos para um formato padrão (.pdf,.doc,.html) Exibe os requisitos de acordo com critérios de busca entrados pelo usuário Ordena os requisitos de acordo com os atributos que o usuário indicar Registra todas as mudanças feitas nos requisitos, indicando quem, o que, quando, onde e porquê houve a alteração Permite que sejam resgatadas versões mais antigas dos requisitos Gerencia propostas de mudança, a serem realizadas apenas após aprovação Identifica se os requisitos foram aprovados ou não Trabalho colaborativo Acesso concorrente Permite que 2 ou mais usuários trabalhem simultaneamente em uma mesma base de requisitos Controle de acesso multi-nível Identifica o usuário e provê diferentes restrições de acesso, tanto individualmente tanto a grupos Ambiente Grátis Open source Portabilidade Manual de uso / help Facilidade de instalação Integração com outras ferramentas O software é liberado gratuitamente para uso comercial O código-fonte é disponíbilizado e permite alterações no software O software pode ser executado em diferentes sistemas operacionais Existem bons manuais de uso do software ou informações de ajuda embutidas O software pode ser instalado facilmente e rapidamente, com boas instruções sobre como proceder Integra seus dados com ferramentas específicas para outras atividades do ciclo de desenvolvimento Tabela 1 Critérios e descrição