• Nenhum resultado encontrado

Extração de padrões de engenharia de requisitos e aprendizagem organizacional : um estudo de caso

N/A
N/A
Protected

Academic year: 2017

Share "Extração de padrões de engenharia de requisitos e aprendizagem organizacional : um estudo de caso"

Copied!
123
0
0

Texto

(1)

Universidade

Católica de

Brasília

PRÓ-REITORIA DE PÓS-GRADUAÇÃO E PESQUISA

STRICTO SENSU EM GESTÃO DO CONHECIMENTO

E TECNOLOGIA DA INFORMAÇÃO

Mestrado

BRASÍLIA

2009

EXTRACÃO DE PADRÕES DE ENGENHARIA DE

REQUISITOS E APRENDIZAGEM ORGANIZACIONAL:

UM ESTUDO DE CASO

Autor: Sóstenes Leite da Silva Lucena

(2)

SÓSTENES LEITE DA SILVA LUCENA

EXTRAÇÃO DE PADRÕES DE ENGENHARIA DE REQUISITOS E APRENDIZAGEM ORGANIZACIONAL: UM ESTUDO DE CASO

Dissertação apresentada ao Programa de Pós-Graduação Stricto Sensu em Gestão do Conhecimento e Tecnologia da Informação da Universidade Católica de Brasília, como requisito parcial para obtenção do Título de Mestre.

Orientador: Prof. Dr. Gentil José de Lucena Filho

Co-orientador: Prof. Dr. Rodrigo Pires de Campos

(3)

Ficha elaborada pela Coordenação de Processamento do Acervo do SIBI – UCB.

L935e Lucena, Sóstenes Leite da Silva.

Extração de padrões de engenharia de requisitos e aprendizagem organizacional : um estudo de caso / Sóstenes Leite da Silva Lucena. – 2009.

122 f. ; il. ; 30 cm

Dissertação (mestrado) – Universidade Católica de Brasília, 2009. Orientação: Gentil José de Lucena Filho

Co-orientação: Rodrigo Pires de Campos

1. Engenharia de software. 2. Engenharia de requisitos. 3. Aprendizagem organizacional. I. Lucena Filho, Gentil José de, orient. II. Campos, Rodrigo Pires de, co-orient. III. Título.

(4)
(5)
(6)

A Deus que sempre está presente em minha vida.

Aos meus pais, Leonardo e Sevirina, a quem devo a oportunidade desta conquista, os quais não apenas confiam, mas acreditam no meu futuro.

As minhas irmãs, Suelle e Sionelly, que apesar dos ‘arengues’ dão apoio no meu dia-a-dia.

A minha namorada Priscila Kelly, a quem agradeço todas as conversas que tivemos, ajudando-me a vencer os muitos obstáculos da vida.

Ao meu grande amigo Robério, que desde o primeiro momento em que pensei no mestrado, tornou-se um incentivador.

Ao grande Ricardo, pelas grandes intervenções nos bons e maus momentos que passei.

A todo o pessoal da antiga SUNMF, especialmente a Eliza e Cláudia, a quem devo muito o que aprendi.

Ao ex-serpriano Carlos Eduardo, forte incentivador do meu trabalho na empresa e no mestrado.

A minha equipe DE1ER: Wescley (goiano), Fernanda (Yan), Elizia (minha tradutora), Sandra (Fofis), Célia (a preocupada), Adelair (que não é baú) e Alexandra (nova Sra. SIAFI).

A Edna, também do SERPRO, a quem até hoje devo chocolates por me ajudar a conseguir algumas informações para compor este trabalho.

Ao meu atual chefe, Marcelo Mesquita.

Aos demais colegas da DEBSA.

Ao meu supervisor de grupo Fabio Rilston, a quem devo apoio a este trabalho.

Ao meu nobre colega André Mariz, pessoa a quem devo parte da descoberta de importantes pontos de minha vida.

Aos amigos que fiz em Brasília: Lindomar, Kátia, Joel, Lia, Francisco Carlos, Luciana e Márden.

Ao professor Rodrigo, que me ajudou a construir um novo modelo mental.

(7)
(8)

Referência: LUCENA, Sóstenes Leite da Silva. Extração de padrões de engenharia de

requisitos e aprendizagem organizacional: um estudo de caso. 2009. 122 f. Dissertação (Mestrado em Gestão do Conhecimento e Tecnologia da Informação) – Universidade Católica de Brasília, Brasília, 2009.

A Engenharia de Requisitos (ER) é uma das áreas da Engenharia de Software que mais propagam problemas nas demais durante o desenvolvimento de um projeto. Uma das razões para tais problemas está na utilização do processo de ER de forma não padronizada, gerando assim, especificações com requisitos incompletos, ambíguos ou ausentes. Os padrões de ER, por sua vez, apresentam-se como as melhores práticas de utilização da engenharia de requisitos. Um processo de extração destes padrões foi desenvolvido por uma equipe alemã de engenheiros de requisitos em 2004 e, por ser bastante recente, ainda não se observa o uso deste processo em larga escala nas organizações responsáveis pelo desenvolvimento de software. O trabalho inicialmente desenvolvido pela equipe alemã foi adaptado e, em seguida, aplicado em uma unidade de desenvolvimento do Serviço Federal de Processamento de Dados (SERPRO). A adaptação e a realização do processo deu-se, não somente para extrair os padrões de ER, mas num foco mais amplo: encontrar indícios de aprendizagem organizacional durante a realização do processo de extração. Ao término da extração foram elaborados seis padrões de ER que passaram a fazer parte da primeira coleção de padrões da organização. Paralelamente, com base em cinco disciplinas de aprendizagem, identificaram-se diversos elementos de aprendizagem organizacional não apenas durante, mas antes e após a realização do processo.

(9)

Requirement Engineering (RE) is one of the areas of Software Engineering that causes more problems during a project development. One of the reasons for such problems is the use of a not standardized process of RE, thus generating incomplete specifications with ambiguous or lack of requirements. RE patterns, in turn, present the best practice of requirement engineering. An extraction process of these patterns was developed by a team of German requirement engineers in 2004 and due to the fact of being recent, it does not yet observes the use of this process on a large scale in software development organizations. The work initially developed by German team was adapted and applied to a department Serviço Federal de Processamento de Dados – SERPRO (Government company responsible for data processing). The adaptation and the accomplishment of the process were used not only to extract the RE patterns, but in a wider focus: to find remains of organizational learning during the accomplishment of the extraction process. Six RE patterns were elaborated at the end of the extraction to be part of the first collection of patterns of the organization. Based on the five disciplines of learning, several elements of organizational learning were identified before and after the accomplishment of the process.

(10)

Figura 1 – Mudança de estrutura nas unidades de desenvolvimento do SERPRO ... 16

Figura 2 – Organização e distribuição das equipes na DEBSA ... 16

Figura 3 – Processo da Engenharia de Requisitos e o Modelo Espiral ... 28

Figura 4 – Capturando padrões a partir da observação em casos de estudo ... 39

Figura 5 – Observações semelhantes a partir de projetos distintos ... 44

Figura 6 – Metáfora da mola sob stress de forças contrárias ... 47

Figura 7 – O ‘local da janela’ no formato proposto ... 47

Figura 8 – Visão geral do processo de extração do padrão ... 50

Figura 9 – Estrutura de um caso de estudo ... 51

Figura 10 – Os padrões utilizam os mesmos elementos básicos como observações ... 52

Figura 11 – Visão geral dos assuntos abordados neste trabalho e suas interconexões ... 68

Figura 12 – Paralelos entre a nomenclatura utilizada na ER e no PSDS ... 72

Figura 13 – Processo de extração de padrões de ER na organização em estudo ... 74

Figura 14 – Resumo do delineamento metodológico ... 77

Figura 15 – Padrão “Desenvolva protótipo durante a elicitação de requisitos” e o conflito de forças ... 88

(11)

Tabela 1 – Objetivos da Engenharia de Requisitos agrupados por categoria ... 25

Tabela 2 – Entradas e Saídas do Processo de Engenharia de Requisitos ... 27

Tabela 3 – As cinco disciplinas de aprendizagem organizacional: síntese ... 64

Tabela 4 – Observação O1 do caso de estudo do projeto BSPSDS ... 82

Tabela 5 – Obtendo a tarefa T a partir da observação O1 ... 82

Tabela 6 – Obtendo as forças F e F a partir da observação O1 ... 83

Tabela 7 – Obtendo a ação A a partir da observação O1 ... 83

Tabela 8 – Obtendo o resultado R a partir da observação O1 ... 84

Tabela 9 – Observação O2 do caso de estudo do projeto SIAFI ... 85

(12)

AO – Aprendizagem Organizacional

