Buscar

Engenharia de Software_unid_II

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 118 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 118 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 118 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

85
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
EngEnharia dE SoftwarE
Unidade II
11 ENGENHARIA DE REQUISITOS
11.1 Introdução
Em um ambiente competitivo e de mudança cada vez mais complexo, a gestão adequada da 
informação assume uma importância decisiva no processo de tomada de decisão nas organizações.
Tratando‑se de um tema simultaneamente abrangente e especializado, a adoção da Engenharia de 
Requisitos como linha base da Gestão da Informação possibilitará não só desenvolver e consolidar os 
conhecimentos no desenvolvimento de software, bem como preparar os micro, os pequenos e os médios 
desenvolvedores para encarar com confiança os novos desafios no mundo dos negócios e também 
reforçar as competências profissionais, mantendo‑se atualizado em relação ao potencial dos sistemas 
de informação e das novas tecnologias em uma perspectiva empresarial e competitiva globalmente.
A partir do conhecimento adquirido da Engenharia de Requisitos de Software, o desenvolvedor será 
elemento multiplicador de soluções, contribuindo e agregando valor aos sistemas novos e para os já 
existentes, com aplicação de metodologias e tecnologias adequadas, capazes de gerir com sucesso as 
informações relevantes aos negócios aplicáveis, trazendo às organizações vantagens competitivas.
No estudo da Engenharia de Software, o autor Roger S. Pressman (2002) demonstra preocupação 
com a “crise do software” que, atualmente, ele intitula como “aflição crônica”, chegando a determinar 
números expressivos sobre a não finalização de projetos de sistemas começados e não terminados.
Em um mundo cada vez mais com recursos financeiros escassos, como é possível aceitar tal 
desperdício de tempo e dinheiro? O mesmo autor também aponta para o possível problema causador 
de tal absurdo: “A falta de adoção de métodos, ferramentas e procedimentos no desenvolvimento de 
software e a difícil relação de entendimento entre o usuário com o analista desenvolvedor”.
Existem várias técnicas de levantamento de requisitos e modelagem de software e o analista 
desenvolvedor que não as implementa tem dificuldades de realizar um projeto de sistemas livre de 
manutenções e retrabalhos, condenando diretamente a qualidade do produto.
A implementação da Engenharia de Requisitos, pelo micro, pelo pequeno e pelo médio desenvolvedor 
de software, direciona como realizar uma especificação de requisitos que estruture a fase de análise 
do desenvolvimento do software, proporcionando método sistemático de levantamento dos requisitos 
acompanhando todo o processo, permitindo que o software represente a realidade da empresa modelada 
para geração de um sistema customizado, atendendo as necessidades dessa empresa, obtendo qualidade 
no software, bem como criar a real possibilidade de extrair de um sistema informações relevantes que 
86
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
Unidade II
venham não só contribuir com a decisão, mas ser um fator de excelência empresarial, permitindo novos 
negócios, permanência e sobrevivência em um mercado atuante.
11.2 Relevância
Segundo o Ministério da Ciência e Tecnologia (2002), a participação de mercado das micro, das 
pequenas e das médias empresas desenvolvedoras de software corresponde a 65,1% do total (tabela 
1). Diante da dimensão desse mercado ainda em franca expansão, motivou a prestar atenção especial 
para esse tema.
Tabela 5 – Porte das organizações, segundo comercialização bruta anual (2002)
Porte das organizações
Portes %
Micro 16,5
Pequena 25,3
Média 23,3
Grande 34,9
Atualmente, com a visão global permitindo a participação nas exportações de software para outros 
países, cada vez mais a qualidade no processo de desenvolvimento e do produto de software ganha 
maior observação e adoção das melhores práticas e soluções tecnológicas que atendam aos requisitos 
estabelecidos.
Considerado por Brooks (1987) como problema essencial:
“A parte mais difícil do desenvolvimento de software é decidir precisamente o que será desenvolvido. 
Nenhuma outra parte do trabalho é tão difícil quanto estabelecer (definir) os detalhes técnicos 
necessários incluindo todas as interfaces para pessoas, máquinas e para outros sistemas de software. 
Nenhuma outra parte do trabalho é tão possível de ocasionar erros no sistema como essa. Nenhuma 
outra parte é tão difícil de ser posteriormente consertada.”
Para compreender melhor a engenharia de requisitos, veremos alguns conceitos e objetivos a seguir 
da Engenharia de Software.
11.3 Engenharia de software
Segundo Rezende (1999), “Engenharia é a arte das construções, embasada no conhecimento 
científico e empírico, adequada ao atendimento das necessidades humanas”.
Engenharia de Software é a metodologia de desenvolvimento e a manutenção de sistemas modulares, 
com as seguintes características (REZENDE, 1999):
87
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
EngEnharia dE SoftwarE
— Adequação aos requisitos funcionais do negócio do cliente e seus respectivos procedimentos 
pertinentes.
— Efetivação de padrões de qualidade e produtividade em suas atividades e produtos.
— Fundamentação na tecnologia da informação disponível, viável e oportuna.
— Planejamento e gestão de atividades, recursos, custos e datas.
Segundo Pressman (2002), Engenharia de Software é:
— “O estabelecimento e uso de sólidos princípios de engenharia para que se possa obter 
economicamente um software que seja confiável e que funcione eficientemente em máquinas 
reais.”
— “Descendente da engenharia de sistemas e de hardware. Abrange um conjunto de três 
elementos fundamentais (métodos, ferramentas e procedimentos), que possibilita ao gerente o 
controle do processo de desenvolvimento do software e oferece ao profissional uma base para 
a construção de software de alta qualidade.”
Segundo Martin (1991), Engenharia de Software é:
– “É o estudo dos princípios e sua aplicação no desenvolvimento e na manutenção de sistemas 
de software.”
– “Tanto a engenharia de software como as técnicas estruturadas são coleções de metodologias 
de software e ferramentas.”
Como conclusão, pode‑se relatar que Engenharia de Software é um conjunto de práticas para 
desenvolvimento de soluções de software, ou seja, roteiro que pode utilizar diversas técnicas.
A sequência de passos preestabelecidos permite optar e variar de técnicas e ferramentas nas suas 
diversas fases (REZENDE, 1999).
11.4 Objetivos da engenharia de software
De um modo geral, considera‑se que os objetivos primários da Engenharia de Software são o 
aprimoramento da qualidade dos produtos de software e o aumento da produtividade dos engenheiros de 
software, além do atendimento aos requisitos de eficácia e eficiência, ou seja, efetividade (MAFFEO, 1992).
A Engenharia de Software visa a sistematizar a produção, a manutenção, a evolução e a recuperação de 
produtos intensivos de software, de modo que ocorra dentro de prazos e custos estimados, com progresso 
controlado e utilizando princípios, métodos, tecnologia e processos em contínuo aprimoramento. Os 
produtos desenvolvidos e mantidos, seguindo um processo efetivo e segundo preceitos da Engenharia 
88
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
Unidade II
de Software asseguram, por construção, qualidade satisfatória, apoiando adequadamente os seus 
usuários na realização de suas tarefas, operam satisfatória e economicamente em ambientes reais e 
podem evoluir continuamente, adaptando‑se a um mundo em constante evolução (FIORINI, 1998).
Associando a esses objetivos, o termo engenharia pretende indicar que o desenvolvimento de 
software deve submeter‑se a leis similares às que governam a manufatura de produtos industriais em 
engenharias tradicionais, pois ambos são metodológicos (MAFFEO, 1992).
Com basenos objetivos da Engenharia de Software, fica evidente a necessidade da adoção de um 
modelo sistêmico para padronizar e gerenciar os processos de desenvolvimento de software.
11.5 Crise do software
Para generalizar o termo, ocorre quando o software não satisfaz seus envolvidos, sejam clientes 
e/ou usuários, desenvolvedores ou empresa (REZENDE, 1999).
A expressão “crise do software”, que começou a ser utilizada na década de 1960, tem historicamente 
aludido a um conjunto de problemas recorrentemente enfrentados no processo de desenvolvimento 
(construção, implantação e manutenção) de software (MAFFEO, 1992).
Esses problemas não se referem apenas a programas que não funcionam. Na verdade, a chamada 
“crise do software” abrange todos os problemas relacionados a (REZENDE, 1999):
— Como sistemas computacionais são construídos.
— Como sistemas computacionais são implantados, referindo‑se aqui ao processo de substituir 
sistemas antigos, desativando sistemas correntemente em operação, ou ao processo de instalar 
um sistema inteiramente novo.
— Como é provida a manutenção da quantidade crescente de software construído, associado a 
sistemas computacionais cada vez mais complexos.
— Como fazer face à crescente demanda para construção de software, visando a satisfazer ao 
conjunto enormemente variado de anseios por informatização, atualmente detectado na 
sociedade moderna.
— Como administrar as questões comportamentais, envolvendo os clientes e/ou usuários, a 
política, a cultura e a filosofia empresarial.
Apesar da enorme variedade de problemas que caracterizam a crise do software, engenheiros de 
software e gerentes de projetos para desenvolvimento de sistemas computacionais tendem a concentrar 
suas preocupações no seguinte aspecto: “A enorme imprecisão das estimativas de cronogramas e de 
custos de desenvolvimento” (tabelas 2, 3, 4 e 5) (LEE, 2002).
89
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
EngEnharia dE SoftwarE
A não implementação da engenharia de requisitos permite erros no levantamento dos requisitos do 
sistema e somente percebidos na implantação do sistema, gerando, assim, uma fase de manutenção e 
correção do software interminável, excedendo no custo dessa fase (tabela 2) e alongando o prazo de 
término substancialmente (tabela 3).
Tabela 6 – Excedentes de custo (LEE, 2002) Tabela 3 – Excedente de prazo (LEE, 2002)
Excedentes de custo
% Excedente de custo % de respostas
<20% 15,5%
21% – 50% 31,5%
51% – 100% 29,6%
101% – 200% 10,2%
201% – 400% 8,8%
>400% 4,4%
Excedente de prazo
% Excedente de prazo % de respostas
<20% 13,9%
21% – 50% 18,3%
51% – 100% 20,0%
101% – 200% 35,5%
201% – 400% 11,2%
>400% 1,1%
O custo do desenvolvimento do software varia de acordo com cada fase de seu processo (tabela 4).
No entanto, com a implementação da engenhara de requisitos, os erros de levantamento de requisitos 
identificados na fase de análise do projeto de software reduzem o custo para correção (tabela 5).
Tabela 7 – Custos em projeto de software por fase de desenvolvimento (LEE, 2002)
Custos em projeto de software por fase de desenvolvimento
Etapa de trabalho %
Análise de requisitos 3
Desenho 8
Programação 7
Testes 15
Manutenção 67
90
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
Unidade II
Tabela 8 – Custos para correção de erros de software (LEE, 2002)
Custos para correção de erros de software
Fase de desenvolvimento
do software
% de
desvios ($) 
Erros
introduzidos (%)
Erros
encontrados (%)
Custo relativo para 
correção
Análise de requisitos 5 55 18 1,0
Desenho 25 30 10 1,0 – 1,5
Teste do código e da unidade 10 
Teste de integração 50 10 50 1,0 – 5,0
Validação e documentação 10 
Manutenção operacional 5 22 10 – 100
“Muitos desses erros poderiam ser evitados se as organizações dispusessem de um processo de 
engenharia de requisitos definido, controlado, medido e aprimorado. No entanto, percebe‑se que para 
muitos profissionais de informática esses conceitos não são muito claros, o que certamente dificulta a 
ação dos gerentes no sentido de aprimorar os seus processos de desenvolvimento.” (BLASCHEK, 2003)
11.6 Anticrise do software
Segundo Rezende (1999), pode‑se resumir que a anticrise é a união e o trabalho conjunto e 
harmonioso de três elementos: empresa (alta administração), cliente e/ou usuário e a unidade de 
informática (desenvolvedores de soluções).
Na prática, cabe, principalmente, à unidade de informática aceitar esse conceito e fazer o possível 
para a efetivação dessa tese (anticrise), utilizando‑se de todos os recursos disponíveis para tal.
A unidade de informática é um dos principais agentes de mudança nas organizações, preocupando‑se 
com o negócio empresarial, auxiliando efetivamente os gestores nos processos de tomada de decisão, 
tanto operacionais, como gerenciais e estratégicas.
11.7 Qualidade de software
Atingir um alto nível de qualidade de produto ou serviço é o objetivo da maioria das organizações. 
Atualmente, não é mais aceitável entregar produtos com baixa qualidade e reparar os problemas 
e as deficiências depois que os produtos foram entregues ao cliente (SOMMERVILLE, 2003).
Segundo Machado (2001), para muitos engenheiros de software, a qualidade do processo de 
software é tão importante quanto à qualidade do produto. Assim, na década de 1990 houve uma grande 
preocupação com a modelagem e as melhorias no processo de software. Abordagens importantes como 
as normas ISO 9000 e a ISO/ IEC 12207, o modelo CMM (Capability Maturity Model) e o SPICE (Software 
Process Improvement and Capability dEtermination) sugerem que, melhorando o processo de software, 
podemos melhorar a qualidade dos produtos.
91
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
EngEnharia dE SoftwarE
A qualidade é consequência dos processos, das pessoas e da tecnologia. A relação entre a 
qualidade do produto e cada um desses fatores é complexa. Por isso, é muito mais difícil controlar o grau 
de qualidade do produto do que controlar os requisitos (PÁDUA, 2003).
Prevê‑se que na primeira década dos anos 2000, após ajustarem seus processos para a produção de 
software de qualidade dentro de prazos e orçamentos confiáveis, as organizações foram pressionadas 
por seus concorrentes a reduzir substancialmente os prazos para a entrega de produtos. Organizações 
que sejam capazes de integrar, harmonizar e acelerar seus processos de desenvolvimento e manutenção 
de software terão a primazia do mercado (MACHADO, 2001).
A globalização da economia vem influenciando as empresas produtoras e prestadoras de serviços 
de software a alcançar o patamar de qualidade e produtividade internacional para enfrentarem a 
competitividade cada vez maior. A norma internacional NBR ISO/IEC 12207 – Tecnologia da Informação 
– Processos de Ciclo de Vida de Software (ISO12207, p. 97) é usada como referência em muitos países, 
inclusive no Brasil, para alcançar esse diferencial competitivo (MACHADO, 2001).
A norma ISO/IEC 12207 trata os requisitos do software como fator fundamental no processo de ciclo 
de vida do software, gerando documentação para a fase de desenvolvimento do software, possibilitando 
que o produto seja verificado e validado posteriormente, atendendo as necessidades do adquirente.
Diante desse fato, podemos afirmar que, por falta de utilização de métodos e modelos de 
gerenciamento da qualidade de software com base em requisitos, produzimos softwares de qualidade 
contestável e participando efetivamente da “crise do software” (PRESSMAN, 2002).
11.8 Produto de software
Quando entregamos a um cliente um pacote bem delimitado e identificado, podemos dizer que 
entregamos um produto (SPINOLA, 1998).
A definição para produto de software, segundo a norma IEEE‑STD‑610 (IEEE, 1990), é:
“O conjunto completo, ou qualquer dos itens individuaisdo conjunto, de programas de computador, 
procedimentos e documentação associada e dados designados para liberação para um cliente ou usuário 
final.” (PAULK, 1995)
11.9 Processo de software
O conceito de processo de software se baseia no conceito generalizado de processo, que pode ser 
definido como uma sequência de estados de um sistema que se transforma (SPINOLA, 1998).
O SEI (Software Engineering Institute), da Carnegie Melon University, propõe o seguinte:
“Um processo é uma sequência de passos realizados para um dado propósito. Colocado de 
maneira mais simples, processo é aquilo que você faz. Processo é aquilo que as pessoas fazem, usando 
92
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
Unidade II
procedimentos, métodos, ferramentas e equipamentos, para transformar matéria‑prima (entradas) em 
produto (saída) que tenha valor para o cliente.” (PAULK, 1995)
“O processo de software pode ser definido como um conjunto de atividades, métodos, práticas e 
transformações que as pessoas empregam para desenvolver e manter software e os produtos associados 
(exemplo: planos de projeto, documentos de projeto [design], código, casos de teste e manual do 
usuário).” (PAULK, 1995)
11.10 Requisitos
Os problemas que os engenheiros de software têm para solucionar são, muitas vezes, imensamente 
complexos. Compreender a natureza dos problemas pode ser muito difícil, especialmente se o sistema 
for novo. Consequentemente, é difícil estabelecer com exatidão o que o sistema deve fazer. As descrições 
das funções e das restrições são os requisitos para o sistema (SOMMERVILLE, 2003).
Os requisitos (requirements) podem ser definidos como as necessidades básicas do cliente, geralmente 
explicitadas como condição de negócio no contrato com o fornecedor. São características, tais como 
especificações técnicas, prazo de entrega e garantia que o cliente “requer” do produto (MCT, 2002).
“Uma condição ou capacidade necessitada por um usuário, para resolver um problema ou alcançar 
um objetivo.” (IEEE, 1990)
Segundo Tonsig (2003), os requisitos compõem o conjunto de necessidades estabelecidas pelo cliente/
usuário do sistema que definem a estrutura e o comportamento do software que será desenvolvido.
Segundo Pádua (2003), o fluxo de requisitos reúne as atividades que visam a obter o enunciado 
completo, claro e preciso dos requisitos de um produto de software. Esses requisitos devem ser 
levantados pela equipe do projeto, em conjunto com representantes do cliente, usuários chave e outros 
especialistas da área de aplicação.
Os requisitos de sistema de software são, frequentemente, classificados como funcionais ou não 
funcionais ou como requisitos de domínio (SOMMERVILLE, 2003):
• Requisitos funcionais: são declarações de funções que o sistema deve fornecer, como o sistema 
deve reagir a entradas específicas e como deve se comportar em determinadas situações. Em 
alguns casos, os requisitos funcionais podem também explicitamente declarar o que o sistema 
não deve fazer. Exemplo: o software deve permitir ampla consulta sobre os dados dos pedidos do 
cliente, inclusive via internet (TONSIG, 2003).
• Requisitos não funcionais: são restrições sobre os serviços ou as funções oferecidas pelo sistema. 
Entre eles destacam‑se restrições de tempo, restrições sobre o processo de desenvolvimento, 
padrões, entre outros. Exemplo: o acesso aos recursos do software deve ser restrito a pessoas 
autorizadas (TONSIG, 2003).
93
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
EngEnharia dE SoftwarE
• Requisitos de domínio: são requisitos que se originam do domínio de aplicação do sistema e 
que refletem características desse domínio. Podem ser requisitos funcionais ou não funcionais. 
Exemplo: deve haver uma interface‑padrão com o usuário para todos os bancos de dados, que 
terá como base o padrão X (SOMMERVILLE, 2003).
11.11 Engenharia de requisitos
“O processo de descobrir, analisar, documentar e verificar as funções e as restrições do sistema é 
chamado de engenharia de requisitos.” (SOMMERVILLE, 2003)
Engenharia de requisitos, uma subárea da engenharia de software, tem por objetivo tratar o processo 
de definição dos requisitos de software. Para isso, estabelece um processo pelo qual o que deve ser feito 
é elicitado, modelado e analisado. Esse processo deve lidar com diferentes pontos de vista e usar uma 
combinação de métodos, ferramentas e pessoal. O produto desse processo é um modelo, do qual um 
documento chamado “requisitos’” é produzido. Esse processo é perene e acontece em um contexto 
previamente definido e que chamamos de “universo de informações” (LEITE, 2001).
“O conjunto de técnicas empregadas para levantar, detalhar, documentar e validar os requisitos de 
um produto forma a engenharia de requisitos.” (PÁDUA, 2003)
A engenharia de requisitos fornece um mecanismo adequado para entender o que o cliente deseja, 
analisar as necessidades, avaliar a exequibilidade, negociar uma solução razoável, especificar a solução 
de maneira não ambígua, validar a especificação e administrar os requisitos à medida que eles são 
transformados em um sistema em operação. O processo da engenharia de requisitos pode ser descrito 
em seis passos distintos (PRESSMAN, 2002):
• elicitação de requisitos;
• análise e negociação de requisitos;
• especificação de requisitos;
• modelagem do sistema;
• validação de requisitos;
• gestão de requisitos.
11.11.1 Elicitação de requisitos
Certamente, parece muito simples – pergunte ao cliente, aos usuários e a outros quais são os 
objetivos do sistema ou do produto, o que precisa ser conseguido, como o sistema ou o produto se 
encaixa nas necessidades do negócio e, finalmente, como o sistema ou o produto vai ser usado no dia a 
dia. Mas não é simples – é muito difícil.
94
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
Unidade II
“Na indústria de software, as necessidades dos clientes são muito difíceis de serem acessadas ou 
descobertas. Geralmente, devem‑se deixar margens nos sistemas para futuras mudanças. Os requisitos, 
geralmente, são vagos” (FREITAS, 2000).
A seguir, vários problemas que nos ajudam a compreender por que a elicitação de requisitos é difícil 
(PRESSMAN, 2002):
• Problemas de escopo: o limite do sistema é mal definido. Detalhes técnicos desnecessários que 
podem confundir, em vez de esclarecer, os objetivos globais do sistema.
• Problemas de entendimento: os clientes não estão completamente certos do que é 
necessário, têm pouca compreensão das capacidades e das limitações de seu ambiente 
computacional e têm dificuldade de comunicar as necessidades ao engenheiro de sistemas, 
omitem informações que acreditam serem “óbvias”, especificam requisitos que são ambíguos 
ou impossíveis de testar.
• Problemas de volatilidade: os requisitos mudam ao longo do tempo.
Para ajudar a contornar esses problemas, os engenheiros de sistemas devem abordar a atividade de 
coleta de requisitos de um modo organizado.
Sommerville (2003) sugere um conjunto de diretrizes detalhadas para a elicitação de requisitos, que 
são resumidas nos seguintes passos:
• Avalie a viabilidade técnica e de negócios do sistema proposto.
• Identifique as pessoas que vão ajudar a especificar os requisitos e compreenda seu viés 
organizacional.
• Defina o ambiente técnico no qual o sistema ou produto vai ser colocado.
• Identifique “restrições de domínio” que limitam a funcionalidade ou o desempenho do sistema ou 
do produto a ser construído.
• Defina um ou mais métodos de elicitação de requisitos (entrevistas, reuniões etc.).
• Solicite a participação de muitas pessoas de modo que os requisitos sejam definidos de diferentes 
pontos de vista e certifique‑se de identificar a razão de cada requisito que é registrado.
• Identifique requisitos ambíguos como candidatos para prototipagem.• Crie cenários de uso para ajudar clientes/usuários a melhor identificar requisitos chave.
95
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
EngEnharia dE SoftwarE
Os produtos de trabalho produzidos como consequência das atividades de elicitação de requisitos 
vão variar de acordo com o tamanho do sistema ou do produto a ser construído. Para a maioria dos 
sistemas, os produtos de trabalho incluem:
• uma declaração da necessidade e da viabilidade;
• uma declaração delimitada de escopo do sistema ou do produto;
• uma lista de usuários e interessados que participaram da atividade de elicitação de requisitos;
• uma descrição do ambiente técnico do sistema;
• uma lista de requisitos e as restrições do domínio que se aplicam a cada um;
• um conjunto de cenários de utilização que fornece entendimento do uso do sistema ou do produto 
em diferentes condições de operação;
• quaisquer protótipos desenvolvidos para melhor definir os requisitos.
Cada um desses produtos de trabalho é revisado por todo o pessoal que participou da elicitação de 
requisitos.
11.11.2 Análise e negociação de requisitos
Uma vez reunidos os requisitos, os produtos de trabalho mencionados anteriormente 
formam a base para a análise de requisitos. A análise categoriza os requisitos e os organiza 
em subconjuntos relacionados, explora cada um em relação aos demais, examina‑os quanto 
à consistência, omissões e ambiguidade; e ordena‑os com base nas necessidades dos clientes/
usuários (PRESSMAN, 2002).
À medida que a análise de requisitos começa, as seguintes perguntas são formuladas e respondidas:
• Cada requisito está consistente com o objetivo global do sistema/produto?
• Todos os requisitos foram especificados no nível de abstração adequado?
• O requisito é realmente necessário, ou pode ser essencial para o objetivo do sistema?
• Cada requisito é limitado e não ambíguo?
• Cada requisito tem atribuição? Isto é, uma fonte está associada a cada requisito?
• Algum requisito conflita com outros requisitos?
96
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
Unidade II
• Cada requisito é realizável no ambiente técnico que vai alojar o sistema ou o produto?
• Cada requisito pode ser testado, quando estiver implementado?
Não é incomum que os clientes/usuários peçam mais do que pode ser conseguido, considerando os 
recursos limitados do negócio.
O engenheiro de sistemas precisa reconciliar esses conflitos por intermédio de um processo de 
negociação. Os riscos associados a cada requisito são identificados e analisados. Estimativas grosseiras 
do esforço de desenvolvimento são feitas e usadas para avaliar o impacto de cada requisito no custo do 
projeto e no prazo de entrega. Usando uma abordagem iterativa, requisitos são eliminados, combinados 
ou modificados de modo que cada parte alcance algum grau de satisfação.
11.11.3 Especificação de requisitos
No contexto de sistemas baseados em computador, o termo especificação significa coisas diferentes 
para pessoas diferentes. Uma especificação pode ser um documento escrito, um modelo gráfico, um 
modelo matemático formal, uma coleção de cenários de uso, um protótipo ou qualquer combinação 
desses elementos. Para sistemas grandes, um documento escrito, combinando descrições em linguagem 
natural, e modelos gráficos podem ser a melhor abordagem. Cenários de uso podem, entretanto, ser 
tudo que é necessário para produtos ou sistemas pequenos que residem em ambientes técnicos bem 
entendidos (PRESSMAN, 2002).
11.11.4 Modelagem do sistema
Cada sistema baseado em computador pode ser modelado como uma transformação de informação, 
usando um gabarito entrada – processamento – saída. Essa visão pode ser estendida para incluir duas 
características adicionais dos sistemas – processamento e manutenção de interface com o usuário e 
autoteste (PRESSMAN, 2002).
11.11.5 Validação de requisitos
Os produtos de trabalho produzidos como consequência da engenharia de requisitos são avaliados 
quanto à qualidade durante o passo de validação. A validação de requisitos examina a especificação 
para garantir que todos os requisitos do sistema tenham sido declarados de modo não ambíguo; que 
as inconsistências, as omissões e os erros tenham sido detectados e corrigidos e que os produtos 
de trabalho estejam de acordo com as normas estabelecidas para o processo, o projeto e o produto 
(PRESSMAN, 2002).
11.11.6 GESTÃO DE REQUISITOS
Gestão de requisitos é um conjunto de atividades que ajuda a equipe de projeto identificar, controlar 
e rastrear requisitos e modificações de requisitos em qualquer época, à medida que o projeto prossegue 
(PRESSMAN, 2002).
97
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
EngEnharia dE SoftwarE
“Geralmente, requisitos corretos no início do projeto são mudados posteriormente.” (FREITAS, 2000)
11.12 Ergonomia cognitiva
A Ciência Cognitiva, segundo Peters (2001), é o estudo de como o conhecimento é adquirido, representado 
na memória e utilizado na resolução de problemas. A abordagem da ciência cognitiva à programação 
de computadores enfoca como os programadores representam o conhecimento, como as estruturas dos 
programas são aprendidas e como o conhecimento é aplicado no desenvolvimento de software.
A ergonomia cognitiva é o estudo das habilidades de resolução de problemas, análise de informações 
e procedurais relativas à influência dos fatores humanos. As questões dos fatores humanos relativos a 
estruturas de linguagem de programação, programação de computadores e interação homem‑computador 
são respondidas de forma cognitiva em termos de esforço mental exigido.
A limitação da memória de curto prazo é o grave obstáculo ao desenvolvimento de programas de 
computador em grande escala. Isso significa que não é possível compreender tantos elementos ao mesmo 
tempo a ponto de controlarem as várias conexões existentes entre os componentes de um sistema de 
software. O agrupamento é visto como uma forma de combater esse problema. O agrupamento é o 
processo de reunir itens com atributos semelhantes ou relacionados para formar um item único.
O agrupamento fornece a base para os modelos de compreensão de programas úteis na manutenção 
de software, ou seja, a compreensão do software é auxiliada por representações internas de um sistema 
com planos e esquemas. O processo de entendimento coincide documentos do sistema, como requisitos, 
aos planos de programação utilizando regras do discurso para selecionar planos. O resultado de cada 
coincidência de um documento externo com um plano é a representação mental atualizada, que é 
armazenada como um novo plano.
Concluindo, podemos detectar que a dificuldade de compreender e especificar requisitos em diferentes 
níveis de abstração vai defrontar com a nossa capacidade cognitiva de adquirir o conhecimento para 
criar soluções de software. O estudo da ergonomia cognitiva, sua aplicação e a implementação da 
engenharia de requisitos serão fatores críticos de sucesso no desenvolvimento de software.
11.13 Conclusão
É importante que os desenvolvedores de software reconheçam que não é possível desenvolver 
sistemas com qualidade, cumprir prazos e custos e atender às expectativas dos usuários sem ter um 
processo de desenvolvimento de requisitos definido, compreendido e utilizado por toda a equipe.
Quanto à engenharia de requisitos, podemos acrescentar:
— Adequação aos princípios e aos objetivos da Engenharia de Software.
— O nível de complexidade da sua implementação pode ser dimensionado de acordo com o porte 
do sistema, viabilizando para as pequenas organizações desenvolvedoras de software.
98
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
Unidade II
— Possibilita ser fator crítico para o sucesso no desenvolvimento de software.
— Pode serutilizada alinhada às normas ISO de qualidade de software 12207, 9000‑3.
— Com a sua implementação, é possível contribuir para o fim da “crise do software”.
— Alinhada à ciência cognitiva, permite transformar problemas em agrupamentos menores, 
facilitando a compreensão e a criação de solução.
— Permite para micro, pequenas e médias empresas que possuem recursos humanos e financeiros 
limitados à possibilidade de competir com as empresas de maior porte.
— Com os processos de desenvolvimento de software controlados, documentados e gerenciados; 
o pequeno desenvolvedor poderá assumir projetos de alta complexidade, aliados a técnica e a 
criatividade, pois terá mais chance de sucesso.
— Melhor capacitado e provedor de metodologias que levam ao desenvolvimento de software 
com qualidade, o desenvolvedor poderá criar soluções que atendam as necessidades e os 
requisitos da empresa, contribuindo para criação de vantagens competitivas, sustentando as 
bases estratégicas das organizações.
11.14 Referências bibliográficas
BLASCHEK, José Roberto. Gerência de Requisitos, o principal problema dos projetos de software. 
Artigo Universidade Federal do Rio de Janeiro. Rio de Janeiro, 2003.
BROOKS, F. Essence and accidents to software engineering. Los Alamos, California, IEEE Computer 
Society, v. 4, n. 3, 1987.
FILHO, Wilson de Pádua Paula. Engenharia de Software. Rio de Janeiro: Ed. LTC, 2003.
FIORINI, Soeli T. et al. Engenharia de Software com CMM. Rio de Janeiro: Ed. Brasport, 1998.
FREITAS, Luís Ricardo Napolitano. Projetos em Tecnologia da Informação – Como acertar através da 
análise dos erros. Dissertação de Mestrado. São Paulo: USP, 2000.
IEEE STD. 610 12‑1990, IEEE Standard Glossary of Software Engineering Terminology. IEEE, 
Piscataway, NJ, 1997.
LEE, Richard C.; TEPFENHART, William M. UML e C++ – Guia de desenvolvimento orientado a objeto. 
São Paulo: Ed. Makron Books, 2002.
LEITE, Julio Cesar Sampaio do Prado. In WEBER, Kival Chaves et al. Qualidade e Produtividade em 
Software. São Paulo: Ed. Makron Books, 2001.
99
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
EngEnharia dE SoftwarE
MACHADO, Cristina Ângela Filipak. In WEBER, Kival Chaves et al. Qualidade e Produtividade em 
Software. São Paulo: Ed. Makron Books, 2001.
MAFFEO, Bruno. Engenharia de Software e Especificação de Sistemas. Rio de Janeiro: Ed. Campus, 
1992.
MARTIN, James. Engenharia da Informação. Rio de Janeiro: Ed. Campus, 1991.
MINISTÉRIO DA CIÊNCIA E TECNOLOGIA. Secretaria de Política de Informática, Qualidade e 
Produtividade no Setor de Software Brasileiro. Brasília, n. 4, 2002.
NBR ISO/IEC 12207:1997. Tecnologia de Informação – Processos de Ciclo de Vida de Software. Rio de 
Janeiro: ABNT – Associação Brasileira de Normas Técnicas.
PAULK, M. C. et al. The Capatibility Maturity Model – Guidelines for improving the software process. 
Addison Wesley, SEI series, 1995.
PETERS, James F. et al. Engenharia de Software. Rio de Janeiro: Ed. Campus, 2001.
PRESSMAN, Roger S. Engenharia de Software. Rio de Janeiro: Ed. McGraw‑Hill, 2002.
REZENDE, Denis Alcides. Engenharia de Software e Sistemas de Informações. Rio de Janeiro: Ed. 
Brasport, 1999.
SEI – Software Engineering Institute. Carnegie Melon University, http://www.sei.cmu.edu.
SOMMERVILLE, Ian. Engenharia de Software. São Paulo: Ed. Pearson Education, 2003.
SPINOLA, Mauro de Mesquita. Diretrizes para o desenvolvimento de software de sistemas 
embutidos. Tese de Doutorado. São Paulo: USP, 1998.
TONSIG, Sérgio Luiz. Engenharia de Software. São Paulo: Ed. Futura, 2003.
12 QUAlIDADE DE SOfTwARE
12.1 Introdução
Em um ambiente competitivo e de mudança cada vez mais complexo, a gestão adequada da 
informação assume uma importância decisiva no processo de tomada de decisão nas organizações.
Tratando‑se de um tema simultaneamente abrangente e especializado, a adoção da Engenharia de 
Software como linha base da Gestão da Informação, possibilitará, não só desenvolver e consolidar os 
conhecimentos no desenvolvimento de software, bem como preparar os micro, os pequenos e os médios 
100
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
Unidade II
desenvolvedores para encarar com confiança os novos desafios no mundo dos negócios e também 
reforçar as competências profissionais, mantendo‑se atualizado em relação ao potencial dos sistemas 
de informação e das novas tecnologias em uma perspectiva empresarial e competitiva globalmente.
A partir do conhecimento adquirido da Engenharia de Requisitos de Software, o desenvolvedor será 
elemento multiplicador de soluções, contribuindo e agregando valor aos sistemas novos e para os já 
existentes, com aplicação de metodologias e tecnologias adequadas, capazes de gerir com sucesso as 
informações relevantes aos negócios aplicáveis, trazendo às organizações vantagens competitivas.
No estudo da Engenharia de Software, o autor Roger S. Pressman (2002) demonstra preocupação 
com a “crise do software” que, atualmente, ele intitula como “aflição crônica”, chegando a determinar 
números expressivos sobre a não finalização de projetos de sistemas começados e não terminados.
Em um mundo cada vez mais com recursos financeiros escassos, como é possível aceitar tal 
desperdício de tempo e dinheiro? O mesmo autor também aponta para o possível problema causador 
de tal absurdo: “A falta de adoção de métodos, ferramentas e procedimentos no desenvolvimento de 
software e a difícil relação de entendimento entre o usuário com o analista desenvolvedor”.
Várias técnicas de modelagem foram criadas e o analista desenvolvedor, mesmo assim, ainda 
tem dificuldades de realizar um projeto de sistemas livre de manutenções e retrabalhos, condenando 
diretamente a qualidade do produto.
A adoção da norma ISO/IEC 12207:1997 pelo micro, pelo pequeno e pelo médio desenvolvedor 
de software direciona como estruturar e gerenciar o ciclo de desenvolvimento, proporcionando 
acompanhamento de todo o processo, permitindo que o software venha representar a realidade da 
empresa modelada para geração de um sistema customizado, atendendo seus requisitos e as necessidades 
dessa empresa.
Adotar a norma permite padronizar os processos de desenvolvimento de software, aumentando 
a aderência a uma ferramenta de apoio a modelagem do software, agregando a elas facilidades de 
relacionamento e compreensão do usuário e do desenvolvedor, utilizando métodos sistêmicos que 
diminuirão erros na modelagem e, por consequência, a manutenção exagerada, eliminação de custos 
indevidos, extinção do tempo desnecessário dedicado ao retrabalho, obtendo qualidade no software, 
bem como criar a real possibilidade de extrair de um sistema informações relevantes que venham não 
só para contribuir com a decisão, mas para ser um fator de excelência empresarial, permitindo novos 
negócios, permanência e sobrevivência em um mercado atuante.
12.2 Relevância
Segundo o Ministério da Ciência e Tecnologia (2002), a participação de mercado das micro, das 
pequenas e das médias empresas desenvolvedoras de software corresponde a 65,1% do total (tabela 1). 
Diante da dimensão desse mercado ainda em franca expansão, motivou a prestar atenção especial para 
esse tema.
101
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
EngEnharia dE SoftwarE
Tabela 9 – Porte das organizações, segundo comercialização bruta anual (2002)
Porte das organizações
Portes %
Micro 16,5
Pequena 25,3
Média 23,3
Grande 34,9
Atualmente, com a visão global permitindo a participação nas exportações de software para outros 
países, cada vez mais a qualidade no processo de desenvolvimento e do produto de software ganha 
maior observação e adoção das melhores práticas e soluções tecnológicas que atendam aos requisitos 
estabelecidos.
12.3 Engenharia de software
Segundo Rezende (1999), “Engenharia é a arte das construções,embasada no conhecimento 
científico e empírico, adequada ao atendimento das necessidades humanas”.
Engenharia de Software é a metodologia de desenvolvimento e a manutenção de sistemas modulares, 
com as seguintes características (REZENDE, 1999):
— Adequação aos requisitos funcionais do negócio do cliente e seus respectivos procedimentos 
pertinentes.
— Efetivação de padrões de qualidade e produtividade em suas atividades e produtos;
— Fundamentação na tecnologia da informação disponível, viável e oportuna.
— Planejamento e gestão de atividades, recursos, custos e datas.
Segundo Pressman (2002), Engenharia de Software é:
— “O estabelecimento e uso de sólidos princípios de engenharia para que se possa obter 
economicamente um software que seja confiável e que funcione eficientemente em máquinas 
reais.”
— “Descendente da engenharia de sistemas e de hardware. Abrange um conjunto de três 
elementos fundamentais (métodos, ferramentas e procedimentos), que possibilita ao gerente o 
controle do processo de desenvolvimento do software e oferece ao profissional uma base para 
a construção de software de alta qualidade.”
102
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
Unidade II
Segundo Martin (1991), Engenharia de Software é:
– “É o estudo dos princípios e sua aplicação no desenvolvimento e na manutenção de sistemas 
de software.”
– “Tanto a engenharia de software como as técnicas estruturadas são coleções de metodologias 
de software e ferramentas.”
Como conclusão, pode‑se relatar que Engenharia de Software é um conjunto de práticas para 
desenvolvimento de soluções de software, ou seja, roteiro que pode utilizar diversas técnicas.
A sequência de passos preestabelecidos permite optar e variar de técnicas e ferramentas nas suas 
diversas fases (REZENDE, 1999).
12.4 Objetivos da engenharia de software
De um modo geral, considera‑se que os objetivos primários da Engenharia de Software são 
o aprimoramento da qualidade dos produtos de software e o aumento da produtividade dos 
engenheiros de software, além do atendimento aos requisitos de eficácia e eficiência, ou seja, 
efetividade (MAFFEO, 1992).
A Engenharia de Software visa a sistematizar a produção, a manutenção, a evolução e a recuperação de 
produtos intensivos de software, de modo que ocorra dentro de prazos e custos estimados, com progresso 
controlado e utilizando princípios, métodos, tecnologia e processos em contínuo aprimoramento. Os 
produtos desenvolvidos e mantidos, seguindo um processo efetivo e segundo preceitos da Engenharia 
de Software asseguram, por construção, qualidade satisfatória, apoiando adequadamente os seus 
usuários na realização de suas tarefas, operam satisfatória e economicamente em ambientes reais e 
podem evoluir continuamente, adaptando‑se a um mundo em constante evolução (FIORINI, 1998).
Associando a esses objetivos, o termo engenharia pretende indicar que o desenvolvimento de 
software deve submeter‑se a leis similares às que governam a manufatura de produtos industriais em 
engenharias tradicionais, pois ambos são metodológicos (MAFFEO, 1992).
Com base nos objetivos da Engenharia de Software, fica evidente a necessidade da adoção de um 
modelo sistêmico para padronizar e gerenciar os processos de desenvolvimento de software.
12.5 Crise do software
Para generalizar o termo, ocorre quando o software não satisfaz seus envolvidos, sejam clientes 
e/ou usuários, desenvolvedores ou empresa (REZENDE, 1999).
A expressão “crise do software”, que começou a ser utilizada na década de 1960, tem historicamente 
aludido a um conjunto de problemas recorrentemente enfrentados no processo de desenvolvimento 
(construção, implantação e manutenção) de software (MAFFEO, 1992).
103
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
EngEnharia dE SoftwarE
Esses problemas não se referem apenas a programas que não funcionam. Na verdade, a chamada 
“crise do software” abrange todos os problemas relacionados a (REZENDE, 1999):
— Como sistemas computacionais são construídos.
— Como sistemas computacionais são implantados, referindo‑se aqui ao processo de substituir 
sistemas antigos, desativando sistemas correntemente em operação, ou ao processo de instalar 
um sistema inteiramente novo.
— Como é provida a manutenção da quantidade crescente de software construído, associado a 
sistemas computacionais cada vez mais complexos.
— Como fazer face à crescente demanda para construção de software, visando a satisfazer ao 
conjunto enormemente variado de anseios por informatização, atualmente detectado na 
sociedade moderna.
— Como administrar as questões comportamentais, envolvendo os clientes e/ou usuários, a 
política, a cultura e a filosofia empresarial.
Apesar da enorme variedade de problemas que caracterizam a crise do software, engenheiros de 
software e gerentes de projetos para desenvolvimento de sistemas computacionais tendem a concentrar 
suas preocupações no seguinte aspecto: “A enorme imprecisão das estimativas de cronogramas e de 
custos de desenvolvimento” (tabelas 2, 3, 4 e 5) (LEE, 2002).
Tabela 10 – Custos em projeto de software por fase de desenvolvimento (LEE, 2002)
Custos em projeto de software por fase de desenvolvimento
Etapa de trabalho %
Análise de requisitos 3
Desenho 8
Programação 7
Testes 15
Manutenção 67
Tabela 11 – Custos para correção de erros de software (LEE, 2002)
Custos para correção de erros de software
Fase de desenvolvimento
do software
% de desvios 
($) 
Erros 
introduzidos (%)
Erros 
encontrados (%) 
Custo relativo 
para correção
Análise de requisitos 5 55 18 1,0
Desenho 25 30 10 1,0 – 1,5
Teste do código e da unidade 10 
Teste de integração 50 10 50 1,0 – 5,0
104
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
Unidade II
Validação e documentação 10 
Manutenção operacional 5 22 10 – 100
Tabela 12 – Excedentes de custo (LEE, 2002)
Excedentes de custo
% Excedente de custo % de Respostas
<20% 15,5%
21% – 50% 31,5%
51% – 100% 29,6%
101% – 200% 10,2%
201% – 400% 8,8%
>400% 4,4%
Tabela 13 – Excedente de prazo (LEE, 2002)
Excedente de prazo
% Excedente de prazo % de respostas
<20% 13,9%
21% – 50% 18,3%
51% – 100% 20,0%
101% – 200% 35,5%
201% – 400% 11,2%
>400% 1,1%
12.6 Anticrise do software
Segundo Rezende (1999), pode‑se resumir que a anticrise é a união e o trabalho conjunto e 
harmonioso de três elementos: empresa (alta administração), cliente e/ou usuário e a unidade de 
informática (desenvolvedores de soluções).
Na prática, cabe, principalmente, à unidade de informática aceitar esse conceito e fazer o possível 
para a efetivação dessa tese (anticrise), utilizando‑se de todos os recursos disponíveis para tal.
A unidade de informática é um dos principais agentes de mudança nas organizações, preocupando‑se 
com o negócio empresarial, auxiliando efetivamente os gestores nos processos de tomada de decisão, 
tanto operacionais, como gerenciais e estratégicas.
12.7 Qualidade de software
Atingir um alto nível de qualidade de produto ou serviço é o objetivo da maioria das organizações. 
Atualmente, não é mais aceitável entregar produtos com baixa qualidade e reparar os problemas e as 
deficiências depois que os produtos foram entregues ao cliente (SOMMERVILLE, 2003).
105
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
EngEnharia dE SoftwarE
Segundo Machado (2001), para muitos engenheiros de software, a qualidade do processo de 
software é tão importante quanto à qualidade do produto. Assim, na década de 1990 houve uma grande 
preocupação com a modelagem e as melhorias no processo de software. Abordagens importantes como 
as normas ISO 9000 e a ISO/ IEC 12207, o modelo CMM (Capability Maturity Model) e o SPICE (Software 
Process Improvement and Capability dEtermination)sugerem que, melhorando o processo de software, 
podemos melhorar a qualidade dos produtos.
A qualidade é consequência dos processos, das pessoas e da tecnologia. A relação entre a qualidade 
do produto e cada um desses fatores é complexa. Por isso, é muito mais difícil controlar o grau de 
qualidade do produto do que controlar os requisitos (PÁDUA, 2003).
Prevê‑se que na primeira década dos anos 2000, após ajustarem seus processos para a produção de 
software de qualidade dentro de prazos e orçamentos confiáveis, as organizações foram pressionadas 
por seus concorrentes a reduzir substancialmente os prazos para a entrega de produtos. Organizações 
que sejam capazes de integrar, harmonizar e acelerar seus processos de desenvolvimento e manutenção 
de software terão a primazia do mercado (MACHADO, 2001).
Segundo o Ministério da Ciência e Tecnologia (2002), ainda que divulgados na década de 1990, o 
conhecimento, a utilização das normas e os modelos para qualidade de software estão distantes de se 
tornar realidade nas empresas desenvolvedoras de software (tabelas 6, 7, 8 e 9).
Tabela 14 – Conhecimento da Norma ISO/IEC 12207 (MCT, 2002)
Conhecimento da Norma NBR ISO/IEC 12207
 – Processos de ciclo de vida de software–
