Escolar Documentos
Profissional Documentos
Cultura Documentos
Engenharia de requisitos (no contexto da Engenharia de software) é um processo que engloba todas as atividades que
contribuem para a produção de um documento de requisitos e sua manutenção ao longo do tempo.
Processo de engenharia de requisitos é composto por 4 atividades de alto nível:
--Identificação; --Análise e negociação; --Especificação e documentação; --Validação.
Este processo deve ser precedido de estudos de viabilidade que, a partir das restrições do projeto, determinam se este
é ou não viável - e se deve prosseguir para a identificação dos requisitos. Uma outra atividade que se pode considerar
que faz também parte deste processo, se incluirmos a fase posterior à produção do documento (isto é, a sua
“manutenção”), é a gestão dos requisitos (change management), sendo que as alterações podem ser causadas pelos
mais diversos fatores desde inovações tecnológicas a mudanças na natureza do negócio (e consequentemente nos
requisitos), entre outras.
1.Estudos de viabilidade: Antes de avançar em uma análise mais detalhada dos requisitos de um projeto, deve ser feito
um estudo de viabilidade. Tal como o nome sugere, pretende-se com este estudo avaliar se, de um ponto de vista
tecnológico e organizacional, o projeto é viável. Uma forma de avaliar a viabilidade de um projeto é obter, através da
interação com "as partes interessadas" (stakeholder) do projeto (em reuniões ou entrevistas, por exemplo), a resposta
às seguintes questões:
-O sistema contribui para os objetivos da organização?
-Existindo restrições tecnológicas, organizacionais (econômicas, políticas, ambientais, recursos disponíveis) e temporais
associadas ao projeto, será que o sistema pode ser implementado?
-É possível a integração entre diferentes sistemas?
Deve portanto identificar-se que informação é necessária para responder a estas questões e quem possui esta
informação, procedendo-se de seguida à recolha de todos os dados disponíveis para clarificar ao máximo o âmbito do
projeto e avaliar a sua viabilidade.
Tipicamente, quem poderá fornecer esta informação serão os usuários dos sistemas atuais e do sistema a implementar,
os responsáveis pelos departamentos nos quais o sistema será usado, técnicos que estejam familiarizados com as
tecnologias envolvidas (do novo sistema e dos sistemas existentes) e, de um modo geral, todos aqueles que terão
qualquer tipo de interação com o novo sistema (ou que sejam por ele afetados). Algumas das questões que podem ser
postas nesta coleta de informações são, por exemplo:
-Se o novo sistema não fosse implementado, quais seriam as alternativas para a organização?
-Quais são os problemas que os sistemas atuais apresentam e como é que um sistema novo irá resolver estas falhas?
-De que forma é que o sistema irá contribuir diretamente para os objetivos da organização?
-É possível a integração com os outros sistemas da organização?
Estudo de viabilidade deverá culminar com a produção de um relatório e determinar a continuação do desenvolvimento
do projeto, tornando mais claras as restrições (econômicas, temporais e organizacionais) do projeto e definindo mesmo
alguns requisitos de alto nível.
2.Identificação: Caso determine que o projeto é viável, o passo seguinte é a identificação dos requisitos.
2.1.Atividades envolvidas: Algumas das atividades envolvidas nesta fase incluem:
-Captura: obtenção com o cliente dos requisitos (funcionais e não-funcionais) pretendidos para o sistema.
-Compreensão do domínio: importante para o analista compreender o domínio no qual a organização e o projeto se
inserem;.
-Identificação e análise de problemas: problemas devem ser identificados (e a sua definição deve ser consensual) e
devem ser propostas soluções em conjunto com as partes interessadas.
-Identificação das partes interessadas.
2.2.Dificuldades: Esta fase não é trivial, sendo que existem algumas dificuldades típicas que lhe estão associadas:
-Cliente pode não saber exatamente o que deseja para o sistema, ou sabê-lo mas não conseguir articulá-lo (o que é
comum).
-Requisitos identificados podem não ser realistas (do ponto de vista econômico ou tecnológico, por exemplo).
-Cada parte interessada pode expressar os mesmos requisitos de formas diferentes, sendo necessário - através de um
bom conhecimento do domínio - identificar estas situações.
2.3.Técnicas para levantamento de requisitos: Existem diversas técnicas de identificação de requisitos, e que são
adequadas a diferentes situações, entre as quais podem ser citar:
2.3.1.Entrevistas e questionários: Técnica mais simples de utilizar. Bastante eficaz numa fase inicial de obtenção de
dados e mesmo no esclarecimento de algumas dúvidas.
2.3.2.Workshop de Requisitos: consiste numa técnica usada através de uma reunião estruturada, da qual devem fazer
parte um grupo de analistas e um grupo representando o cliente, para então obter um conjunto de requisitos bem
definidos. Ao contrário das reuniões, promove-se a interação entre todos os elementos presentes no workshop
fomentando momentos de descontração como forma de dinamizar o trabalho em equipe, existindo um facilitador
neutro cujo papel é conduzir o workshop e promover a discussão entre os vários intervenientes (ainda que não tenha
realmente poder de decisão). As tomadas de decisão devem seguir processos bem definidos e devem resultar de um
processo de negociação, mediado pelo facilitador. Uma técnica que é também útil em workshops é o uso de
brainstorming (ou tempestade de idéias) como forma de gerar um elevado número de ideias numa pequena quantidade
de tempo. Como resultado dos workshops deve ser produzida documentação que reflita os requisitos e decisões
tomadas sobre o sistema a implementar
2.3.3.Cenários (Série de Eventos Hipotéticos): Uma forma de levar as pessoas a imaginarem o comportamento de um
sistema é o uso de cenários. Através de exemplos práticos descritivos do comportamento de um sistema, os seus
usuários podem comentar acerca do seu comportamento e da interação que esperam ter com ele. Trata-se de uma
abordagem informal, prática e aplicável a qualquer tipo de sistema. De um modo geral, os cenários devem incluir os
seguintes elementos:
-Estado do sistema no início do cenário;
-Sequência de eventos esperada (na ausência de erros) no cenário;
-Listagem de erros que podem ocorrer no decorrer dos eventos do cenário e de como estes erros serão tratados;
-Outras atividades que podem ser executadas ao mesmo tempo que as deste cenário;
-Estado do sistema depois de o cenário terminar.
2.3.4.Prototipagem: Usado em diversas fases do processo de engenharia de requisitos (por exemplo na identificação,
análise e validação). Trata-se de uma versão inicial do sistema, baseada em requisitos ainda pouco definidos, mas que
pode ajudar a encontrar desde cedo falhas - que através da comunicação verbal não são tão facilmente identificáveis.
Neste tipo de abordagem apenas são desenvolvidas algumas funcionalidades sendo normalmente desenvolvidas
primeiro aquelas que são mais fáceis de compreender por parte utilizador e que podem trazer maior valor
acrescentado (principalmente na prototipagem evolutiva, isto é, aquela que mais tarde é evoluída para fase de
desenvolvimento). Uso protótipos deve ser considerado apenas mediante uma análise custo-benefício, já que os custos
de desenvolvimento de um protótipo podem facilmente crescer, sendo particularmente úteis em situações em que a
interface com os usuários é, para eles, um aspecto crítico.
2.3.5.Estudos Etnográficos: Análise de componente social das tarefas desempenhadas numa dada organização. Quando
um dado conjunto de tarefas se torna rotineiro para uma pessoa, é de se esperar que esta sinta dificuldade em
articular todos os passos que segue ou todas as pessoas com as quais interage para as levar a cabo. Através de uma
observação direta das atividades realizadas durante um período de trabalho de um funcionário - é possível encontrar
requisitos que não seriam observáveis usando técnicas convencionais. Esta observação pode ser acompanhada de
registros áudio/vídeo, porém não convém usá-los em demasia visto que o tempo necessário para os processar pode ser
demasiado.
3.Análise e negociação dos requisitos: (Após a identificação dos requisitos do sistema, segue-se esta etapa)
3.1.Atividades envolvidas: Algumas das atividades envolvidas na análise de requisitos incluem:
-Classificação: agrupamento de requisitos em "módulos" para facilitar visão global do funcionamento pretendido para o
sistema;
-Resolução de conflitos: dada a multiplicidade e diversidade de papéis das partes interessadas envolvidas na captura e
análise de requisitos, é inevitável a existência de conflitos nos requisitos identificados; é importante resolver estes
conflitos o mais breve possível;
-Priorização: consiste na atribuição de uma "prioridade" a cada requisito (por Ex elevada/média/baixa); obviamente,
este pode ser um fator gerador de conflitos;
-Confirmação: é confirmada com as partes interessadas a completude dos requisitos, sua consistência e validade (de
acordo com o que se pretende do sistema).
Estas fases não são independentes entre si, pois uma informação obtida numa delas pode servir para as demais fases.
Identificação e análise de requisitos é um processo iterativo que se inicia com a familiarização do domínio do futuro
sistema e termina na confirmação dos requisitos, aumentando o grau de compreendimento do sistema a cada ciclo de
trabalho.
3.2.Dificuldades: dificuldades encontradas na análise são de diversas naturezas:
-ambiente (econômico e/ou organizacional) em que a análise é feita possui fatores dinâmicos, e como tal, os requisitos
estão sujeitos a alterações em decorrência destes (por exemplo: novas partes interessadas são envolvidas no projeto,
ou alterações em prazos e orçamentos disponíveis).
-fatores externos (políticos) podem influenciar os requisitos (alguma parte interessada, com poder de decisão, pode
exigir requisitos específicos que sirvam aos seus interesses e não aos da organização, ou forçar o seu ponto de vista em
detrimento dos demais interessados que irão operar o sistema);
3.3.Negociações: Na fase de negociação, tornam-se necessários alguns cuidados para que esta decorra sem problemas,
chegando-se logo a consensos. Sugestões :
-Saber lidar com ataques pessoais (evitando-os sempre que possível, remetendo a sua resolução para mais tarde, fora
de reunião), de preferência nunca tomando partidos;
-Fomentar a justificação das posições (negativas) tomadas pelos intervenientes na negociação;
-Salientar (e procurar encontrar) os benefícios que uma solução apresenta para todos os envolvidos;
-Relaxar restrições, quando se torna óbvio que as atuais não levarão a um consenso.
4.Especificação e documentação: Nesta fase ocorre produção propriamente dita do documento de especificação de
requisitos. Uma especificação de programa é a definição do que se espera que um software faça. Ela pode ser
informal, neste caso ela pode ser considerada como um blueprint ou manual de usuário do ponto de vista do
desenvolvedor, ou formal, no caso de ela ser definida principalmente em termos matemáticos ou programáticos. Na
prática, as especificações mais bem sucedidas são escritas para a compreensão e ajustes em uma aplicação que já se
encontra bem desenvolvida, embora sistemas de segurança críticos sejam cuidadosamente especificados antes do
desenvolvimento da aplicação. Especificações são mais importantes para interfaces externas que devem permanecer
estáveis.
Em todos os tipos de especificação há 2 tipos de requisitos a considerar:
---Requisitos funcionais: São as funcionalidades que se espera que o sistema disponibilize, de uma forma completa e
consistente. Aquilo que utilizador espera que sistema ofereça, atendendo aos propósitos para qual o sistema será
desenvolvido. Em Engenharia de software, um requisito funcional define uma função de um sistema de software ou seu
componente. Uma função é descrita como um conjunto de entradas, seu comportamento e as saídas. Requisitos
funcionais podem ser cálculos, detalhes técnicos, manipulação de dados e de processamento e outras funcionalidades
específicas que definem o que um sistema, idealmente, será capaz de realizar.
–--Requisitos não-funcionais: São os requisitos relacionados ao uso da aplicação em termos de desempenho,
usabilidade, confiabilidade, segurança, disponibilidade, manutenibilidade e tecnologias envolvidas. Em geral,
requisitos não-funcionais podem constituir restrições aos requisitos funcionais e não é preciso o cliente dizer sobre
eles, pois eles são características mínimas de um software de qualidade, ficando a cargo do desenvolvedor optar por
atender esses requisitos ou não. Situações:
- Demonstram qualidade e ou restrições acerca dos serviços ou funções disponibilizadas pelo sistema. Ex.: restrições de
tempo, restrições sobre o processo de desenvolvimento, padrões, etc.
- Surgem conforme a necessidade dos usuários, em razão de restrições de orçamento e outros fatores.
- Podem estar relacionados à confiabilidade, tempo de resposta e espaço nas mídias de armazenamento disponíveis.
- Caso ocorra falha do não atendimento a um requisito não funcional, poderá tornar todo o sistema ineficaz. Ex.:
requisito confiabilidade em um sistema de controle de voos.
Classificação dos Requisitos não Funcionais
- Requisitos de produtos: Requisitos que especificam o comportamento do produto. Ex. portabilidade; tempo na
execução; confiabilidade, mobilidade, etc.
- Requisitos da organização: Requisitos decorrentes políticas e procedimentos corporativos. Ex. padrões, infra-
estrutura,etc.
- Requisitos externos: Requisitos decorrentes de fatores externos ao sistema e ao processo de desenvolvimento. Ex.
requisitos de interoperabilidade, legislação, localização geográfica etc.
- Requisitos de eficiência. Ex.: sistema deverá processar N requisições por um determinado tempo.
- Requisitos de confiabilidade. Ex.: sistema deverá ter alta disponibilidade.
- Requisitos de portabilidade. Ex.: sistema deverá rodar em qualquer plataforma.
- Requisitos de entrega. Ex.: relatório de acompanhamento deverá ser fornecido toda segunda-feira.
- Requisitos de implementação.: Ex.: sistema deverá ser desenvolvido na linguagem Java.
- Requisitos de padrões.: Ex. uso de programação OO sob a plataforma A.
- Requisitos de interoperabilidade.: Ex. sistema deverá se comunicar com o Sql Server.
- Requisitos éticos. Ex.: sistema não apresentará aos usuários quaisquer dados de cunho privativo.
- Requisitos legais. Ex.: sistema deverá atender às normas legais, tais como padrões, leis, etc.
Bibliografia: http://pt.wikipedia.org/wiki/Engenharia_de_requisitos