DE1ER – Setor de Especificação de Requisitos da DEBSA

DEBSA – UG da SUPDE, localizada em Brasília

ER – Engenharia de Requisitos

GI – German Informatics Society

ISO – International Standards Organization

OA – Organizações que Aprendem

PSDS – Processo SERPRO de Desenvolvimento de Soluções

SERPRO – Serviço Federal de Processamento de Dados

SUPDE – Superintendência de Desenvolvimento do SERPRO

UG – Unidade de Gestão

UML – Unified Modeling Language

(13)

1 INTRODUÇÃO ... 14

1.1 MOTIVAÇÃO E CONTEXTO DO TRABALHO ... 14

1.2 OBJETIVOS ... 17

1.2.1 Objetivo geral ... 17

1.2.2 Objetivos específicos ... 17

1.3 JUSTIFICATIVA E RELEVÂNCIA DO ESTUDO ... 18

1.4 ORGANIZAÇÃO DO TRABALHO ... 18

2 ENGENHARIA DE REQUISITOS ... 20

2.1 INTRODUÇÃO ... 20

2.2 VISÃO GERAL DE REQUISITOS ... 21

2.3 ENGENHARIA DE REQUISITOS E O CICLO DE VIDA DO DESENVOLVIMENTO 24 2.4 O PROCESSO DE ENGENHARIA DE REQUISITOS ... 26

2.4.1 Elicitação de requisitos ... 28

2.4.2 Análise e negociação de requisitos ... 31

2.4.3 Documentação de requisitos ... 33

2.4.4 Validação de requisitos ... 34

2.4.5 Gerenciamento de requisitos ... 36

2.5 CONSIDERAÇÕES FINAIS ... 38

3 PADRÕES DE ENGENHARIA DE REQUISITOS... 39

3.1 INTRODUÇÃO ... 39

3.2 PADRÕES ... 40

3.3 OS PADRÕES DE ENGENHARIA DE REQUISITOS ... 42

3.3.1 Requisitos para os padrões da Engenharia de Requisitos ... 43

3.3.2 Estrutura de um padrão de Engenharia de Requisitos ... 46

3.3.3 O processo de extração do padrão ... 49

3.3.3.1 Atividade “coletar casos de estudo” ... 50

3.3.3.2 Atividade “analisar observações” ... 51

3.3.3.3 Atividade “extrair padrões candidatos” ... 52

3.3.3.4 Atividade “elaborar padrões” ... 52

3.4 CONSIDERAÇÕES FINAIS ... 53

4 PADRÕES DE ER E APRENDIZAGEM ORGANIZACIONAL ... 54

4.1 INTRODUÇÃO ... 54

4.2 APRENDIZAGEM ORGANIZACIONAL ... 55

4.3 OS PADRÕES DE ER E AS ORGANIZAÇÕES QUE APRENDEM ... 58

4.3.1 As cinco disciplinas de aprendizagem ... 58

4.3.1.1 Domínio pessoal ... 59

4.3.1.2 Modelos mentais ... 60

4.3.1.3 Visão compartilhada ... 61

4.3.1.4 Aprendizagem em equipe ... 62

4.3.1.5 Pensamento sistêmico ... 63

4.3.2 O caminho da aprendizagem organizacional ... 64

(14)

5.3 DELINEAMENTO METODOLÓGICO ... 69

5.3.1 Desenvolvimento da teoria ... 69

5.3.2 Seleção do caso ... 70

5.3.3 Delimitação do estudo ... 70

5.3.4 Condução do estudo ... 70

5.3.5 Preparação ... 71

5.3.5.1 Adaptação do processo para extração dos padrões de ER na organização em estudo ... 73

5.3.5.2 A coleta dos indícios de aprendizagem na organização em estudo ... 75

5.3.6 Resumo do delineamento metodológico ... 76

5.4 CONSIDERAÇÕES FINAIS ... 78

6 ESTUDO DE CASO ... 79

6.1 INTRODUÇÃO ... 79

6.2 ANÁLISE GERAL DOS PROCEDIMENTOS INTERNOS DA DEBSA ... 79

6.3 EXTRAINDO PADRÕES DE ER NA DEBSA ... 81

6.3.1 Coletando e analisando ... 81

6.3.2 Outros casos de estudo ... 85

6.3.3 Extraindo o padrão candidato ... 86

6.3.4 Elaborando a descrição do padrão ... 88

6.4 INDÍCIOS DE APRENDIZAGEM ORGANIZACIONAL NA DEBSA ... 89

6.5 CONSIDERAÇÕES FINAIS ... 92

7 DISCUSSÃO ... 93

8 CONCLUSÃO E PERSPECTIVAS FUTURAS ... 97

(15)

1 INTRODUÇÃO

1.1 MOTIVAÇÃO E CONTEXTO DO TRABALHO

A Engenharia de Software foi criada em resposta aos problemas enfrentados no

desenvolvimento de software e tem estado em crescente progresso, produzindo novas

metodologias, paradigmas e ferramentas. Dentre suas várias atividades, uma das que apresentam

maiores problemas quando feita de forma inadequada é a Engenharia de Requisitos (FAULK,

1997).

Engenharia de Requisitos é um campo de estudo, dentro do contexto da Engenharia de

Software, que está relacionado à identificação, validação e documentação das funções e restrições

que precisam ser respeitadas por um software em sua construção e operação (LOPES, 2002). A

Engenharia de Requisitos (ER) de software é uma atividade que engloba a descoberta,

documentação e manutenção do conjunto de requisitos de um sistema de software

(SOMMERVILLE e SAWYER, 1997).

Entretanto, apesar da crescente evolução nas pesquisas, a utilização da Engenharia de

Requisitos de maneira não orientada, pode derivar muitas formas, gerando, dessa maneira, a não

padronização de seu uso e conseqüentemente resultados práticos distintos. Mas, há como

padronizar a sua utilização?

Segundo Fischer (2002), disciplinando as pessoas, no sentido de fazê-las proceder de

acordo com regras estabelecidas, sem inibir a criatividade, a padronização traz à tona as

necessidades de educação, treinamento e capacitação, além da motivação profissional do ser

humano. Por meio da padronização, torna-se possível a incorporação de experiências pessoais ao

domínio tecnológico da empresa. A padronização visa reduzir a variabilidade dos processos de

trabalho sem prejudicar sua flexibilidade.

Todavia, um programa de normalização ou padronização só será efetivamente implantado

se existir a participação de todos os envolvidos na elaboração dos procedimentos e normas. A

participação das pessoas neste ponto é determinante, e o comprometimento de todos os

envolvidos se torna imprescindível (OLIVEIRA, 1991). Seguindo esta linha, pergunta-se: então

(16)

Segundo Hagge e Lappe (2004), é possível estabelecer padrões de ER. Estes são

derivados de casos de estudo e descrevem práticas em Engenharia de Requisitos que têm sido

utilizados com sucesso em diferentes projetos.

A utilidade do conceito sobre padrões está essencialmente no fato dele permitir repassar

experiências e torna-las facilmente disponíveis (SOUVEYET e DENECKERE, 1999, p. 3). “A

busca e a aplicação de padrões indica um progresso humano”, afirmou Coad (1992 apud

SOUVEYET e DENECKERE, 1999).

Assim, o objetivo dos padrões de ER é fazer o conhecimento e a experiência em

engenharia de requisitos reutilizáveis. Os padrões são escritos em um formato que faz seu o

conteúdo facilmente acessível (HAGGE e LAPPE, 2006). Mas o que, de fato, motiva a

construção deste trabalho?

Há alguns meses, durante a reestruturação de Unidades de Gestão (UG) do Serviço

Federal de Processamento de Dados (SERPRO)1, diversas UG foram fundidas em uma. Até setembro de 2007 toda UG controlava, a partir da sede, suas respectivas projeções que, até então,

eram unidades responsáveis pelo desenvolvimento e manutenção dos sistemas de seus clientes.

Entretanto, a partir de outubro daquele ano, algumas unidades passaram a ter uma única gerência.

A UG responsável por tal gestão foi chamada de “Superintendência de Desenvolvimento”, ou

simplesmente, “SUPDE”. Em julho do ano seguinte, evento semelhante ocorreu com outras

unidades. A Figura 1 ilustra a reestruturação das unidades de desenvolvimento do SERPRO.

Com a nova estrutura as unidades de desenvolvimento da SUPDE foram centralizadas nas

regionais. Em Brasília, por exemplo, havia uma unidade para cada uma das projeções das

seguintes UG: SUNAF, SUNMF, SUNMP, SUNNE e SUNSP; todas passaram a ser uma única

UG: DEBSA.