Categorias Total Micro Pequena Média Grande
Conhece e usa sistematicamente 3,9 1,4 3,8 2,6 9,1
Conhece e começa a usar 8,3 6,1 6,8 7,7 14,8
Conhece, mas não usa 55,1 48,6 51,1 64,1 67,0
Não conhece 32,7 43,9 38,3 25,6 9,1
Tabela 15 – Conhecimento da Norma ISO 9000 (MCT, 2002)
Conhecimento das Normas ISO 9000 – Gestão da qualidade
Categorias Total Micro Pequena Média Grande
Conhece e usa sistematicamente 19,4 3,4 16,3 34,1 44,0
Conhece e começa a usar 14,8 14,1 18,5 12,2 12,1
Conhece, mas não usa 52,4 62,4 50,4 43,9 41,8
Não conhece 13,4 20,1 14,8 9,8 2,2
106
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
Unidade II
Tabela 16 – Conhecimento do modelo CMM (MCT, 2002)
Conhecimento do modelo CMM – Capability Maturity Model
Categorias Total Micro Pequena Média Grande
Conhece e usa sistematicamente 3,9 0,7 2,9 2,5 11,4
Conhece e começa a usar 17,1 3,4 20,4 30,0 29,5
Conhece, mas não usa 53,7 62,2 48,9 47,5 48,9
Não conhece 25,3 33,8 27,7 20,0 10,2
Tabela 17 – Conhecimento do projeto SPICE (MCT, 2002)
 Conhecimento do projeto SPICE – Software Process Improvement