1 O Serviço Federal de Processamento de Dados (SERPRO) é uma empresa de informática vinculada ao Ministério

(17)

Figura 1 – Mudança de estrutura nas unidades de desenvolvimento do SERPRO Fonte: Elaboração do autor

Antes da formação da DEBSA, todas as UG de Brasília trabalhavam de forma

independente. Suas interações se davam apenas quando os sistemas que estavam sob sua

responsabilidade necessitavam de integração. Entretanto, logo após a criação da DEBSA, os

empregados que compunham as antigas UG foram distribuídos em onze equipes (Figura 2),

elevando, desta maneira a integração e o conhecimento entre as pessoas. Uma destas equipes foi

intitulada ‘Setor de Especificação de Requisitos de Brasília’, ou simplesmente ‘DE1ER’.

(18)

Naquele momento a DEBSA incumbiu à equipe DE1ER a elaboração de um

planejamento para identificar, analisar, registrar e disseminar as melhores práticas na utilização

do processo de requisitos e conseqüente elaboração de seus respectivos artefatos.

Na busca por uma solução, foi encontrada uma pesquisa realizada pelos alemães Hagge e

Lappe (2006), os quais afirmam que, no contexto da Engenharia de Requisitos, “a recorrente

observação das melhores práticas em diferentes projetos em um formato instrutivo são

considerados padrões de ER”; e complementam o trabalho afirmando que a utilização de padrões

de ER favorece a aprendizagem organizacional.

Assim, este trabalho vem fomentar o atendimento da incumbência determinada para a

equipe DE1ER e visa, em primeira ordem, responder ao seguinte questionamento: que padrões

podem ser extraídos a partir do uso do processo de Engenharia de Requisitos na DEBSA e que

elementos de aprendizagem organizacional podem ser observados na extração daqueles?

As cinco disciplinas de aprendizagem apresentadas por Senge (2004) são delineadas neste

trabalho. Segundo o autor “as cinco disciplinas se mostram essenciais para a construção da

organização que aprende” e “a prática destas disciplinas gera um ciclo de aprendizagem contínua

e profunda”.

1.2 OBJETIVOS

1.2.1 Objetivo geral

O objetivo deste trabalho é explorar a relação entre o processo de padrões de Engenharia

de Requisitos e a aprendizagem organizacional.

1.2.2 Objetivos específicos

Os objetivos específicos são:

• Extrair padrões de Engenharia de Requisitos;

• Identificar elementos das cinco disciplinas no processo de extração dos padrões de

(19)

1.3 JUSTIFICATIVA E RELEVÂNCIA DO ESTUDO

A Engenharia de Requisitos ainda não é uma ciência completa. Muitos problemas que

ocorrem no processo de ER desencadeiam nas demais áreas da Engenharia de Software. Todavia,

a transformação das melhores práticas de ER em padrões de uso em uma organização, reduz os

problemas durante o desenvolvimento.

No entanto, como todo indivíduo, uma organização possui suas características

particulares. Dessa maneira, os padrões de uma organização podem não ser úteis para outra, em

razão de suas diferenças culturais, políticas, etc.

Ainda que isso não quer dizer que não se devem utilizar experiências de outras

organizações, é necessário descobrir padrões próprios.

Neste contexto, acredita-se que durante o processo de descoberta de padrões de ER, tal

como o estabelecimento destes em uma organização, ocorre um processo ainda mais amplo: a

Aprendizagem Organizacional.

Nesse sentido, um campo de investigação se abre, com o intuito de buscar não somente

estabelecer os padrões de ER em uma organização, como também encontrar indícios de

aprendizagem organizacional por trás de todo o processo.

1.4 ORGANIZAÇÃO DO TRABALHO

Este trabalho está organizado em oito capítulos. Na introdução descreveu-se a motivação,

definiu-se o problema, apresentaram-se os objetivos, a justificativa e relevância do estudo, a

metodologia, a delimitação e a estrutura do trabalho.

No capítulo 2 é feita a revisão bibliográfica sobre Engenharia de Requisitos. Discorre-se

sobre a visão geral de requisitos; a engenharia de requisitos e o ciclo de desenvolvimento; além

do de seu processo em conjunto com suas atividades.

No capítulo 3 especializa-se o tema de Engenharia de Requisitos. É apresentado o

conceito de ‘padrão’ e seqüencialmente este é tratado no contexto da ER. São apresentados, além

(20)

No capítulo 4 é apresentada a definição de Aprendizagem Organizacional defendida por

autores consagrados no tema. Em seguida, é realizada a conexão entre os padrões de ER e as

cinco disciplinas de aprendizagem.

O capítulo 5 delineia a metodologia utilizada neste trabalho. São descritas a classificação,

a seleção do caso, a delimitação do estudo e a preparação para o estudo de caso. Nesta é

apresentada a adaptação do processo para a extração dos padrões de ER para a organização em

estudo, tal como deu-se a coleta dos indícios de aprendizagem organizacional na mesma.

O capítulo 6 discorre sobre os resultados da realização do processo de extração de padrões

de ER na DEBSA, além os indícios de aprendizagem organizacional observados nesta.

O capítulo 7 tece discussões sobre os padrões de ER, tal como seu relacionamento com a

aprendizagem organizacional.

E, por fim, o capítulo 8 encerra o trabalho, trazendo as conclusões, contribuições e

(21)

2 ENGENHARIA DE REQUISITOS

2.1 INTRODUÇÃO

Quando a “Crise do Software” foi nomeada nos anos 60, muito esforço foi direcionado

para encontrar as causas da síndrome de problemas (NAUR e RANDELL, 1969). Ainda na

década de 70, investigações determinaram que deficiências nos requisitos estavam entre as mais

importantes causas do problema: “Em quase todo projeto de software a falha nos objetivos de

desempenho e custo, requisitos inadequados desempenham o papel mais expressivo na falha do

projeto” (ALFORD e LAWSON, 1979). O desenvolvimento da especificação de requisitos “em

muitos casos parece trivial, mas provavelmente é a parte do processo que leva a mais falhas que

qualquer outra” (SCHWARTZ, 1975).

Em 1996, o Instituto de Software Europeu (European Software Institute - ESI) apresentou

os problemas relacionados à Engenharia de Requisitos (ER) como sendo os maiores ofensores

para o sucesso dos projetos da Engenharia de Software. Um questionário distribuído a 3.805

empresas na Europa, aplicado aos profissionais desta área, apontou a seguinte classificação dos

problemas: especificação de requisitos (53%), gerência de requisitos (43%), documentação (36%)

e teste (35%) (ESI, 1996).

Levantamentos recentes no Instituto de Engenharia de Software (Software Engineering

Institute - SEI), nos Estados Unidos, ainda confirmam deficiências na especificação e na gerência

de requisitos como os principais aspectos responsáveis pela atual crise de software. No Brasil,

estudos recentes corroboram essa constatação (PINHEIRO et al., 2003).

Desta maneira, a Engenharia de Requisitos passou a obter maior interesse dos

pesquisadores acerca de como elicitar, coletar, analisar e especificar formalmente os requisitos de

um sistema (HSIA, apud CESPEDES, 2002, p. 2).

Pesquisadores como Maiden (1996), Leite (1997), Viller (1999), Leffingwell (2000),

Nuseibeh (2000), Gunter (2000), Young (2001), Coughlan (2002), Toranzo (2002), Gottesdiener

(2002), Rupp (2002), Lausen (2002), Hickey (2002), Carvalho (2003), Pinheiro (2003), Falbo

(2004), Sommerville (2005), entre outros, têm investigado temas relacionados à Engenharia de

(22)

A partir dessas pesquisas, um grande conjunto de processos2, métodos3, técnicas4 e ferramentas computacionais5 foram criadas e são, atualmente, utilizadas pela Engenharia de Requisitos, durante o processo de desenvolvimento de software. Com a evolução da ER, porém,

várias empresas têm procurado aperfeiçoar os métodos para capturar, analisar, validar e gerenciar

os seus requisitos. A ER tem auxiliado os engenheiros de software nesse sentido, provendo

mecanismos que auxiliam no entendimento do que o cliente precisa; na análise de suas

necessidades; na avaliação da exeqüibilidade da solução proposta; na negociação de uma

estratégia adequada à sua construção; na elaboração de uma especificação livre de ambigüidades;

na validação dessa especificação junto aos clientes/usuários; e, finalmente, no gerenciamento dos

requisitos coletados à medida em que estes são transformados em um sistema operacional

(THAYER e DORFMAN, 1997).

Este capítulo apresenta uma visão geral sobre a Engenharia de Requisitos. Inicialmente,

são tecidas considerações a respeito do que seja “requisito”. Em seguida, conceitua-se

Engenharia de Requisitos e sua importância no processo de desenvolvimento de software.

Posteriormente são apresentadas as fases do processo de engenharia de requisitos e suas

principais características. A última seção encerra o capítulo tecendo as considerações finais sobre

a importância da engenharia de requisitos para a qualidade de um projeto de software.

2.2 VISÃO GERAL DE REQUISITOS

Uma das primeiras medidas do sucesso de um sistema de software é verificar se ele

atende às necessidades dos clientes (NUSEIBEH e EASTERBROOK, 2000). Num dos primeiros

trabalhos realizados na área, Bell e Thayer (1976) observaram que muitos requisitos são

inadequados, inconsistentes, incompletos e ambíguos e exercem um grande impacto na

qualidade do software final. A partir dessa observação, eles concluíram que “requisitos para um

2 Processo é um roteiro (uma série de passos) que ajuda a criar, a um tempo, um resultado de alta qualidade

(PRESSMAN, 2002, p.17).

3 Método é uma forma de selecionar técnicas, forma de avaliar alternativas para ação científica. Assim,

enquanto as técnicas utilizadas por um cientista são fruto de suas decisões, o modo pelo qual tais decisões são tomadas depende de suas regras de decisão. “Métodos são regras de escolha; técnicas são as próprias escolhas" (Hegenberg, apud MORESI, 2004, p.15); O método é o conjunto das atividades sistemáticas e racionais que, com maior segurança e economia, permite alcançar o objetivo - conhecimentos válidos e verdadeiros - traçando o caminho a ser seguido, detectando erros e auxiliando as decisões do cientista (MORESI, 2004, p.16).

4 Técnica é o como fazer (PRESSMAN, 2002, p.19).

5 As ferramentas computacionais fornecem apoio automatizado, ou semi-automatizado para o processo e para

(23)

dado sistema não aparecem naturalmente; ao contrário, eles precisam ser projetados e revisados

continuamente”.

Estudos indicam que, quando detectados apenas depois do software implementado, erros

em requisitos de software são até 20 vezes mais caros de se corrigir que qualquer outro tipo de

erro, e até 200 vezes mais custosos do que seriam se corrigidos durante a fase de engenharia dos

requisitos (BOEHM, 1981; 1984). Estudos recentes comprovam que os problemas relacionados

aos requisitos do sistema afetam boa parte das organizações que desenvolvem e usam sistemas de

software (JOHNSON, 2001; ESPITI, 1996). Corroborando essa constatação, novos estudos

reconhecem a Engenharia de Requisitos como uma das fases mais importantes do processo de

engenharia de software (VAN LAMSWEERDE, 2000; PINHEIRO et al., 2003).

Todavia, a fim de melhorar a qualidade dos requisitos, é necessário definir inicialmente o

que são realmente “requisitos”. Existem inúmeras definições disponíveis na literatura para o

termo. Segundo Kotonya e Sommerville (1997), um requisito pode descrever:

1) Uma facilidade no nível do usuário; por exemplo, um corretor de gramática e

ortografia;

2) Uma propriedade muito geral do sistema; por exemplo, o sigilo de informações

sem a devida autorização;

3) Uma restrição específica no sistema; por exemplo, o tempo de varredura de um

sensor;

4) Uma restrição no desenvolvimento do sistema; por exemplo, a linguagem que

deverá ser utilizada para o seu desenvolvimento.

Uma definição bastante simples para requisitos é dada por Macaulay (1996), segundo o

qual requisito é “simplesmente algo de que o cliente necessita”. Segundo Jackson (1995),

requisitos são fenômenos ou propriedades do domínio da aplicação que devem ser executados,

normalmente expressos em linguagem natural, diagrama informal ou outra notação apropriada ao

entendimento do cliente e da equipe de desenvolvimento. Este trabalho segue a definição de

Dorfman e Thayer (1990), os quais conceituam requisitos como sendo:

a) uma capacidade do software necessitada pelo usuário para resolver um problema e

(24)

b) uma capacidade de software que um sistema (ou um componente) deve atingir ou

possuir para satisfazer um contrato, padrão, especificação ou outra documentação

formalmente imposta.

Além de requisitos, outra definição necessária é a de Engenharia de Requisitos. Segundo

o Institute of Electrical and Electronics Engineers (IEEE), engenharia de requisitos corresponde

ao 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

(IEEE, 1984). Zave (1997) coloca que a engenharia de requisitos está relacionada com a

identificação de metas para serem atingidas pelo sistema a ser desenvolvido, assim como a

operacionalização de tais metas em serviços e restrições. A definição de Loucopoulos e

Karakostas (1995) será adotada no contexto desta dissertação. Os autores descrevem a engenharia

de requisitos como um processo sistemático de desenvolvimento dos requisitos por meio de um

processo iterativo e cooperativo de análise do problema, documentação das observações

resultantes numa variedade de formatos, e checagem do entendimento obtido. Em termos

simples, o objetivo desse processo é desenvolver uma especificação de requisitos (COMPUTER,

1985), o que envolve uma integração de conceitos relacionados com aspectos de representação,

sociais e cognitivos (POHL, 1993). Essa diversidade de fatores faz da engenharia de requisitos

uma área eminentemente multidisciplinar, em que aspectos sociais e humanos desempenham um

importante papel (ZAVE, 1997; NUSEIBEH e EASTERBROOK, 2000).

Existem pelo menos três grandes benefícios ao se desenvolver uma especificação de

requisitos (LOUCOPOULOS e KARAKOSTAS, 1995):

1) O documento gerado provê um ponto focal para o processo de comunicar um

entendimento sobre um dado domínio, negócio e o próprio sistema-alvo. A

especificação funciona, então, como uma linguagem para representar conteúdos;

2) A especificação serve como parte de um acordo contratual, um artifício que pode se

tornar bastante relevante para o relacionamento com agentes externos como clientes

e fornecedores;

3) A especificação pode ser usada para avaliar o produto final e assim ter um papel

(25)

Uma especificação de requisitos completa abrange uma ampla gama de requisitos.

Tradicionalmente, os requisitos de software são classificados em requisitos funcionais,

não-funcionais e organizacionais (SOMMERVILLE, 2001; ALENCAR, 1999):

Requisitos Funcionais. São as declarações das funções que o sistema deve oferecer, como o sistema se comporta com entradas particulares e como ele deve

reagir em situações específicas. O termo função é usado no sentido genérico da

operação que pode ser realizada pelo sistema, seja por meio de comandos dos

usuários, ou seja pela ocorrência de eventos internos ou externos ao sistema. Em

alguns casos, os requisitos funcionais podem também explicitamente definir o que

o sistema não deve fazer.

Requisitos Não-Funcionais. São as restrições nas funções oferecidas pelo

sistema. Incluem restrições de tempo, restrições no processo de desenvolvimento,

padrões, e qualidades globais de um software, como manutenibilidade,

usabilidade, desempenho, custos e várias outras.

Requisitos Organizacionais. Derivados diretamente de procedimentos e políticas organizacionais e relacionados com os objetivos e metas da organização.

A necessidade de se estabelecer os requisitos de forma mais precisa é crítica à medida que

o tamanho e a complexidade do software aumentam. Os requisitos exercem influência uns sobre

os outros. Por exemplo, o requisito de que o software deve ter grande portabilidade pode implicar

que o requisito desempenho não seja satisfeito.

2.3 ENGENHARIA DE REQUISITOS E O CICLO DE VIDA DO DESENVOLVIMENTO

Desenvolver sistemas constitui uma atividade de projeto (design) (LOUCOPOULOS e

KARAKOSTAS, 1995). Segundo Dasgupta (1991), um projeto de sistema tipicamente envolve

os seguintes aspectos: (a) um conjunto de requisitos a ser satisfeito por algum artefato; (b) a saída

do processo com algum tipo de documento de especificação de projeto; e (c) a materialização da

especificação detalhada no artefato que é implementada por um desenvolvedor, o qual não detém

(26)

Esses aspectos deixam aparente a estreita relação entre a engenharia de requisitos e a

atividade de projetar software, bem como o grau de dificuldade enfrentado por engenheiros de

sistema ao tentar traduzir requisitos do usuário numa solução de software. De fato, o software em

si não possui valor se seus usuários não conseguem utilizá-lo para satisfazer suas necessidades de

resolução de problemas. A análise de requisitos é o processo que visa a descoberta de requisitos;

sua análise para identificar relevância, inconsistências, ausência de requisitos e praticidade; e a

negociação dos requisitos finais para o sistema (KOTONYA e SOMMERVILLE, 1997).

Em contrapartida, os diversos relacionamentos e restrições que os requisitos exercem uns

sobre os outros são muito difíceis de ser controlados. Principalmente se considerarmos que