and Capability dEtermination (Technical Report ISO/IEC TR 15504)
Categorias Total Micro Pequena Média Grande
Conhece e usa sistematicamente 1,0 2,0 ‑ ‑ 1,1
Conhece e começa a usar 3,2 1,4 3,0 5,1 5,7
Conhece, mas não usa 56,7 49,0 50,4 59,0 77,3
Não conhece 39,1 47,6 46,6 35,9 15,9
Diante desse fato, podemos afirmar que, por falta de utilização de normas ou modelos de qualidade 
de software, produzimos softwares de qualidade contestável e participando efetivamente da “crise do 
software” (PRESSMAN, 1995).
12.7.1 Produto de software
Quando entregamos a um cliente um pacote bem delimitado e identificado, podemos dizer que 
entregamos um produto (SPINOLA, 1998).
A definição para produto de software, segundo a norma IEEE‑STD‑610 (IEEE, 1990), é:
“O conjunto completo, ou qualquer dos itens individuais do conjunto, de programas de computador, 
procedimentos e documentação associada e dados designados para liberação para um cliente ou usuário 
final.” (PAULK, 1995)
12.7.2 Processo de software
O conceito de processo de software se baseia no conceito generalizado de processo, que pode ser 
definido como uma sequência de estados de um sistema que se transforma (SPINOLA, 1998).
O SEI (Software Engineering Institute), da Carnegie Melon University, propõe o seguinte:
“Um processo é uma sequência de passos realizados para um dado propósito. Colocado de 
maneira mais simples, processo é aquilo que você faz. Processo é aquilo que as pessoas fazem, usando 
107
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
EngEnharia dE SoftwarE
procedimentos, métodos, ferramentas e equipamentos, para transformar matéria‑prima (entradas) em 
produto (saída) que tenha valor para o cliente.” (PAULK, 1995)
“O processo de software pode ser definido como um conjunto de atividades, métodos, práticas e 
transformações que as pessoas empregam para desenvolver e manter software e os produtos associados 
(exemplo: planos de projeto, documentos de projeto (design), código, casos de teste e manual do 
usuário).” (PAULK, 1995)
12.8 ISO/IEC 12207
Segundo Machado (2001), a globalização da economia vem influenciando as empresas produtoras e 
prestadoras de serviços de software a alcançar o patamar de qualidade e produtividade internacional para 
enfrentarem a competitividade cada vez maior. A norma internacional NBR ISO/IEC 12207 – Tecnologia 
da Informação – Processos de Ciclo de Vida de Software (ISO12207: 97) é usada como referência em 
muitos países, inclusive no Brasil, para alcançar esse diferencial competitivo.
Figura 7 – Arquitetura da norma NBR ISO 12207 (MACHADO, 2001)
Ela tem por objetivo auxiliar os envolvidos na produção de software a definir seus papéis, por meio 
de processos bem definidos e proporcionar às organizações que a utilizam um melhor entendimento das 
atividades a serem executadas nas operações que envolvem, de alguma forma, o software.
A arquitetura descrita na norma (figura anterior) (MACHADO, 2001) utiliza uma terminologia bem 
definida e é composta de: processos, atividades e tarefas para aquisição, fornecimento, desenvolvimento, 
operação e manutenção do software.
A norma estabelece uma arquitetura de alto nível para o ciclo de vida do software que abrange 
desde a concepção até a descontinuidade dele. Essa arquitetura é baseada em processos‑chave e no 
inter‑relacionamento entre eles e segue dois princípios básicos:
108
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
Unidade II
— Modularidade: os processos têm alta coesão e baixo acoplamento, ou seja, todas as partes 
de um processo são fortemente relacionadas e o número de interfaces entre os processos é 
mantido ao mínimo.
— Responsabilidade: cada processo na norma é de responsabilidade de uma “parte envolvida”, 
que pode ser uma organização ou parte dela. As partes envolvidas podem ser da mesma 
organização ou de organizações diferentes.
Segundo Machado (2001), na norma ISO/IEC 12207, os processos que envolvem o ciclo de vida 
do software são agrupados em três classes que representam sua natureza. Cada processo é definido 
em termos de suas próprias atividades e cada atividade é adicionalmente definida em termos de suas 
tarefas (figura).
Figura 8 – Processos de ciclo de vida do software (ISO12207: 97)
12.8.1 Processos fundamentais
Os processos fundamentais atendem, no início, à contratação entre o adquirente e o fornecedor e a 
execução do desenvolvimento, da operação ou da manutenção de produtos de software durante o ciclo 
de vida do software (MACHADO, 2001).
109
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
EngEnharia dE SoftwarE
Nas pequenas empresas de desenvolvimento, os processos fundamentais acontecem ainda que não 
estruturados pela adoção de uma norma, mas pela necessidade da realização da prestação de serviço ou 
do desenvolvimento dentro da própria empresa.
O planejamento é feito de modo precário pela ausência constante de documentação entre o 
desenvolvedor e o adquirente. Existe resistência em ambas as partes interessadas em gerar documentação, 
pois, normalmente, acreditam estar “perdendo tempo” na especificação dos requisitos e no planejamento 
em um todo do projeto. Muitos desenvolvedores partem direto para o desenvolvimento (codificação) 
e depois são levados a um processo de correção e manutenção interminável, provocando desgaste da 
relação comercial estabelecida, com o não cumprimento de prazos de entrega e o custo do projeto que 
foi orçadopor uma estimativa aleatória, acumulando prejuízos intangíveis.
12.8.2 Processos de apoio
Os processos de apoio auxiliam o sucesso e a qualidade do projeto de software e contribuem para eles.
Um processo de apoio é empregado e executado quando necessário para documentação, gerência 
de configuração, garantia da qualidade, processo de verificação, processo de validação, revisão conjunta, 
auditoria e resolução de problemas (MACHADO, 2001).
A documentação do software será a última tarefa que o desenvolvedor irá se preocupar, sendo 
tratado como se não tivesse que acontecer antes do desenvolvimento propriamente dito, a fim de ser 
possível acompanhar se os requisitos do projeto foram atendidos ou se nem foram especificados no 
momento oportuno. Os processos de verificação e validação ocorrem unilateralmente, ou seja, “esse 
requisito era óbvio, nem precisava mencionar” e para atender as necessidades do adquirente, esse 
processo será repetido inúmeras vezes, alongando a manutenção e atrasando o funcionamento e o 
atendimento das necessidades do negócio.
12.8.3 Processos organizacionais
Os processos organizacionais são empregados por uma organização para estabelecer e implementar 
uma estrutura constituída pelos processos de ciclo de vida e pelo pessoal envolvido no desenvolvimento 
do software. Eles são, geralmente, empregados fora do domínio de projetos e contratos específicos; 
entretanto, os ensinamentos desses projetos e contratos contribuem para a melhoria da organização, 
são eles: processos de gerência, infraestrutura, melhoria e treinamento (MACHADO, 2001).
O processo de gerência depende diretamente do porte da empresa. Em alguns casos existirá a pessoa 
responsável; em outros, o próprio desenvolvedor assumirá o papel, mas não a função, ou seja, 
aparecerá como responsável, mas devido à carência de tempo e de recursos humanos fará todo 
o trabalho e não praticará a gerência do projeto.
Para implementar os processos de infraestrutura, melhoria e treinamento, é fundamental a figura 
de gerência que exercerá acompanhamento das necessidades do projeto e seus devidos ajustes quanto 
à estrutura necessária para um desenvolvimento dentro dos requisitos do projeto, do dinamismo 
110
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
Unidade II
necessário para melhoria contínua do processo e os devidos treinamentos para adequação das 
tecnologias especificadas nos requisitos.
12.8.4 Processos de adaptação
O processo de adaptação define as atividades necessárias para adaptar a norma para sua aplicação 
na organização ou em projetos. A adaptação deve ser executada com base em alguns fatores que 
diferenciam uma organização ou projeto de outros, dentre os quais a estratégia de aquisição, modelos 
de ciclo de vida de projeto, características de sistemas, software e cultura organizacional. A existência 
desse processo permite que a norma seja adaptável a qualquer projeto, organização, modelo de ciclo de 
vida, cultura e técnica de desenvolvimento (MACHADO, 2001).
A adaptação inicia‑se com a disseminação da norma, promovendo o conhecimento de sua estrutura, 
a necessidade de sua adoção e os principais benefícios e medindo os impactos que ela trará a partir de 
sua implantação. Diante da realidade e do “caos” em que as pequenas empresas de desenvolvimento 
vivem com a falta de estrutura e planejamento, os empresários desenvolvedores se voltarão para o 
processo de desenvolvimento de software com qualidade, observando a “fatia” de mercado que poderá 
expandir seus negócios e ser ponto de referência no mercado de software brasileiro.
Atualmente, já existe um movimento das empresas para adoção de normas e modelos de 
maturidade do processo de desenvolvimento de software, buscando melhor produtividade e com 
ênfase em promover uma reengenharia nos processos de desenvolvimento de software, que até então 
eram, basicamente, vindos da experiência dos “desenvolvedores de código” e não de gestores de projetos 
de grande expressão, e que assumem papel de alta relevância nas empresas para se obter vantagens 
competitivas em um mercado que busca a informação certa no momento certo.
12.9 Conclusão
Todas as normas e os modelos de qualidade para software têm por objetivo buscar organização e 
melhoria contínua no processo de desenvolvimento de software, porém fica identificado que a ISO/IEC 
12.207 possui pontos importantes a serem ressaltados:
— Adequação aos princípios e aos objetivos da Engenharia de Software.
— Possibilita ser fator crítico para o sucesso no desenvolvimento de software.
— Adaptabilidade na inexistência de alguns processos, dependendo do porte da empresa 
desenvolvedora de software (ISO/IEC 12207: 97).
— Com a sua adoção é possível contribuir para o fim da “crise do software”.
— Permite para micro, pequenas e médias empresas que possuem recursos humanos e financeiros 
limitados à possibilidade de competir com as empresas de maior porte.
111
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
EngEnharia dE SoftwarE
— Com os processos de desenvolvimento de software controlados, documentados e gerenciados, 
o pequeno desenvolvedor poderá assumir projetos de alta complexidade, aliados à técnica e à 
criatividade, pois terá mais chance de sucesso.
— Melhor capacitado e provedor de metodologias que levam ao desenvolvimento de software 
com qualidade, o desenvolvedor poderá criar soluções que atendam as necessidades e os 
requisitos da empresa, contribuindo para criação de vantagens competitivas, sustentando as 
bases estratégicas das organizações.
12.10 Referências bibliográficas
FILHO, Wilson de Pádua Paula. Engenharia de Software. Rio de Janeiro: Ed. LTC, 2003.
FIORINI, Soeli T. et al. Engenharia de Software com CMM. Rio de Janeiro: Ed. Brasport, 1998.
IEEE STD. 610 12‑1990, IEEE Standard Glossary of Software Engineering Terminology. IEEE, 
Piscataway, NJ, 1997.
LEE, Richard C.; TEPFENHART, William M. UML e C++ – Guia de desenvolvimento orientado a objeto. 
São Paulo: Ed. Makron Books, 2002.
MACHADO, Cristina Ângela Filipak. In WEBER, Kival Chaves et al. Qualidade e Produtividade em 
Software. São Paulo: Ed. Makron Books, 2001.
MAFFEO, Bruno. Engenharia de Software e Especificação de Sistemas. Rio de Janeiro: Ed. Campus, 
1992.
MARTIN, James. Engenharia da Informação. Rio de Janeiro: Ed. Campus, 1991.
MINISTÉRIO DA CIÊNCIA E TECNOLOGIA. Secretaria de Política de Informática. Qualidade e 
Produtividade no Setor de Software Brasileiro. Brasília, n. 4, 2002.
NBR ISO/IEC 12207:1997, Tecnologia de Informação – Processos de Ciclo de Vida de Software. Rio de 
Janeiro: ABNT – Associação Brasileira de Normas Técnicas.
PAULK, M. C. et al. The Capatibility Maturity Model – Guidelines for improving the software process. 
Addison Wesley, SEI series, 1995.
PRESSMAN, Roger S. Engenharia de Software. São Paulo: Ed. Makron Books, 1995.
PRESSMAN, Roger S. Engenharia de Software. Rio de Janeiro: Ed. McGraw‑Hill, 2002.
REZENDE, Denis Alcides. Engenharia de Software e Sistemas de Informações. Rio de Janeiro: Ed. 
Brasport, 1999.
112
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
Unidade II
SEI – Software Engineering Institute. Carnegie Melon University, http://www.sei.cmu.edu.
SOMMERVILLE, Ian. Engenharia de Software. São Paulo: Ed. Pearson Education, 2003.
SPINOLA, Mauro de Mesquita. Diretrizes para o desenvolvimento de software de sistemas 
embutidos. Tese de Doutorado. São Paulo: USP, 1998.
13 GERêNCIA DE CONfIGURAçãO E mUDANçAS
13.1 Introdução
Em um ambiente de desenvolvimento de software altamente complexo, a gerência de 
configuração de software tem caráter essencial quando as modificações e as alterações são 
inevitáveis durante todo o ciclo de vida do software. Essas alterações geram confusão aos 
desenvolvedores. A confusão aparece quando essas alterações não são analisadasantes de serem 
feitas, não são registradas antes de serem codificadas e não são relatadas aos envolvidos no 
sentido de controlar e evitar erros.
Tratando‑se de sistemas, em que a confiabilidade é fator de sucesso em sua utilização, a falta de 
controle nas alterações pode trazer transtornos de ordem humana, cumprimento de objetivos e prejuízos 
nos negócios.
A gerência de configuração de software é um tema, simultaneamente, abrangente e 
especializado, dentro das melhores práticas da Engenharia de Software que possibilita consolidar 
os conhecimentos no desenvolvimento de software, bem como preparar os micro, os pequenos 
e os médios desenvolvedores para encarar com confiança os novos desafios no mundo dos 
negócios e também reforçar as competências profissionais, mantendo‑se atualizado em relação 
ao potencial dos sistemas de informação e das novas tecnologias em uma perspectiva empresarial 
e competitiva globalmente.
A partir do conhecimento adquirido, o desenvolvedor será elemento multiplicador de soluções, 
contribuindo e agregando valor aos sistemas com aplicação de metodologias e tecnologias adequadas, 
capazes de gerir com sucesso as informações relevantes aos negócios aplicáveis, trazendo às organizações 
vantagens competitivas.
No estudo da Engenharia de Software, o autor Roger S. Pressman (2002) demonstra preocupação 
com a “crise do software” que, atualmente, ele intitula como “aflição crônica”, chegando a determinar 
números expressivos sobre a não finalização de projetos de sistemas começados e não terminados. As 
tabelas 1 e 2 mostram os números de tal problema.
113
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
EngEnharia dE SoftwarE
Tabela 18 – Excedentes de custo (LEE, 2002) Tabela 2 – Excedentes de prazo (LEE, 2002)
Excedentes de prazo
% Excedente de prazo % de respostas
<20% 13,9%
21% – 50% 18,3%
51% – 100% 20,0%
101% – 200% 35,5%
201% – 400% 11,2%
>400% 1,1%
Excedentes de custo
% Excedente de custo % de respostas
<20% 15,5%
21% – 50% 31,5%
51% – 100% 29,6%
101% – 200% 10,2%
201% – 400% 8,8%
>400% 4,4%
Em um mundo cada vez mais com recursos financeiros escassos, como é possível aceitar tal 
desperdício de tempo e dinheiro? O mesmo autor também aponta para o possível problema causador 
de tal absurdo: “A falta de adoção de métodos, ferramentas e procedimentos no desenvolvimento de 
software e a difícil relação de entendimento entre o usuário com o analista desenvolvedor”.
Várias técnicas de gestão de projetos foram criadas e o desenvolvedor, mesmo assim, ainda tem 
dificuldades de realizar projetos de sistemas livres de manutenções e correções constantes, condenando 
diretamente a qualidade do produto entregue.
A adoção da Gerência de Configuração de Software no desenvolvimento de sistemas, pelo micro, pelo 
pequeno e pelo médio desenvolvedor de software, direciona como estruturar, gerenciar e controlar por 
todo o ciclo de vida do software, proporcionando acompanhamento de todo o processo, permitindo que 
o software venha representar a realidade da empresa modelada para geração de um sistema adequado, 
atendendo seus requisitos e as necessidades dessa empresa.
Adotar modelos de gestão permite padronizar os processos de desenvolvimento de software, 
aumentando a aderência a uma ferramenta de apoio, agregando a elas facilidades de relacionamento 
e compreensão do usuário e do desenvolvedor, utilizando métodos sistêmicos que diminuirão erros 
e, por consequência, a manutenção exagerada, a eliminação de custos indevidos e a extinção do 
tempo desnecessário dedicado ao retrabalho, obtendo qualidade no software, bem como criar a real 
possibilidade de extrair de um sistema informações relevantes que venham não só para contribuir com 
a decisão, mas para ser um fator de excelência empresarial, permitindo novos negócios, permanência e 
sobrevivência em um mercado atuante.
114
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
Unidade II
13.2 Relevância
Segundo o Ministério da Ciência e Tecnologia (2002), a participação de mercado das micro, das 
pequenas e das médias empresas desenvolvedoras de software corresponde a 65,1% do total (tabela). 
Diante da dimensão desse mercado ainda em franca expansão, motivou a prestar atenção especial para 
esse tema.
Tabela 19 – Porte das organizações, segundo comercialização bruta anual (2002)
Porte das organizações
Portes %
Micro 16,5
Pequena 25,3
Média 23,3
Grande 34,9
Atualmente, com a visão global permitindo a participação nas exportações de software para outros 
países, cada vez mais a qualidade no processo de desenvolvimento e do produto de software ganha 
maior observação e adoção das melhores práticas e soluções tecnológicas.
Outro fator motivador é o baixo índice de utilização das normas e dos modelos de qualidade de 
software, em que o processo de gerência de configuração de software está inserido. Conclui‑se que, 
consequentemente, a sua adoção também está comprometida. As tabelas 4, 5, 6 e 7 mostram esses 
índices.
Tabela 20 – Conhecimento da norma ISO/IEC 12207 (MCT, 2002)
Conhecimento da Norma NBR ISO/IEC 12207
 – Processos de ciclo de vida de software – 
Categorias Total Micro Pequena Média Grande
Conhece e usa sistematicamente 3,9 1,4 3,8 2,6 9,1
Conhece e começa a usar 8,3 6,1 6,8 7,7 14,8
Conhece, mas não usa 55,1 48,6 51,1 64,1 67,0
Não conhece 32,7 43,9 38,3 25,6 9,1
Tabela 21 – Conhecimento da norma ISO 9000 (MCT, 2002)
Conhecimento das normas ISO 9000 – Gestão da qualidade
Categorias Total Micro Pequena Média Grande
Conhece e usa sistematicamente 19,4 3,4 16,3 34,1 44,0
Conhece e começa a usar 14,8 14,1 18,5 12,2 12,1
Conhece, mas não usa 52,4 62,4 50,4 43,9 41,8
Não conhece 13,4 20,1 14,8 9,8 2,2
115
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
EngEnharia dE SoftwarE
Tabela 22 – Conhecimento do modelo CMM (MCT, 2002)
Conhecimento do modelo CMM – Capability Maturity Model
Categorias Total Micro Pequena Média Grande
Conhece e usa sistematicamente 3,9 0,7 2,9 2,5 11,4
Conhece e começa a usar 17,1 3,4 20,4 30,0 29,5
Conhece, mas não usa 53,7 62,2 48,9 47,5 48,9
Não conhece 25,3 33,8 27,7 20,0 10,2
Tabela 23 – Conhecimento do projeto SPICE (MCT, 2002)
 Conhecimento do projeto SPICE – Software Process Improvement