algumas decisões de projeto que afetam um ou mais requisitos só serão tomadas em fases

adiantadas do desenvolvimento (STRAW01, 2001). Dessa forma, os requisitos precisam ser

gerenciados ao longo de todo o ciclo de vida do projeto. Isso requer a definição e uso de

processos, métodos e ferramentas dentro do contexto de uma estratégia global de

desenvolvimento, comumente referenciada na literatura como modelo de processo de software

(PRESSMAN, 2002). Inúmeros modelos de processo incluem atividades de engenharia de

requisitos em seu conjunto (ROYCE, 1970; FLOYD, 1984; BOEHM, 1988, 1998a; ARANGO,

1988; McDERMID e ROOK, 1993; DAVIS e SITARAM, 1994; KRUCHTEN, 1999). Em geral,

essas atividades atendem a três grupos principais de objetivos (ZAVE, 1997) conforme descrito

na Tabela 1.

Tabela 1 – Objetivos da Engenharia de Requisitos agrupados por categoria.

G1

Investigação de objetivos, funções e restrições de uma aplicação de software

Reduzir as barreiras de comunicação

Gerar estratégias para converter objetivos vagos em propriedades ou restrições específicas

Compreender prioridades e graus de satisfação Associar requisitos com os vários agentes do domínio Estimar custos, riscos e cronogramas

Assegurar completude

G2 Especificação do software

Integrar representações e visões múltiplas

Avaliar estratégias de soluções alternativas que satisfaçam os requisitos Obter uma especificação mais completa, mais consistente e menos ambígua

Validar a especificação (verificar que ela satisfaz aos requisitos)

Obter especificações que sejam apropriadas para as atividades de projeto (design) e implementação

G3 Gerenciamento da evolução e das famílias do software

Reutilização de requisitos durante o processo de evolução

Reutilização de requisitos no desenvolvimento de software similares Reconstrução de requisitos

(27)

Normalmente, a engenharia de requisitos é considerada a atividade inicial do processo de

desenvolvimento (CARVALHO, 2002). Informações sobre sistemas já existentes, necessidades

das partes interessadas (stakeholders), padrões da organização, regulamentações, informações do

domínio da aplicação, entre outros insumos, são fornecidos como entrada ao processo de análise

dos requisitos, o qual produz como resultado requisitos acordados, uma especificação de

requisitos e um modelo de requisitos. Quando a fase de requisitos é executada de forma

incompleta ou inconsistente, os artefatos resultantes comprometem a qualidade do produto

desenvolvido nas etapas seguintes do processo de software (Projeto, Implementação e Testes).

Em contrapartida, os benefícios que a aplicação correta dos princípios de engenharia de requisitos

pode trazer ao processo de desenvolvimento incluem:

• Concordância entre desenvolvedores, clientes e usuário sobre o trabalho a ser feito

e quais os critérios de aceitação do sistema;

• Uma base precisa para a estimativa dos recursos (custo, pessoal, prazos, ferramentas e equipamentos);

• Melhoria na usabilidade, manutenibilidade e outras qualidades do sistema;

• Atingir os objetivos com o mínimo de desperdício.

Na seção seguinte é apresentado como o processo de engenharia de requisitos é

estruturado de forma a atingir esses objetivos.

2.4 O PROCESSO DE ENGENHARIA DE REQUISITOS

De acordo com a International Standards Organization (ISO), o termo processo é

definido como “um grupo de atividades inter-relacionadas que se caracterizam por uma série de

entradas específicas que agregam valor e fornecem uma série de saídas específicas para clientes

externos e internos”.

O processo de engenharia de requisitos é um conjunto estruturado de atividades que são

seguidas para derivar, validar e manter um documento de requisito (KOTONYA e

SOMMERVILLE, 1997). Uma descrição completa do processo deve incluir: (a) quais atividades

(28)

das atividades; (d) suas entradas e saídas; e (e) as ferramentas usadas para suportar a engenharia

de requisitos.

Embora o processo de Engenharia de Requisitos varie de uma organização para outra,

podendo diferir inclusive na mesma organização, suas entradas e saídas, na maioria dos casos,

são similares. O processo de Engenharia de Requisitos é um processo de projeto (design) com

entradas e saídas, como descrito na Tabela 2.

Tabela 2 – Entradas e Saídas do Processo de Engenharia de Requisitos.

ENTRADA OU SAÍDA TIPO DESCRIÇÃO

Informações dos Sistemas Existentes Entrada Refere-se a informações gerais sobre o sistema que será substituído ou criado e de outros sistemas com o qual o sistema deverá interagir.

Necessidades das partes interessadas (stakeholders)

Entrada Refere-se a uma descrição das necessidades das partes interessadas para apoiar seu trabalho.

Padrões corporativos Entrada Refere-se a padrões e normas adotadas pela empresa para o desenvolvimento de sistemas, incluindo métodos para o desenvolvimento, práticas para garantia de qualidade etc.

Normas e regulamentos Entrada Normas e regulamentos externos que se apliquem ao sistema.

Informações do Domínio Entrada Informações gerais sobre o domínio do sistema.

Requisitos Definidos Saída Descrição dos requisitos levantados, avaliados e aprovados pelas partes interessadas.

Especificação do Sistema Saída Uma especificação mais detalhada do sistema a ser desenvolvido.

Modelos do Sistema Saída Um conjunto de modelos que descrevem o sistema a partir de diferentes perspectivas.

Fonte: Kotonya e Sommerville (1997)

Dentre as várias propostas para modelos de processo de engenharia de requisitos

existentes na literatura, o contexto dessa dissertação segue o modelo proposto por Kotonya e

Sommerville (1997). O modelo está baseado num ciclo em espiral (Figura 3), em que o início do

processo ocorre com a execução de atividades de elicitação de requisitos, seguidas pela análise e

negociação desses requisitos, sua documentação e posterior validação. O processo se repete ao

longo dos ciclos da espiral tantas vezes quanto sejam necessárias, até que se atinja um ponto de

decisão de aceitação do documento final de requisitos. Para Nuseibeh e Easterbrook (2000), esse

modelo espiral constitui-se, na prática, de um conjunto de processos interativos, interelacionados

(29)

Não obstante, a aplicabilidade do modelo dependerá, dentre outros fatores, do domínio da

aplicação considerada. No capítulo 5 a proposta de Kotonya e Sommerville (1997) é adaptada

para contemplar aspectos de requisitos peculiares ao processo de desenvolvimento do SERPRO.

Por ora, as seções seguintes descrevem a natureza e o propósito das fases que integram

originalmente o referido modelo.

Figura 3 – Processo da Engenharia de Requisitos e o Modelo Espiral Fonte: Kotonya e Sommerville (1997), adaptado.

2.4.1 Elicitação de requisitos

Elicitar6 requisitos é a atividade relacionada com a identificação dos requisitos do sistema, a partir de consulta aos representantes de cada grupo de usuários; da análise de documentos do

domínio em questão; do conhecimento desse domínio; e/ou de pesquisas de mercado. A

finalidade geral do processo de elicitação é identificar os fatos que compõem os requisitos do

sistema, de forma a prover o mais correto entendimento do que dele é esperado. Outro papel

relevante dessa atividade é a descoberta das necessidades das diferentes classes de usuários

6 [Do lat. elicitus, part. pass. de elicere, extrair , tirar de , + -ar2; ingl. (to) elicit.] Verbo transitivo direto.

(30)

(SHARP et al., 1999). Aliado a esse processo de descoberta, uma elicitação de requisitos

consistente requer também uma criteriosa análise da organização, do domínio da aplicação e dos

processos organizacionais (KOTONYA e SOMMERVILLE, 1997).

Dessa forma, elicitar requisitos apresenta inúmeros desafios. Segundo Toranzo (2002), os

principais problemas que afetam a etapa de elicitação podem ser classificados em quatro

categorias:

i) Problemas de Escopo. Vinculados ao desconhecimento de informações do sistema relativas à organização (restrições, objetivos, metas e expectativas), ao

ambiente organizacional (fatores sociais, econômicos e políticos), ao projeto e a

sua interface computacional (necessidades/restrições de software e hardware do

sistema);

ii) Problemas de Entendimento. Relacionados a dificuldades de comunicação entre desenvolvedores e usuários, e à falta de entendimento dos requisitos informados

entre ambas as partes, incluindo problemas humanos relativos à aquisição e

disseminação do conhecimento;

iii) Problemas Técnicos. Nesta categoria estão inclusos alguns problemas que afetam o sucesso do processo de elicitação, tais como (a) mudanças tecnológicas no

software e hardware; (b) usuários exigindo sistemas cada vez maiores e