and Capability dEtermination (Technical Report ISO/IEC TR 15504)
Categorias Total Micro Pequena Média Grande
Conhece e usa sistematicamente 1,0 2,0 ‑ ‑ 1,1
Conhece e começa a usar 3,2 1,4 3,0 5,1 5,7
Conhece, mas não usa 56,7 49,0 50,4 59,0 77,3
Não conhece 39,1 47,6 46,6 35,9 15,9
13.3 Engenharia de software
Segundo Pressman (2002), Engenharia de Software é:
— “O estabelecimento e uso de sólidos princípios de engenharia para que se possa obter 
economicamente um software que seja confiável e que funcione eficientemente em máquinas 
reais.”
— “Descendente da engenharia de sistemas e de hardware. Abrange um conjunto de três 
elementos fundamentais (métodos, ferramentas e procedimentos), que possibilita ao gerente o 
controle do processo de desenvolvimento do software e oferece ao profissional uma base para 
a construção de software de alta qualidade.”
Engenharia de Software é a metodologia de desenvolvimento e a manutenção de sistemas modulares, 
com as seguintes características (REZENDE, 1999):
• Adequação aos requisitos funcionais do negócio do cliente e seus respectivos procedimentos 
pertinentes.
• Efetivação de padrões de qualidade e produtividade em suas atividades e produtos.
• Fundamentação na tecnologia da informação disponível, viável e oportuna.
• Planejamento e gestão de atividades, recursos, custos e datas.
116
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
Unidade II
Como conclusão, pode‑se relatar que Engenharia de Software é um conjunto de práticas paradesenvolvimento de soluções de software, ou seja, roteiro que pode utilizar diversas técnicas.
A Engenharia de Software visa a sistematizar a produção, a manutenção, a evolução e a recuperação de 
produtos intensivos de software, de modo que ocorra dentro de prazos e custos estimados, com progresso 
controlado e utilizando princípios, métodos, tecnologia e processos em contínuo aprimoramento. Os 
produtos desenvolvidos e mantidos, seguindo um processo efetivo e segundo preceitos da Engenharia 
de Software asseguram, por construção, qualidade satisfatória, apoiando adequadamente os seus 
usuários na realização de suas tarefas, operam satisfatória e economicamente em ambientes reais e 
podem evoluir continuamente, adaptando‑se a um mundo em constante evolução (FIORINI, 1998).
Com base nos objetivos da Engenharia de Software, demonstra a necessidade da adoção de gestão 
sistêmica do processo de desenvolvimento de software com princípios de qualidade para padronizar e 
gerenciar todas as tarefas e fases do projeto.
13.4 Qualidade de software
Atingir um alto nível de qualidade de produto ou serviço é o objetivo da maioria das organizações. 
Atualmente, não é mais aceitável entregar produtos com baixa qualidade e reparar os problemas e as 
deficiências depois que os produtos foram entregues ao cliente (SOMMERVILLE, 2003).
Segundo Machado (2001), para muitos engenheiros de software, a qualidade do processo de 
software é tão importante quanto à qualidade do produto. Assim, na década de 1990 houve uma grande 
preocupação com a modelagem e as melhorias no processo de software. Abordagens importantes como 
as normas ISO 9000 e a ISO/ IEC 12207, o modelo CMM (Capability Maturity Model) e o SPICE (Software 
Process Improvement and Capability dEtermination) sugerem que, melhorando o processo de software, 
podemos melhorar a qualidade dos produtos.
A qualidade é consequência dos processos, das pessoas e da tecnologia. A relação entre a qualidade 
do produto e cada um desses fatores é complexa. Por isso, é muito mais difícil controlar o grau de 
qualidade do produto do que controlar os requisitos (PÁDUA, 2003).
Segundo Machado (2001), a globalização da economia vem influenciando as empresas produtoras 
e prestadoras de serviços de software a alcançar o patamar de qualidade e produtividade internacional 
para enfrentarem a competitividade cada vez maior.
Organizações que sejam capazes de integrar, harmonizar e acelerar seus processos de desenvolvimento 
e manutenção de software terão a primazia do mercado (MACHADO, 2001).
Diante desse fato, podemos afirmar que, por falta de utilização das normas ou dos modelos de 
qualidade de software, produzimos softwares de qualidade contestável e participando efetivamente da 
“crise do software” (PRESSMAN, 2002).
117
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
EngEnharia dE SoftwarE
13.5 Gerência de configuração de software (GCS)
Segundo Babich (1986), gerência de configuração de software é:
“A arte de coordenar o desenvolvimento de software para minimizar a confusão é chamada de 
gerência de configuração. A gerência de configuração é a arte de identificar, organizar e controlar 
modificações de software que está sendo construído por uma equipe de programação. O objetivo é 
maximizar a produtividade pela minimização dos erros.”
Segundo Sommerville (2003), o gerenciamento de configuração (Configuration Management – CM) 
é o desenvolvimento e a aplicação de padrões e procedimentos para gerenciar um produto de sistema 
em desenvolvimento. É necessário gerenciar os sistemas em desenvolvimento, porque, à medida que eles 
se desenvolvem, são criadas muitas versões diferentes de software. Essas versões incorporam propostas 
de mudanças, correções de defeitos e adaptações para diferentes hardwares e sistemas operacionais. É 
possível que haja várias versões em desenvolvimento e em uso ao mesmo tempo. É necessário manter 
o controle das mudanças que foram implementadas e de como essas mudanças foram incluídas no 
software.
O processo de gerência de configuração é um processo de aplicação de procedimentos administrativos 
e técnicos, por todo o ciclo de vida de software, destinado a identificar e definir os itens de software em 
um sistema e estabelecer suas linhas básicas (baseline), controlar as modificações e as liberações dos 
itens, registrar e apresentar a situação dos itens e dos pedidos de modificação, garantir a completeza, a 
consistência e a correção dos itens; e controlar o armazenamento, a manipulação e a distribuição dos 
itens (ISO12207: 97).
Segundo Pressman (2002), a gerência de configuração de software (Software Configuration 
Management – SCM) é uma atividade guarda‑chuva que é aplicada ao longo de todo o processo 
de software. Como modificações podem ocorrer em qualquer época, as atividades de SCM são 
desenvolvidas para identificar as modificações, controlar modificações, garantir que as modificações 
sejam adequadamente implementadas e relatar as modificações a outros interessados.
As mudanças descontroladas em software, geralmente, levam ao caos e/ou à crise de software 
(REZENDE, 1999).
Segundo Pádua (2003), na engenharia de software, os artefatos que devem ser controlados incluem 
a documentação, os modelos e o próprio código (fontes e executável). Mesmo para projetos de porte 
muito pequeno, um mínimo de controle de versões é necessário para evitar o desperdício de trabalho. 
Com o controle de versões conservam‑se versões antigas dos artefatos, que contém material que pode 
vir a ser novamente aproveitado, mas evita‑se que versões mais antigas venham de forma inadvertida, 
a tomar o lugar de versões mais novas. Esse tipo de erro é comum mesmo em projetos individuais e essa 
espécie de desperdício é facilmente evitada.
118
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr
am
ad
or
 -
 d