complexos; (c) mudanças de requisitos com o tempo; (d) existência de muitas

fontes de informação para os requisitos; (e) dificuldades com o reuso de

conhecimento pelos analistas;

iv) Problemas de Comportamento Humano. Decorrentes da interação entre as pessoas, envolvendo aspectos tanto individuais quanto coletivos.

Para resolver esses problemas, várias técnicas de elicitação têm sido propostas. A seguir,

são descritas as principais categorias de técnicas de elicitação de requisitos:

Técnicas Tradicionais. Utilizadas regularmente em várias áreas do conhecimento, como por exemplo a aplicação de questionários, a observação e a

(31)

Técnicas de Elicitação em Grupo. Visam melhor compreender o pensamento e comportamento dos grupos, com o intuito de captar de maneira mais detalhada as

necessidades dos usuários. Como principais exemplos dessa categoria,

destacam-se as técnicas de Workshop e Brainstorming (LEFFINGWELL e WIDRIG, 2000),

as sessões de JAD (Joint Application Design) (SOLTYS e CRAWFORD, 1999) e

RAD (Rapid Application Development) (ROBINSON, 1996).

Prototipação. Um protótipo é uma versão inicial do sistema que está em fase de desenvolvimento. Em sistemas de hardware, protótipos são usados com freqüência

para testar e experimentar os projetos de sistema. Em sistemas de software,

protótipos auxiliam na elicitação e validação dos requisitos de sistema

(KOTONYA e SOMMERVILLE, 1997). A prototipação é especialmente

recomendada quando há um alto grau de incerteza ou quando é necessário um

rápido feedback dos usuários (DAVIS, 1992).

Técnicas de Modelagem. Nos últimos anos, técnicas de modelagem vêm

conquistando maior importância para as organizações, desenvolvedores e usuários.

Elas apresentam um modelo específico das informações que serão adquiridas,

utilizando-o para orientar o processo de elicitação. Exemplos já consagrados na

literatura incluem métodos baseados em metas como KAOS (Knowledge

Acquisition in autOmated Specification) (VAN LAMSWEERDE et al., 1991) e i*

(YU, 1995); e técnicas baseadas em cenários, como casos de uso (JACOBSON,

1992) e Crews (1995 apud MAIDEN, 1998), as quais procuram representar as

tarefas que os usuários executam normalmente e aquelas que estes desejam

executar (LEITE et al., 1997; SCHNEIDER e WINTERS, 1998).

Técnicas Cognitivas. Originalmente desenvolvidas para a aquisição de conhecimento para sistemas baseados em conhecimento, como por exemplo a

análise de protocolo, laddering, card sorting e repertory grids (SHAW e

GAINES, 1996).

Técnicas Contextuais. Surgiram como uma alternativa às técnicas tradicionais e cognitivas. Incluem técnicas como a etnografia e a análise social (VILLER e

(32)

envolve um grupo de pessoas que cooperam para o desenvolvimento de diferentes

tarefas. A natureza dessa cooperação é freqüentemente complexa e variante de

acordo com as pessoas envolvidas, o ambiente físico e a organização na qual o

trabalho acontece. Nesse contexto, técnicas contextuais exploram a observação

para desenvolver um entendimento completo e detalhado de culturas particulares,

como no caso da etnografia, o qual uma sociedade ou cultura é observada durante

um extenso período, após o qual são apresentadas informações sobre todas as suas

práticas constituintes e sua importância no processo produtivo.

Reuso de Requisitos. Do ponto de vista de requisitos, “reuso” objetiva reutilizar ao máximo o conhecimento existente durante o desenvolvimento do sistema.

Existem inúmeras situações onde o reuso de requisitos é recomendado: (a) quando

os requisitos esclarecem um aspecto do domínio da aplicação, como por exemplo

restrições operacionais; (b) quando o requisito está relacionado com uma interface

comum entre aplicações no mesmo ambiente; (c) quando requisitos refletem

procedimentos de uso repetido e padrão ao longo do sistema; (d) quando os

requisitos descrevem políticas da empresa que podem ser reutilizadas em outros

sistemas. Apesar das dificuldades inerentes, técnicas como análise de domínio

(PRIETO-DIAZ, 1990), clichês (BALZER, 1988) e casos de uso (JACOBSON,

1992) demonstram que o reuso de especificações de requisitos de software pode

contribuir para o aumento da produtividade e a unificação de processos internos.

2.4.2 Análise e negociação de requisitos

A análise e negociação de requisitos envolvem atividades que visam a descoberta de

problemas com os requisitos de sistema e estabelecer um acordo de mudanças que satisfaça todos

os afetados. O processo de análise e negociação é caro e demorado porque requer pessoas

qualificadas e experientes para dedicar tempo à leitura cuidadosa de documentos e identificação

das implicações contidas nas declarações presentes nesses artefatos (KOTONYA e

SOMMERVILLE, 1997). Na maioria das vezes, atividades de análise e negociação de requisitos

são executadas de forma paralela ou intercalada, em conjunto com atividades de elicitação de

(33)

Durante o processo de análise, os requisitos são examinados a fim de detectar omissões,

redundâncias, incompletudes e/ou requisitos irreais. A preocupação está em identificar os

requisitos que são realmente necessários ao desenvolvimento do sistema e ao atendimento das

necessidades dos clientes.

A negociação envolve a discussão dos conflitos encontrados entre requisitos e a busca por

uma solução de comum acordo que debele o conflito e atenda aos anseios de todas as partes

envolvidas. Os requisitos finais devem exprimir um compromisso que é governado pelas

necessidades da organização em geral, os requisitos específicos de diferentes partes interessadas,

e restrições de projeto, implementação, prazo e orçamento para o desenvolvimento do software

(KOTONYA e SOMMERVILLE, 1997). Para tanto, os modelos de negociação geralmente

identificam as principais necessidades dos usuários, priorizando-as a fim de assegurar que os

requisitos mais críticos a elas relacionados sejam atendidos o quanto antes. Isso envolve a

interação entre gerente de projeto e clientes para o planejamento e organização das versões

intermediárias do sistema final.

A seguir são apresentadas as técnicas mais comumente utilizadas no processo de análise e

negociação:

Listas de Verificação (Checklists). Correspondem a listas de questões que o analista pode fazer uso para avaliar cada requisito. Checklists são úteis porque

fornecem uma referência sobre o que procurar e reduzem as chances de que

requisitos importantes deixem de ser checados. Ao final da checagem, pode-se

disponibilizar uma lista de inconsistências encontradas, as quais podem ser

solucionadas por meio de negociação ou, caso necessário, nova elicitação de

requisitos.

Matrizes de Interação. Utilizadas para denotar a interação entre requisitos e

facilitar o processo de análise de possíveis conflitos entre estes. A forma mais

simples de construção dessas matrizes é usar uma tabela e rotular suas linhas e

colunas com identificadores de requisitos. Valores numéricos indicam a relação

entre cada um dos requisitos mapeados, evidenciando conflitos ou sobreposições.

(34)

analisados para avaliar o impacto que essas relações, e eventuais mudanças nas

mesmas, possam ter no desenvolvimento do sistema.

Prototipação. Os protótipos criados na etapa de elicitação podem ser aperfeiçoados na etapa de análise e negociação, possibilitando uma análise mais

rica dos requisitos do sistema. Além disso, protótipos contribuem para um maior

envolvimento entre as partes interessadas durante as atividades de elicitação,

análise e negociação de requisitos.

Reuniões. São provavelmente o meio mais eficiente de negociação e resolução de conflitos entre requisitos. Reuniões de negociação são conduzidas em três etapas:

(i) explicação sobre a natureza dos problemas de requisitos; (ii) discussão entre as

partes sobre como resolver os problemas, observando as prioridades estabelecidas;

(iii) resolução dos conflitos pela tomada de ações corretivas.

2.4.3 Documentação de requisitos

Nesta fase, os requisitos acordados são anotados num documento que reúne, num nível

apropriado de detalhe, o escopo de requisitos que servirá como base para o processo de

desenvolvimento do software. O documento de requisitos serve como um contrato entre usuários

e desenvolvedores, e deve ser formatado e estruturado de acordo com padrões organizacionais

(KOTONYA e SOMMERVILLE, 1997).

De acordo com a norma IEEE (IEEE, 1998), o documento de requisitos deverá possuir

declarações não-ambíguas, ser completo, verificável, consistente, modificável, rastreável e

utilizável durante todas as fases do ciclo de vida do requisito. Alguns autores conceituam o

documento de requisitos de software como sendo o meio utilizado para descrever as restrições

quanto às características do produto e ao processo de desenvolvimento, a interface com outras

aplicações, a informação sobre o domínio da aplicação e informações de suporte ao

conhecimento do problema. Nesse sentido, o documento de requisitos deve promover o suporte à

verificação, validação e gerenciamento do projeto; promover a redução do tempo total e esforço

(35)

codificação e testes do sistema; permitir o rastreamento e gerenciamento dos requisitos ao longo

da evolução do sistema.

Existem muitas maneiras diferentes de estruturar um documento de requisitos. Este pode

ser definido como um único artefato, ou ser formado pela associação de diferentes artefatos que

provêem visões de requisitos específicas para cada faceta do desenvolvimento, uma abordagem

comum nos modernos documentos de requisitos de software (LEFFINGWELL e WIDRIG,

2000). No geral, requisitos são descritos em linguagem natural e, como tal, são passíveis de

apresentar efeitos colaterais como ambigüidade e generalidade. Para tratar desses efeitos, a

definição dos requisitos pode ser complementada por modelos tanto gráficos quanto matemáticos

(RUMBAUGH et al., 1991; DELISLE e GARLAN, 1990). Algumas organizações desenvolvem

inclusive suas próprias notações para documentação dos requisitos (VAN LAMSWEERDE,

2000a; CYSNEIROS e LEITE, 2001).

Kotonya e Sommerville (1997) argumentam que, com o objetivo de garantir que toda

informação necessária esteja presente, as organizações devem definir seus próprios padrões de

documentação de requisitos. Um exemplo de padrão aceito internacionalmente é o IEEE/ANSI

830-1998 (IEEE, 1998).

2.4.4 Validação de requisitos

A validação de requisitos é definida como o processo que certifica que o modelo de

requisitos gerado esteja consistente com as necessidades e intenções de clientes e usuários. Essa

visão da atividade de validação retrata um processo contínuo, ocorrendo na maior parte do tempo

em paralelo com as fases de elicitação e especificação (análise, negociação e documentação). De

fato, a validação não é só aplicada ao modelo final de requisitos, mas também a todos os modelos

intermediários gerados ao longo do processo de requisitos.

Validar os requisitos significa confirmar que o documento de requisitos e suas

especificações complementares refletem as reais necessidades dos clientes e usuários finais,

autenticando os artefatos que servirão de base para as fases subseqüentes do processo de

desenvolvimento. Em geral, a validação deve criar os meios necessários para que ocorra um

(36)

não é, pois, uma tarefa fácil e pode requerer várias sessões de trabalho até que todos encontrem

não somente pontos de concordância a respeito dos requisitos, mas principalmente visualizem as

implicações futuras de suas decisões. Nesse sentido, a participação de especialistas de domínio

contribui sobremaneira para a orientação de clientes, usuários e desenvolvedores na resolução de

possíveis impasses.

Os elementos de entrada para a validação de requisitos são o documento de requisitos,

diagramas complementares, padrões e conhecimento sobre a organização. Como saída, obtém-se

uma lista de requisitos acordados, ações acordadas e documentação revisada. De fato, enquanto

fases como projeto e implementação possuem o documento de requisitos como fonte para

verificação de seus resultados, a validação de requisitos não possui uma representação similar

que possa ser usada como base. Ou seja, não existe um meio para demonstrar que uma

especificação de requisitos esteja correta em relação a outras representações do sistema

(KOTONYA e SOMMERVILLE, 1997). Contudo, há uma variedade de técnicas que pode ser

aplicada para apoiar o processo de validação:

Revisões. Provavelmente a técnica mais utilizada para validação de requisitos, revisões envolvem um grupo de pessoas lendo e analisando a documentação de

requisitos à procura de possíveis problemas. A revisão de requisitos constitui-se de

uma reunião formal na qual um engenheiro de requisitos apresenta cada um dos

requisitos para crítica e identificação de inconsistências pelo grupo. As

inconsistências encontradas são registradas para posterior discussão. O grupo de

revisão deve então tomar decisões que se materializam em ações a serem

executadas para corrigir os problemas identificados.

Prototipação. Se um protótipo foi desenvolvido para fins de elicitação de

requisitos, faz sentido usá-lo posteriormente para a validação desses requisitos.

Porém, protótipos para validação devem ser mais completos e conter requisitos

suficientes para garantir que facilidades projetadas para o sistema estejam de

acordo com o uso prático esperado por seus usuários. Protótipos de elicitação

normalmente apresentam funcionalidades ausentes e podem não contemplar

(37)

necessário dar continuidade ao desenvolvimento do protótipo durante a etapa de

validação.

Testes de Requisitos. Técnicas baseadas em cenário permitem elicitar e analisar requisitos, enquanto facilitam a criação de casos de teste para os cenários

identificados (CYSNEIROS, 2002). A execução dos requisitos implementados

pode ser simulada para demonstrar que todos os requisitos do sistema tenham sido

considerados e estejam de acordo com o esperado. Se dificuldades existem no

sentido de derivar casos de teste para um dado requisito, isso implica que algum

tipo de problema com a definição do requisito pode existir (KOTONYA e

SOMMERVILLE, 1997). O objetivo com os casos de teste, porém, deve ser o de

validar os requisitos e não o sistema.

Sistemas Especialistas. Segundo Loucopoulos e Karakostas (1995), o processo de

validação poderia se beneficiar de ferramentas automatizadas que possuam

conhecimento de algum aspecto do processo de engenharia de requisitos para o

qual estão capacitadas. Esse aspecto pode ser tanto o conhecimento de um método

(ex. como aplicar a análise estruturada (YOURDON, 1989) para efetuar

engenharia de requisitos) ou o conhecimento sobre um domínio, i.e.,

conhecimento a respeito do domínio para o qual o software deve ser modelado.

Sistemas Especialistas ainda estão restritos ao ambiente acadêmico; contudo, é

esperado um grande impacto com sua incorporação às próximas gerações de

ferramentas CASE.

2.4.5 Gerenciamento de requisitos

As atividades de Documentação e Validação de requisitos devem formar um ciclo ao

longo do qual serão realizadas múltiplas iterações até que a especificação de requisitos seja

aprovada numa validação final sem restrições. Paralelamente a essas atividades, deve-se

desenvolver o gerenciamento de requisitos. Essa atividade consiste em administrar as inevitáveis

mudanças dos requisitos propostos. Tais mudanças surgem, principalmente, quando são alteradas

as prioridades do negócio, quando se identificam erros ou omissões nos requisitos, ou quando

(38)

gerenciar mudanças nos requisitos acordados; (ii) gerenciar as relações entre requisitos; (iii)

administrar as dependências entre os documentos de requisitos e outros documentos produzidos

durante o ciclo de vida do software.

Gerenciamento de requisitos é executado por meio da implementação de rastreabilidade.

Gerenciamento e rastreamento de requisitos são reconhecidos como importantes pré-requisitos

para desenvolver software de alta qualidade (POHL, 1996; GOTEL e FINKELSTEIN, 1994;

JARKE, 1998; TORANZO e CASTRO, 1999) e definidos como a habilidade de descrever e

seguir a vida de um requisito, em ambas as direções (POHL, 1996; GOTEL e FINKELSTEIN,

1994; RAMESH, 1998). Rastreamento de requisitos é um fator importante para prover com

integridade uma documentação completa dos requisitos, assim como ajudar no processo de

gerenciamento de mudanças nesses requisitos (TORANZO, 2002).

A área de rastreamento de requisitos situa-se entre duas ilhas: pré e pós-rastreamento,

conectadas pela especificação dos requisitos do sistema. Pré-rastreamento está relacionado a

alguns aspectos da vida do requisito antes da sua inclusão na especificação dos requisitos.

Pós-rastreamento está relacionado a alguns aspectos da vida do requisito após a sua inclusão na

especificação dos requisitos (GOTEL e FINKELSTEIN, 1994). Desse modo, rastreamento de

requisitos associa fonte de informação a requisitos, bem como requisitos a artefatos de design e

vice-versa.

Gerenciar requisitos envolve manipular uma grande quantidade de informação, que deve

ser veiculada entre vários indivíduos ao redor da organização (KOTONYA e SOMMERVILLE,

1997). Ferramentas CASE (ASG, 2001) fornecem suporte automatizado a esse processo,

facilitando o intercâmbio das informações, o armazenamento estruturado dos requisitos coletados

e a publicação dos requisitos analisados via meios corporativos tais como a Internet ou Intranet.

Ferramentas como RequisitePro® (RATIONAL, 2001) e Doors® (TELELOGIC, 2002) já são

uma realidade no ambiente de desenvolvimento das organizações de software e trazem algumas

vantagens ao processo de desenvolvimento, dentre elas a integração com ferramentas

proprietárias existentes e a montagem de matrizes de rastreabilidade a partir do repositório de

(39)

2.5 CONSIDERAÇÕES FINAIS

Os últimos 30 anos têm evidenciado um grande esforço por parte das organizações de

software e da comunidade acadêmica no sentido de intensificar a adoção e a melhoria de

processos para uma engenharia de requisitos de alta-qualidade. Embora difícil, essa tarefa

revela-se cada vez mais crítica para o sucesso dos projetos de software, o que vem elevar a importância

das técnicas, conceitos e processos da Engenharia de Requisitos para o perfeito entendimento das

necessidades dos clientes e conseqüente derivação de um produto de software de qualidade.

Neste capítulo foram apresentados os benefícios da aplicação desses mecanismos para

uma correta aquisição, análise, especificação e gerência dos requisitos do sistema. Todavia, a

inserção desses mecanismos no processo de desenvolvimento de sistemas ainda se configura

como uma ciência incompleta. O próximo capítulo apresenta uma abordagem sobre padrões da

Engenharia de Requisitos reportada como resultado de um estudo iniciado no encontro anual do

grupo especial em engenharia de requisitos realizado pela German Informatics Society (GI),

ocorrida em Ulm – Alemanha em 2002. O estudo revela que determinados padrões podem ser a

ponte entre o conhecimento existente na Engenharia de Requisitos e o sucesso de sua aplicação

(40)

3 PADRÕES DE ENGENHARIA DE REQUISITOS

3.1 INTRODUÇÃO

A engenharia de requisitos tem sido reconhecida como um fator crítico de sucesso na

execução dos projetos de software. As melhores práticas ou métodos de engenharia de requisitos

têm sido explorados na academia fornecendo soluções para as atividades do processo; todavia,

muitas vezes não é possível aplicá-los devido às restrições e os conflitos do projeto. Além disso,

a engenharia de requisitos depende de características individuais dos projetos, tais como o

tamanho e o tipo, ou ainda das partes interessadas (HAGGE et al., 2006).

Para a implementação bem sucedida do processo de engenharia de requisitos,

profissionais necessitam de conhecimentos metodológicos confiáveis e acessíveis. Os padrões de

Engenharia de Requisitos apresentados neste capítulo abordam a necessidade de conhecimento

consolidado e estruturado. O conhecimento é capturado para refletir e analisar situações

comparáveis (observações) de projetos (casos de estudo), com foco na solução de conflitos de

situações peculiares (LAPPE et al., 2004). Decisões ou ações de sucesso observadas em pelo

menos dois projetos são registradas como padrões (Figura 4).

Figura 4 – Capturando padrões a partir da observação em casos de estudo Fonte: Hagge e Lappe (2006); Lappe et al. (2004), adaptado.

Os padrões de Engenharia de Requisitos (ER) são descritos em um formato que torna o

conteúdo do padrão instrutivo e facilmente acessível. Os padrões contêm pares de problemas e

(41)

padrões são obtidos exclusivamente a partir de soluções que possuam comprovação da

experiência em projetos do mundo real.

Este capítulo descreve o conceito e a metodologia para captura do padrão de Engenharia

de Requisitos. Inicialmente, são expostos os conceitos sobre o que é um “padrão”. Em seguida

são apresentados os requisitos, a estrutura e o formato do padrão de ER, além do processo para

sua extração. A última seção encerra o capítulo tecendo as considerações finais sobre a utilização

dos padrões de ER.

3.2 PADRÕES

Etimologicamente a palavra ‘padrão’ tem origem do latin patronus que deriva de pater,

que significa pai. Pela semântica, um patrono (ou pai) deve ser pensado como um modelo de

cidadão, ou seja, para ser imitado (PATTERN, 2008).

Os padrões vêm sendo utilizados em diferentes disciplinas para capturar o conhecimento

de engenharia e prover regras para gerar soluções de sucesso na área (LAPPE et al., 2004). A

idéia original sobre o tema surgiu na engenharia civil em uma série de livros de Christopher

Alexander. Ele observou que o sucesso na etapa de construção de alguns projetos possuía

características comuns em sua estrutura. A partir dessa observação ele desenvolveu ajustes nas

regras dos arquitetos em como elaborar a construção dos projetos (ALEXANDER et al., 1977;

ALEXANDER, 1979).

Mais tarde, o formato do padrão foi estendido para os projetos de software e obteve um

tremendo sucesso na comunidade de engenheiros de software (GAMMA et al., 1995). A partir

dos conceitos criados por Alexander, os programadores Kent Beck e Ward Cunningham

propuseram os primeiros padrões de projeto para a área da ciência da computação. Em um

trabalho para a conferência OOPSLA7, eles apresentaram alguns padrões para a construção de janelas na linguagem Smalltalk8(BECK e CUNNINGHAM, 1987).

Os padrões de projeto ganharam popularidade com o livro Design Patterns: Elements of

Reusable Object-Oriented Software, publicado em 1995. Os autores desse livro são conhecidos

7 OOPSLA - International Conference on Object-Oriented Programming, Systems, Languages, and Applications. 8Smalltalk é uma linguagem de programação orientada a objeto que teve o seu desenvolvimento iniciado no final

(42)

como a “Gangue dos Quatro” (Gang of Four) ou simplesmente “GoF”. Posteriormente, vários

outros livros do estilo foram publicados, como Applying UML and Patterns: An Introduction to

Object-Oriented Analysis and Design and Iterative Development, que introduziu um conjunto de

padrões conhecidos como GRASP9 (GAMMA et al., 1995).

A utilização de padrões para transferência do conhecimento se disseminou por outros

domínios, tais como a arquitetura de software, processos de negócio etc. Todavia, Lappe et al.

(2004) reforça que a adoção do formato para descrever padrões varia significativamente

conforme os hábitos particulares de cada comunidade.

Os padrões não são soluções; padrões geram soluções. Quanto maior for o potencial para

a aplicação de um padrão, mais genérico ele será. Embora os padrões específicos sejam úteis, a

definição de um padrão mais amplo possui muitas aplicações diferentes (DEUGO, 1999).

Alexander (1977) define padrão da seguinte maneira:

• Um padrão é uma regra que exprime uma relação entre um certo contexto, um problema e uma solução.

• Cada padrão é uma relação entre um certo contexto, um certo sistema de forças

que ocorre repetidamente nesse contexto, e uma determinada ‘configuração’ que

permite que estas forças se resolvam entre si.

• Um padrão é uma instrução, que demonstra o modo como a ‘configuração’ pode

ser utilizada, repetidas vezes, para resolver o sistema dado de forças, sempre que o

contexto se tornar relevante.

• O padrão é ao mesmo tempo o ‘elemento’ que está no mundo; a forma como criar

esse ‘elemento’; e quando se deve criá-lo. Ele é simultaneamente um processo e o

‘elemento’, ou seja, tanto a descrição do ‘elemento’, como a descrição do processo

que irá gerá-lo.

Embora existam muitos formatos de padrões, o formato mínimo contém essencialmente

(DEUGO,1999; ALEXANDER, 1977):

Imagem

Figura 1 – Mudança de estrutura nas unidades de desenvolvimento do SERPRO  Fonte: Elaboração do autor
Tabela 1 – Objetivos da Engenharia de Requisitos agrupados por categoria.
Tabela 2 – Entradas e Saídas do Processo de Engenharia de Requisitos.
Figura 3 – Processo da Engenharia de Requisitos e o Modelo Espiral  Fonte: Kotonya e Sommerville (1997), adaptado
+7

Referências

Documentos relacionados

Além de serem gravados no cartão, os dados são transmitidos através de um módulo de rádio frequência transmissor para um receptor do modelo, onde há um outro PIC capaz de

São muitos os problemas ambientais causados pelo crescimento urbano, o poder público não acompanha esse crescimento com investimentos em obras de infraestrutura, são ocupados

Com base no trabalho desenvolvido, o Laboratório Antidoping do Jockey Club Brasileiro (LAD/JCB) passou a ter acesso a um método validado para detecção da substância cafeína, à

Ninguém quer essa vida assim não Zambi.. Eu não quero as crianças

Dessa forma, a partir da perspectiva teórica do sociólogo francês Pierre Bourdieu, o presente trabalho busca compreender como a lógica produtivista introduzida no campo

Não existe, por sua vez, relatos na literatura sobre os produtos de degradação do DEC, ivermectina e albendazol, sendo estes medicamentos utilizados em larga escala pela

Deste modo, este trabalho teve por objetivo investigar princípios de design de uma Sequência Didática (SD) sobre mitose e câncer, inspirada na história de

O entendimento da metáfora dentro-fora traz uma demarcação do que estaria dentro e fora do corpo por meio de sua superfície, a pele. Sendo esta, muitas vezes considerada como