at
a
Unidade II
13.5.1 Implementação da gerência de configuração de software
Implementar GCS implica adotar procedimentos que afetam todos os setores de uma organização, 
pois ela é um processo complexo que envolve aspectos técnicos, gerenciais e culturais. Seu sucesso 
depende mais de fatores culturais que de fatores técnicos e gerenciais. Seus conceitos são fáceis de 
serem entendidos, mas difíceis de serem colocados em prática (OLIVEIRA, 2001).
A norma IEEE 1042 (1987) descreve as atividades de GCS (IEEE, 1997):
1. Estabelecer baselines.
1.1 Atribuir um identificador exclusivo ao Item de Configuração (IC).
1.2 Criar o documento baseline.
2. Identificar diferentes versões internas.
3. Garantir documentação técnica completa e atualizada do produto.
4. Exigir padrões.
5. Usar o GCS para promover cada IC de uma fase de desenvolvimento ou de teste para outra.
6. Usar o GCS para identificar o envolvimento do cliente nas baselines internas.
Muitas empresas julgam, equivocadamente, que a simples compra de uma ferramenta adequada de 
GCS irá resolver os seus problemas. Pesquisas conduzidas pelo Gartner Group revelam que o custo da 
ferramenta representa apenas 10% no custo total de adoção de GCS. Os restantes 90% relacionam‑se 
com gastos com pessoal, equipamentos etc. (SATC, 1995).
Para assegurar uma solução efetiva de GCS, uma organização deve ater‑se às complexidades que 
surgem quando da implementação de uma modificação. Essas complexidades incluem (OLIVEIRA, 2001):
• Aspectos técnicos: qual ferramenta adotar, como configurá‑la, usabilidade etc.
• Aspectos gerenciais: como planejar o processo, acompanhar modificações, estabelecer prioridades, 
cronogramas etc.
• Aspectos organizacionais: infraestrutura da organização, autoridades e responsabilidades.
• Aspectos culturais: como as pessoas agem em busca dos seus objetivos, qual a cultura existente 
na organização e qual a maneira mais adequada de se fazer mudanças em tal cultura.
119
Re
vi
sã
o:
 N
om
e 
do
 re
vi
so
r -
 D
ia
gr
am
aç
ão
: N
om
e 
do
 d
ia
gr

Outros materiais