Buscar

engSOFmod2__pos

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 192 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 192 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 192 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

S O F T W A R E
Engenharia de Software
E N G E N H A R I A
DE
Thiago Schaedler Uhlm
ann
Código Logístico
59009
Fundação Biblioteca Nacional
ISBN 978-85-387-6552-3
9 7 8 8 5 3 8 7 6 5 5 2 3
S O F T W A R E
E N G E N H A R I A
DE
THIAGO SCHAEDLER UHLMANN
Engenharia de Software
IESDE BRASIL
2020
Thiago Schaedler Uhlmann
© 2020 – IESDE BRASIL S/A. 
É proibida a reprodução, mesmo parcial, por qualquer processo, sem 
autorização por escrito do autor e do detentor dos direitos autorais.
Capa: IESDE BRASIL S/A. 
Imagem da capa: Andrey Suslov/mydegage/Shutterstock
Todos os direitos reservados.
IESDE BRASIL S/A. 
Al. Dr. Carlos de Carvalho, 1.482. CEP: 80730-200 
Batel – Curitiba – PR 
0800 708 88 88 – www.iesde.com.br
CIP-BRASIL. CATALOGAÇÃO NA PUBLICAÇÃO 
SINDICATO NACIONAL DOS EDITORES DE LIVROS, RJ
U31e
Uhlmann, Thiago Schaedler
Engenharia de software / Thiago Schaedler Uhlmann. - 1. ed. - 
Curitiba [PR] : IESDE, 2020. 
188 p. 
Inclui bibliografia
ISBN 978-85-387-6552-3
 1. Engenharia de software. 2. Software - Desenvolvimento. I. 
Título.
19-60521 CDD: 005.1
CDU: 004.41
Thiago Schaedler Uhlmann
Doutorando em Engenharia de Produção e Sistemas pela 
Pontifícia Universidade Católica do Paraná (PUCPR). Mestre 
em Design pela Universidade Federal do Paraná (UFPR). 
Bacharel em Administração pela FAE Centro Universitário. 
Atua profissionalmente como analista de processos ISO 
9001:2015 e como professor do ensino superior nas áreas 
de Gestão da Inovação, Governança de TI, Modelagem de 
Processos de Negócio e Gestão de Negócios. 
Sumário
Apresentação 7
1. Introdução à engenharia de software 9
1.1 Quem é o engenheiro de software 9
1.2 A prática da engenharia de software 13
1.3 O engenheiro de software e outros profissionais 17
2. Planejamento e processo de software 23
2.1 Estrutura básica do desenvolvimento de software 23
2.2 Modelos tradicionais de desenvolvimento 25
2.3 Modelos ágeis de desenvolvimento 33
3. Engenharia de requisitos 39
3.1 Métodos para a coleta de requisitos 40
3.2 Classificação de requisitos 48
3.3 Especificação e apresentação de requisitos 52
4. Modelagem de software com a UML 59
4.1 O que é a UML e por que utilizá-la? 60
4.2 Diagramas comportamentais 67
4.3 Diagramas estruturais 75
5. Gestão de projetos de software 83
5.1 Projeto de software: elementos básicos 83
5.2 Projeto de software: elementos acessórios 89
5.3 Projetos de arquiteturas de software 94
6. Gestão da qualidade em engenharia de software 103
6.1 Normas de qualidade 104
6.2 Qualidade em software 108
6.3 Melhorias em software 114
7. Testes e engenharia reversa em software 123
7.1 Modalidades de testes em software 124
7.2 Realização de testes 132
7.3 Manutenções e reengenharia 140
8. Práticas de engenharia de software 147
8.1 Design de interação 148
8.2 Jogos digitais 157
8.3 Projeto de WebApps e aplicativos móveis 167
Gabarito 175
Apresentação
As tecnologias da informação e comunicação estão 
cada vez mais presentes em nosso cotidiano. Utilizamos 
computadores, smartphones, tablets e outros dispositivos, 
que têm contribuído com grandes áreas, como nos avanços da 
medicina, ou com ações mais corriqueiras, como para pedir 
um lanche. 
Embora tenhamos familiaridade com esses dispositivos, 
muitas vezes, não nos atentamos sobre o quão complexo é 
elaborá-los, visto que somente funcionam se operados por 
softwares, os quais, para serem desenvolvidos, exigem do 
engenheiro a responsabilidade para gerenciar projetos e 
modelar, desenvolver e implantar softwares. 
Desse modo, a engenharia de software é uma área do 
conhecimento que tem sido cada vez mais procurada dentre 
as engenharias e as áreas relacionadas à TI. Isso se deve 
à crescente demanda do mercado em procurar softwares 
que, além de funcionarem adequadamente, sejam seguros, 
confiáveis, resistentes a ataques cibernéticos e que, portanto, 
não apresentem falhas, principalmente durante momentos 
críticos de sua utilização.
O objetivo principal desta obra é apresentar a você, 
estudante, um panorama geral da atuação profissional do 
engenheiro de software. Sendo assim, no primeiro capítulo, 
vamos iniciar com uma breve apresentação do que faz o 
engenheiro de software e sua atuação profissional em equipes 
multidisciplinares, ou seja, formadas por profissionais de 
diferentes áreas do conhecimento. 
Nos capítulos seguintes, trataremos de temas essenciais, 
como métodos de desenvolvimento de software, engenharia de 
requisitos, modelagem, gestão de projetos, testes e engenharia 
reversa. Por fim, apresentaremos algumas oportunidades de 
atuação do profissional de software, como no desenvolvimento 
de interfaces, jogos eletrônicos e aplicativos para dispositivos 
móveis. Dessa forma, por meio da leitura deste livro, você 
terá a oportunidade de conhecer essa área cada vez mais 
promissora.
Bons estudos!
1
Introdução à engenharia de software
Neste capítulo, você estudará o perfil do engenheiro de software 
e o mercado de atuação desse profissional, que é cada vez mais 
promissor.
Conhecerá a rotina de trabalho na engenharia de software, 
compreendendo as principais atividades realizadas e a relação desse 
engenheiro com as equipes de trabalho multidisciplinares, isto é, 
formadas por profissionais de diferentes áreas do conhecimento.
Você também aprenderá que, como os demais profissionais de 
engenharia, o engenheiro de software deve saber resolver problemas 
e maximizar o uso de recursos. Desse modo, serão abordados os 
processos básicos da engenharia de software, como engenharia de 
requisitos, planejamento, desenvolvimento, testes e manutenção.
Além disso, você compreenderá as diferentes maneiras de se 
organizar equipes, denominadas paradigmas.
1.1 Quem é o engenheiro de 
software
Você sabe o que exatamente faz um engenheiro 
de software?
Embora o nome guarde relações com a 
engenharia, pois, dentre as várias atribuições, 
também atua com projetos e com engenheiros, o engenheiro de 
software é um profissional da área de Tecnologia da Informação.
Vídeo
10 Engenharia de Software
Resumidamente, o engenheiro de software é o 
profissional responsável pelo desenvolvimento e 
pela implantação de produtos, serviços e sistemas de 
software, desde a ideia inicial até o produto final.
A definição de engenharia de software sofre pequenas variações 
de acordo com cada autor. Schach (2010, p. 4), por exemplo, 
define engenharia de software como “uma disciplina cujo objetivo 
é produzir software isento de falhas, entregue dentro do prazo e 
orçamento previstos, e que atenda às necessidades do cliente”.
De acordo com o IEEE (Institute of Electrical and Electronic 
Engineers) – entidade internacional que definiu as diretrizes 
dessa área – engenharia de software trata-se da “aplicação de 
uma abordagem sistemática, disciplinada e quantificável no 
desenvolvimento, na operação e na manutenção de software, isto 
é, a aplicação de engenharia ao software” (IEEE apud PRESSMAN; 
MAXIM, 2016).
Como você pode notar, desenvolver software requer disciplina 
e visão lógica e, ao mesmo tempo, sistêmica. Logo, assim que se 
gradua, um engenheiro de software deve ser capaz de coordenar 
projetos, administrar equipes de trabalho e, inclusive, gerenciar 
conflitos que podem surgir durante o processo de desenvolvimento.
Desse modo, o trabalho de um engenheiro de software se diferencia 
do trabalho de um desenvolvedor, ao passo que, conforme afirma 
Wazlawick (2013), o engenheiro de software consiste em um projetista, 
sendo o desenvolvedor de software um executor do processo.
Introdução à engenharia de software 11
O engenheiro de software deve, portanto, “fornecer aos 
desenvolvedores (inclusive gerentes, analistas e designers) as 
ferramentas e processos que deverão ser usados e será o responsável 
por verificar se esse uso está sendo feito efetivamente e de forma 
otimizada” (WAZLAWICK, 2013, p. 19).
Ainda segundo Wazlawick (2013), o surgimento da engenharia 
de software se deuem plena Guerra Fria, em que um grupo de 
estudos da OTAN (Organização do Tratado para o Atlântico Norte), 
em 1967, definiu que as atividades de software deveriam utilizar 
as mesmas filosofias e disciplinas de engenharia, uma vez que a 
qualidade do software desenvolvido, até então, era péssima.
Existem diferenças entre as áreas de engenharia de software, 
engenharia da computação e ciência da computação. O engenheiro 
de software atua em projeto, desenvolvimento e implantação de 
software; o engenheiro da computação se volta ao desenvolvimento 
de hardware, como computadores e equipamentos eletrônicos. 
O cientista da computação, por sua vez, desenvolve os modelos 
matemáticos, os algoritmos e as demais ferramentas teóricas que 
serão utilizados pelo engenheiro de software, o qual é, portanto, o 
elo de ligação entre os demais profissionais de TI.
Atualmente, o mercado encontra-se promissor para o engenheiro 
de software. Conforme dados da ABES (Associação Brasileira de 
Empresas de Software), o Brasil está em 1º lugar na América Latina 
em investimentos na área de software, e em 9º lugar mundialmente. 
Segundo a mesma entidade, hoje esse setor representa 1,9% do PIB 
nacional, sendo um mercado de US$18,6 bilhões.
12 Engenharia de Software
Figura 1 – O engenheiro de software é requisitado por organizações 
de diferentes áreas de atuação.
O engenheiro de software vem sendo requisitado em empresas 
de todos os portes, seja para atividades de desenvolvimento ou 
para gerenciamento de projetos. Além disso, esse profissional 
tem sido muito procurado para trabalhar em startups, ou seja, 
empresas de base tecnológica que atuam em ambientes de mercado 
de extrema incerteza, sendo necessário que o engenheiro domine 
outras habilidades, como trabalhar em equipes multidisciplinares 
e saber resolver problemas com o máximo de eficiência.
Um engenheiro de software deve saber que uma organização tem 
restrições financeiras, procedimentos a serem respeitados e perfis 
profissionais distintos. Logo, precisa considerar adequadamente 
essas situações em seu trabalho, bem como em seus projetos.
Esse profissional é o responsável pela gestão consciente 
de recursos humanos, de materiais financeiros e tecnológicos 
necessários para o desenvolvimento do software e de processos 
de desenvolvimento, desde a coleta de requisitos até a entrega do 
software em sua versão final.
Pr
ee
ch
ar
 B
ow
on
ki
tw
an
ch
ai
/S
hu
tt
er
st
oc
k
Introdução à engenharia de software 13
A atividade do engenheiro de software está sendo regulamentada 
pela Resolução n. 1.100 do CONFEA (Conselho Federal de 
Engenharia e Agronomia), a qual defende que esse profissional 
integra o grupo dos engenheiros eletricistas, tendo direitos e deveres 
de um engenheiro conforme a legislação em vigor (CONFEA, 2018).
Assim, é muito importante entendermos as competências 
necessárias para se tornar um engenheiro de software e a atuação 
desse profissional em equipes multidisciplinares.
Vamos estudar, na próxima seção, como é a prática profissional 
de um engenheiro de software.
1.2 A prática da engenharia de 
software
O engenheiro de software é um profissional 
de inovação e um projetista. Sendo assim, seus 
projetos resultam em produtos que resolvem 
problemas da sociedade para os quais, até aquele 
momento, ainda não havia uma solução mais eficaz ou mesmo 
existente.
A inovação em engenharia de software pode acontecer de 
diferentes formas: a primeira, mais frequente, é denominada 
inovação incremental ou melhoria contínua, em que há 
incrementação ou desenvolvimento de algo novo com base em 
uma solução existente; e a segunda, denominada inovação radical, 
consiste na criação de algo totalmente novo, do “zero”.
As aplicações da engenharia de software na sociedade são muito 
variadas, assim como os métodos utilizados para se desenvolver 
um software.
Desde a criação dos computadores, a forma de se desenvolver 
programas tem evoluído de modo acelerado, cabendo ao profissional 
Vídeo
14 Engenharia de Software
de engenharia de software manter-se constantemente atualizado a 
respeito dessas técnicas.
Dentre as aplicações, pode-se citar o desenvolvimento de 
aplicativos (locais e acessados pela internet), sistemas operacionais, 
sistemas para simulação, jogos eletrônicos, sistemas de banco de 
dados e sistemas para automação (robôs industriais, por exemplo).
Figura 2 – O engenheiro de software é um profissional de inovação e 
projetos.
O engenheiro de software, como todo engenheiro, é especialista 
em resolver problemas e fazer as coisas acontecerem. Por meio da 
aplicação de métodos, processos e controles, uma simples ideia pode 
se transformar em um produto de software altamente lucrativo e que 
resolverá muitos problemas da sociedade.
Desse modo, é preciso, primeiramente, considerar que o 
desenvolvimento de software é um processo composto de várias 
atividades consecutivas, sendo que para cada atividade existem 
métodos e ferramentas específicos, conforme apresentados a seguir.
• Engenharia de requisitos
Conforme o nome sugere, consiste na definição, com a 
participação do cliente ou usuário, do que o software necessita ter 
em termos de funcionalidade, requisitos de segurança, aparência das 
PI
YA
W
AT
 W
O
N
G
O
PA
SS
/S
hu
tt
er
st
oc
k
Introdução à engenharia de software 15
telas, botões, menus, compatibilidade com sistemas operacionais 
específicos, dentre outros.
Além disso, a engenharia de requisitos trata das restrições, 
ou seja, dos elementos de limitação que podem ser inseridos em 
um software para evitar operações indesejadas. Um software para 
automação industrial, por exemplo, deve prever a existência de um 
botão que, no caso de emergências e risco de acidentes, possa ser 
acionado fazendo com que todo o sistema pare.
Portanto, definir requisitos é essencial para que o software, uma 
vez desenvolvido, atenda às necessidades do usuário.
• Planejamento
Esta é a fase criativa do desenvolvimento de software. Envolve 
definir a sua arquitetura; criar esboços das telas; definir os 
diagramas básicos (diagramas de classes e atividades, por exemplo) 
e as linguagens de programação a serem utilizadas para cada 
funcionalidade do software.
Além disso, nessa fase pesquisa-se por soluções já existentes em 
software e que atendam, mesmo que de modo similar, os requisitos 
definidos no primeiro passo. Essas soluções podem ser aproveitadas 
no processo de construção do software (próxima etapa) para que a 
equipe de trabalho não gaste tempo desenvolvendo funcionalidades 
e arquiteturas que já existem e encontram-se disponíveis.
• Desenvolvimento ou codificação do software
Após ser planejado e esboçado, desenvolve-se o código-fonte do 
software e de suas partes.
Durante o processo de desenvolvimento, podem surgir incidentes 
ou problemas, forçando o projeto a ser modificado, ou erros podem 
passar despercebidos e somente aparecer quando o software estiver 
concluído.
16 Engenharia de Software
Recomenda-se, nessa fase, o uso de técnicas de desenvolvimento 
e a realização de testes em tempo real, pois, uma vez que o software 
estiver desenvolvido, modificações podem custar caro. 
• Fase de testes
Após desenvolvido e codificado, o software deve ser testado – 
atividade que deve ser repetida sempre que necessária. Isso se deve 
porque erros – mais conhecidos como bugs – podem custar caro, 
principalmente se o software já estiver em fase de lançamento.
A realização dos testes não precisa, necessariamente, ser feita 
pelo profissional responsável pelo desenvolvimento do software. 
Aliás, é recomendado que não seja, pois, profissionais externos têm 
uma visão diferente do software e tendem a encontrar erros não 
percebidos pelos programadores. Inclusive, existem profissionais de 
desenvolvimento de sistemas capacitados, especificamente, para a 
realização dessa tarefa.
• Manutenção e melhorias
Após o software ser desenvolvido e lançado, é necessária a 
realização de manutenção e melhoriascontínuas.
As necessidades do consumidor e as tecnologias encontram-se 
em constante mutação, sendo necessária a manutenção do software, 
que é realizada por meio de técnicas, como a do versionamento, 
em que diferentes versões são desenvolvidas com aprimoramentos, 
correções de falhas e novas funcionalidades.
Em muitos casos, o processo de desenvolvimento de um software 
não tem fim, pois sempre há alguma funcionalidade a incluir. Por 
esse motivo, softwares de versionamento têm sido cada vez mais 
utilizados por desenvolvedores para abrigar suas criações em 
contínuo estágio de desenvolvimento.
Além dos cinco métodos descritos, é importante ressaltar que, 
como em toda profissão, a prática de engenharia de software deve 
Introdução à engenharia de software 17
se ater a princípios éticos, de modo que os resultados do trabalho 
do profissional não prejudiquem a si e a organização ou o cliente.
Dessa forma, Sommerville (2011) cita como princípios éticos na 
engenharia de software: respeitar a confidencialidade das 
informações do cliente; não aceitar trabalhos fora de sua competência 
profissional; respeitar direitos de propriedade intelectual e realizar 
bom uso de computadores (não jogar em horário de trabalho ou 
espalhar vírus e malwares, por exemplo).
1.3 O engenheiro de software 
e outros profissionais
Em uma organização, o engenheiro de 
software pode assumir várias funções, atuando 
no desenvolvimento de software, na gestão de 
equipes ou mesmo como consultor.
Desse modo, sendo um profissional que produz inovação, 
o engenheiro de software deve estar preparado para conviver e 
trabalhar com pessoas de diferentes áreas do conhecimento, como 
outros engenheiros, administradores, designers, outros profissionais 
da área de TI, profissionais da área jurídica, matemáticos e 
profissionais de ciências humanas.
A esses grupos formados por profissionais de diferentes áreas do 
conhecimento (equipes multidisciplinares), o papel do engenheiro 
de software é abrangente, podendo variar desde a definição dos 
requisitos do projeto e a programação (ou codificação) do software, 
até a gestão do projeto como um todo.
Figura 3 – O engenheiro de software é um profissional que trabalha 
com equipes de diferentes áreas do conhecimento.
Vídeo
18 Engenharia de Software
So
ng
_a
bo
ut
_s
um
m
er
/S
hu
tt
er
st
oc
k
Durante o processo de desenvolvimento de software, é 
necessária a definição de papéis e responsabilidades, de modo que 
cada profissional saiba exatamente o que fará. Sommerville (2011) 
cita como exemplos as funções de gerente de projeto, gerente de 
configuração e programador.
Sendo tão relevante para o sucesso das organizações, o engenheiro 
de software deve apresentar uma série de competências relacionadas 
tanto à sua formação pessoal quanto ao seu desempenho profissional. 
Essas competências, conforme afirmam Pressman e Maxim (2016), 
são o senso de responsabilidade individual, a consciência aguçada 
das necessidades de sua equipe de trabalho, a honestidade, a 
capacidade de se mostrar resiliente sob pressão, o senso de lealdade, 
a atenção aos detalhes e o pragmatismo.
Constantine (1993 apud PRESSMAN; MAXIM, 2016) 
enumera paradigmas, ou padrões, para a formação de equipes de 
desenvolvimento. Esses paradigmas consideram questões como a 
formalidade de hierarquias, a colaboração entre os membros da 
equipe e a capacidade de solucionar problemas.
No paradigma fechado, a principal característica é a existência 
de uma hierarquia formal entre gestores e colaboradores, em que 
se predomina a ordem. Porém, essa estrutura pode não ser ideal 
quando se necessita desenvolver a criatividade e a inovação nas 
Introdução à engenharia de software 19
equipes de trabalho, uma vez que a comunicação entre os membros, 
nesse paradigma, tende a ser mais restrita.
No paradigma randômico, o que predomina é a iniciativa 
individual dos membros da equipe. Opostamente ao paradigma 
fechado, esse é mais adequado para o desenvolvimento de 
inovações. Porém, por depender de decisões individuais, podem 
surgir conflitos, caso seja preciso agir de modo mais ordenado, uma 
vez que nesse paradigma a possibilidade de surgirem divergências 
de opiniões é maior.
No paradigma sincronizado, o problema é segmentado de modo 
que os membros da equipe organizem-se para que cada um trabalhe 
em uma parte. Porém, a comunicação entre os membros, nesse caso, 
é prejudicada, uma vez que cada equipe, desenvolvendo apenas uma 
parte do software, terá conhecimento somente da parte que desenvolve, 
tendo pouco ou nenhum conhecimento das demais partes.
No paradigma aberto, por sua vez, predominam-se a 
colaboração, a comunicação e o consenso nas decisões. Para projetos 
inovadores e mais complexos, equipes estruturadas nesse paradigma 
tendem a se destacar. Como exemplo, têm-se as equipes estruturadas 
em rede, em que os profissionais colaboram mutuamente.
Independentemente do paradigma escolhido, é importante que 
o engenheiro de software saiba organizar a equipe de trabalho de 
modo que as potencialidades de cada membro sejam aproveitadas 
ao máximo para o desempenho das atividades do projeto. Para isso, 
é necessário que o gestor de projetos conheça as necessidades e saiba 
reconhecer os esforços de sua equipe de trabalho.
Sommerville (2011) enumera quatro fatores essenciais no 
gerenciamento de equipes: consistência, inclusão, honestidade e respeito.
A consistência diz respeito à valorização por igual de cada 
membro da equipe, considerando que as pessoas não devem sentir 
que seu trabalho é desvalorizado ou subvalorizado.
20 Engenharia de Software
A inclusão é derivada da consistência. Uma vez que o trabalho 
de um profissional deve ser valorizado, as propostas apresentadas 
por este devem ser levadas em consideração, independentemente do 
cargo ou do tempo de trabalho na organização.
A honestidade deve permear toda a equipe. O engenheiro de 
software deve estar consciente do seu nível técnico e ser honesto 
com os demais membros da equipe, não supervalorizando ou 
subvalorizando as suas habilidades.
O respeito é essencial em uma equipe multidisciplinar, na qual 
cada profissional deve ter consciência das diferenças do outro na 
maneira de pensar e de trabalhar, sem atribuir conclusões precipitadas 
em relação à competência deste em realizar as atividades do projeto. 
Isso é importante para que as competências de cada membro da 
equipe sejam adequadamente aproveitadas, sem que preconceitos 
prejudiquem o desempenho do projeto como um todo.
Desse modo, saber trabalhar em equipe é uma competência 
essencial para o engenheiro de software, uma vez que, sendo um 
gestor, necessita obter o melhor aproveitamento de profissionais e 
demais recursos necessários para o desenvolvimento de um software.
Considerações finais
Conforme estudamos, as atribuições do engenheiro de software 
são bastante diversas, assim como a forma como ele desempenha o 
trabalho e organiza as equipes.
Além disso, compreendemos a importância do mercado de 
software no Brasil e como este se encontra em crescimento, podendo 
observar que a atuação do engenheiro de software não se resume a 
atividades de programação, visto que, além de desenvolvedor, ele é 
gestor de projetos.
Introdução à engenharia de software 21
Por fim, pudemos entender, também, que o engenheiro de 
software é um profissional que sabe transformar necessidades e 
requisitos em soluções lucrativas e operacionalmente eficazes.
Ampliando seus conhecimentos
• O QUE UM ENGENHEIRO de software faz? 2018. 
1 vídeo (8min26s). Publicado pelo canal Código 
Fonte TV. Disponível em: https://www.youtube.com/
watch?v=wdU9L3DqU2w. Acesso em: 9 out. 2019.
Este vídeo explica, com uma linguagem clara e descontraída, 
as principais atividades de um engenheiro de software, além 
de apresentar de modo resumido o que são atividades de 
projeto, requisitos, processos, construção, testes, qualidade, 
depuração, entrega e manutenção.
• CONFEA – Conselho Federal de Engenhariae Agronomia. 
Resolução n. 1.100, de 24 de maio de 2018. Diário Oficial 
da União, Brasília, DF, 8 jun. 2018. Disponível em: http://
www.in.gov.br/materia/-/asset_publisher/Kujrw0TZC2Mb/
content/id/21012726/do1-2018-06-08-resolucao-n-1-100-
de-24-de-maio-de-2018-21012669. Acesso em: 9 out. 2019.
Esta resolução do Conselho Federal de Engenharia e 
Agronomia (CONFEA) regulamenta a atividade de engenharia 
de software. Conforme mencionado nesse capítulo, por meio 
dessa resolução, o profissional de engenharia de software 
integra o grupo dos engenheiros eletricistas, sendo, como todo 
engenheiro, um especialista em projetos.
https://www.youtube.com/watch?v=wdU9L3DqU2w
https://www.youtube.com/watch?v=wdU9L3DqU2w
22 Engenharia de Software
Atividades
1. Agora que você sabe o que faz um engenheiro de software, é 
hora de identificar como está o mercado de trabalho na área. 
Pesquise, em sites de emprego, a disponibilidade de vagas de 
trabalho para engenheiro de software. Escolha três vagas do 
seu interesse e descreva por que você ser interessou por elas.
2. Cite e descreva os quatro fatores essenciais para o 
gerenciamento de equipes de trabalho em engenharia de 
software.
3. Um dos processos essenciais na engenharia de software 
é a engenharia de requisitos. Qual é a importância desse 
processo?
Referências
CONFEA – Conselho Federal de Engenharia e Agronomia. Resolução 
n. 1.100, de 24 de maio de 2018. Diário Oficial da União, Brasília, DF, 8 
jun. 2018. Disponível em: http://www.in.gov.br/materia/-/asset_publisher/
Kujrw0TZC2Mb/content/id/21012726/do1-2018-06-08-resolucao-n-1-
100-de-24-de-maio-de-2018-21012669. Acesso em: 9 out. 2019.
PRESSMAN, R. S.; MAXIM, B. R. Engenharia de software: uma abordagem 
profissional. Porto Alegre: AMGH, 2015.
SCHACH, S. Engenharia de software: os paradigmas clássico e orientado a 
objetos. Porto Alegre: AMGH, 2010.
SOMMERVILLE, I. Engenharia de software. São Paulo: Pearson Prentice 
Hall, 2011.
WAZLAWICK, R. S. Engenharia de software: conceitos e práticas. Rio de 
Janeiro: Elsevier, 2013.
2
Planejamento e processo de software
Agora que sabemos o que faz um engenheiro de software, os 
princípios que orientam a prática desse profissional e a relação 
dele com a equipe de trabalho, vamos conhecer, neste capítulo, o 
processo básico do desenvolvimento de software.
Além disso, vamos aprender os principais modelos utilizados para 
o desenvolvimento de sistemas, desde os tradicionais, já consagrados 
pela indústria de software, até os ágeis, cada vez mais utilizados.
Com relação aos tradicionais, vamos estudar os modelos em 
cascata, em espiral, em V, cíclico e RUP (Rational Unified Process). 
Já com relação aos ágeis, vamos conhecer os modelos XP (Extreme 
Programming), Scrum e AUP (Agile Unified Process).
Esses estudos são fundamentais, pois tratam de modelos que 
acompanharão a sua carreira como engenheiro de software.
2.1 Estrutura básica do 
desenvolvimento de software
Para começar a compreender o processo 
básico de desenvolvimento de software, imagine, 
por exemplo, que você vai construir uma casa. 
Antes de iniciar a construção, seja contratando 
um profissional de arquitetura e engenharia – que é o recomendado 
– ou construindo a sua casa por conta própria, você vai precisar de 
um projeto e de profissionais que o executem, os quais nortearão o 
seu trabalho.
Vídeo
24 Engenharia de Software
O mesmo ocorre com o desenvolvimento de um software, pois 
esse necessita de modelos para norteá-lo e garantir que, ao fim de 
todo o processo, ele seja funcional e confiável.
Todo modelo, seja tradicional ou ágil, segue uma metodologia 
genérica composta de cinco etapas: comunicação, planejamento, 
modelagem, construção e entrega (PRESSMAN; MAXIM, 2016).
Na primeira etapa, de comunicação, é realizado o contato com as 
partes interessadas para tratar de procedimentos do início do projeto 
(contratos, termos de abertura, dentre outros) e levantamento dos 
requisitos funcionais (relacionados à funcionalidade do sistema) e não 
funcionais (relacionados à segurança e às configurações do sistema).
Já na segunda etapa, de planejamento é definido o cronograma de 
atividades dos profissionais envolvidos, as estimativas de utilização 
de recursos (humanos, materiais, financeiros e tecnológicos) e 
como será realizado o acompanhamento do projeto (a definição de 
métricas de desempenho, por exemplo). A realização dessa etapa de 
modo efetivo depende da prévia definição dos requisitos da etapa 
anterior; ou seja, quanto mais detalhado for o levantamento dos 
requisitos, melhor será o planejamento.
Na terceira etapa, de modelagem, também conhecida como 
implementação e teste unitário, são realizadas as atividades de 
desenvolvimento do software propriamente dito. É nessa fase que 
o projeto do software começa a ganhar forma, com os primeiros 
diagramas e fluxogramas (diagramas UML, por exemplo).
Na construção, a quarta etapa, os requisitos são traduzidos 
em linhas de código, as quais formam os programas componentes 
do conjunto de software. Cada programa desenvolvido é testado 
unitariamente para a verificação de possíveis problemas ou “bugs”; 
desse modo, se encontrados, devem ser prontamente corrigidos, 
garantindo que, ao fim de todo o processo, o software esteja seguro 
e plenamente funcional. Essas unidades de programa desenvolvidas 
Planejamento e processo de software 25
são integradas no formato de um sistema completo, o qual também 
deve ser testado.
Por fim, na quinta etapa, acontece a entrega do sistema 
desenvolvido ao cliente, que também deverá testá-lo e verificar 
se atendeu aos seus requisitos. Nessa fase há também a realização 
de atividades de suporte técnico; assim, conforme necessário, ao 
instalar o sistema e colocá-lo em operação, manutenções corretivas 
e melhorias devem ser efetuadas.
Essas cinco etapas dizem respeito à estrutura básica de 
desenvolvimento de um software; ela é aplicada, de modo direto ou 
com adaptações, nos modelos tradicionais e ágeis.
Como você pode perceber, desenvolver um software não é uma 
tarefa simples, uma vez que requer interação com o usuário, 
planejamento e muitas etapas de testes. No entanto, os modelos 
descritos a seguir possibilitam muitas formas de aplicar as cinco 
etapas anteriormente descritas.
2.2 Modelos tradicionais 
de desenvolvimento
Apesar da existência dos modelos ágeis, 
conforme vamos estudar na próxima seção, os 
modelos tradicionais de desenvolvimento ainda 
são utilizados em projetos em que a existência de 
documentação e maior estruturação do software sejam relevantes.
Os principais modelos tradicionais fazem uso da estrutura básica 
de desenvolvimento, descrita na seção anterior (comunicação, 
planejamento, modelagem, construção e entrega), sendo que se 
diferenciam dos modelos ágeis pela forma e sequenciamento de 
aplicação de cada etapa da estrutura, uma vez que, nos modelos 
tradicionais, podem ser em cascata, em espiral, em V ou em formato 
cíclico, além do modelo RUP (Rational Unified Process).
Vídeo
26 Engenharia de Software
• Modelo em cascata
É o modelo mais antigo de desenvolvimento em engenharia de 
software e, de acordo com Sommerville (2011, p. 20), é “um processo 
dirigido a planos – em princípio, você deve planejar e programar 
todas as atividades do processo antes de começar a trabalhar nelas” 
(SOMMERVILLE, 2011, p. 20).
Nesse modelo, a estrutura básica de desenvolvimento é aplicada 
de modo sequencial, ou seja, com uma atividade precedendo a 
outra. Além disso, para passar de uma atividade a outra, é necessária 
a aprovação do responsável pelo desenvolvimento, geralmente por 
meio de um documento assinado. Dessa forma, nenhuma atividade 
pode ser iniciada até que a anterior esteja concluída, e o software é 
colocado em uso somente na etapa final (entrega).
A Figura 1, a seguir, representa o modelo em cascata. Observe 
que nesse modelo o processo flui de modo constante, como em uma 
cascata, e as cinco etapas são aplicadas sequencialmente.
Figura1 – Modelo em cascata
Comunicação 
Planejamento
Modelagem
Construção
Entrega
Fonte: Elaborada pelo autor com base em Pressman e Maxim, 2016.
Planejamento e processo de software 27
O modelo em cascata é adequado para ambientes de 
desenvolvimento estável, com pouca ou nenhuma alteração de 
requisitos, pois se trata de um modelo inflexível.
• Modelo em espiral
Esse modelo possibilita a repetição das etapas de desenvolvimento 
de modo cíclico. Nesse caso, as etapas de comunicação, planejamento, 
modelagem, construção e entrega se repetem com sucessivas versões 
cada vez mais sofisticadas do sistema. Desse modo, à medida que 
se efetua cada entrega, uma nova fase de comunicação se inicia por 
meio da revisão dos requisitos, sucedendo para uma nova sessão de 
planejamento, modelagem etc.
Observe na Figura 2, a seguir, que no modelo em espiral as 
fases acontecem em ciclos repetitivos. A linha em espiral simboliza 
o processo de desenvolvimento passando pelas cinco etapas, de 
modo repetitivo, e, ao fim de cada ciclo de cinco etapas, uma versão 
aprimorada do software é entregue ao usuário.
Figura 2 – Modelo em espiral
Modelagem
Planejamento
Comunicação
Entrega
Construção
Fonte: Elaborada pelo autor com base em Pressman e Maxim, 2016.
Esse modelo, em espiral, é adequado para o desenvolvimento 
de software em larga escala e para ambientes com mais incerteza 
em relação aos requisitos, uma vez que permite a revisão desses 
sempre que uma nova entrega é efetuada. Além disso, é adequado 
28 Engenharia de Software
para software de desenvolvimento contínuo, no qual novas versões 
podem ser lançadas a cada entrega.
Segundo Wazlawick (2013), o modelo em espiral é útil 
tambémpara projetos com fases bem definidas e com requisitos 
bem conhecidos e estáveis, além de ser recomendado para equipes 
inexperientes, pois fornece um modelo a ser seguido, o que evita 
esforços inúteis.
• Modelo em V
Esse modelo é uma variação dos modelos em cascata e espiral, 
e “descreve a relação entre ações de garantia da qualidade e ações 
associadas a comunicação, modelagem e atividades de construção 
iniciais” (PRESSMAN; MAXIM, 2016, p. 42).
Em outras palavras, esse modelo divide o processo de 
desenvolvimento em duas macroetapas mutuamente relacionadas: 
uma de projeto e codificação, e outra de testes, visando à garantia da 
qualidade do software.
Observe a seguir, na Figura 3, que na primeira macroetapa, à 
esquerda, é realizada primeiramente a modelagem de requisitos do 
sistema; depois efetua-se o projeto de arquitetura do sistema como 
um todo e, ainda, dos seus componentes, partindo para o fim da 
etapa, em que se gera o código do programa conforme a arquitetura 
planejada.
Na segunda macroetapa, representada na Figura 3, à direita, 
realizam-se os testes para validar as atividades realizadas na 
macroetapa anterior. Dessa forma, há primeiramente os testes 
dos códigos desenvolvidos; em seguida, acontecem os testes de 
integração da arquitetura do sistema e de seus componentes, 
partindo para o teste do sistema como um todo e, finalmente, para o 
teste de aceitação por parte do cliente, tendo como base os requisitos 
definidos para o programa.
Planejamento e processo de software 29
Figura 3 – Modelo em V
Implantação
Modelagem de 
requisitos
Projeto de 
arquitetura
Projeto de 
componente
Geração de código
Teste de aceitação
Teste de sistema
Teste de integração
Teste de unidade
Verifica
Verifica
Verifica
Verifica
Fonte: Elaborada pelo autor com base em Pressman e Maxim, 2016.
O modelo em V é indicado quando a realização de múltiplos 
testes seja necessária, pois possibilita melhor detecção de erros em 
cada etapa de realização.
• Modelo cíclico
Esse modelo tem formato cíclico, como o de espiral, porém 
enfatiza a rápida execução das etapas de planejamento e modelagem, 
adicionando uma etapa de construção de protótipos.
Observe na Figura 4, a seguir, que, assim como os demais 
modelos, o de prototipação inicia-se com a etapa de comunicação, 
a qual é uma das mais importantes. Nessa fase, uma reunião é feita 
com as partes interessadas no projeto (clientes, desenvolvedores, 
dentre outras) para definir os objetivos e os requisitos necessários 
para o desenvolvimento do software. Em seguida, as etapas de 
planejamento e modelagem são executadas no formato de um 
projeto rápido, em que se constrói um protótipo do software. Depois 
de entregue o software e recebido o feedback, o protótipo é discutido 
30 Engenharia de Software
em uma nova etapa de comunicação, na qual os requisitos do projeto 
são refinados, e assim sucessivamente.
Figura 4 – Modelo cíclico
Construção de 
protótipos
Modelagem rápida
Planejamento rápido
Comunicação
Entrega
(feedback)
Fonte: Elaborada pelo autor com base em Pressman e Maxim, 2016.
De acordo com Sommerville (2011, p. 30), o desenvolvimento 
de protótipos proporciona vantagens tanto aos clientes quanto aos 
desenvolvedores. Na definição de requisitos, um protótipo “pode 
ajudar na elicitação e validação de requisitos de sistema”, ao passo 
que, no projeto de sistema, um protótipo “pode ser usado para 
estudar soluções específicas do software e para apoiar o projeto de 
interface do usuário”.
• Modelo RUP
O modelo RUP (Rational Unified Process), também conhecido 
como Processo Unificado (PU), “reúne elementos de todos os 
modelos de processo genéricos, ilustra boas práticas de especificação 
e no projeto e apoia a prototipação e a entrega incremental” 
(SOMMERVILLE, 2011, p. 34).
O RUP foi desenvolvido como “uma tentativa de aproveitar 
os melhores recursos e características dos modelos tradicionais 
Planejamento e processo de software 31
de processo de software, mas caracterizando-os de modo a 
implementar muitos dos melhores princípios do desenvolvimento 
ágil de software” (PRESSMAN; MAXIM, 2016, p. 56).
A organização do RUP acontece em quatro fases, as quais – 
opostamente aos modelos anteriormente descritos, orientados a 
aspectos técnicos – são relacionadas a aspectos de negócio do cliente.
Na fase de concepção, realizam-se a comunicação e o 
planejamento com o cliente, tendo como objetivo estabelecer um 
estudo de caso para o negócio a ser desenvolvido. Nessa etapa, 
identificam-se as pessoas e os sistemas que irão interagir com o 
software que será desenvolvido e avalia-se a contribuição do sistema 
para o negócio. Portanto, caso o sistema não contribua, o projeto já 
é cancelado nessa fase.
Na segunda fase, a de elaboração, realiza-se a modelagem de 
uma arquitetura do sistema. Nessa etapa, busca-se a compreensão 
dos problemas do negócio, desenvolve-se o plano do projeto e 
identificam-se os riscos e as oportunidades. Dentre os modelos 
que podem ser desenvolvidos nessa fase encontram-se: o de caso 
de uso, o de análise, o de projeto, o de implementação e o de 
disponibilização (PRESSMAN; MAXIM, 2016).
Na fase de construção, efetuam-se a construção ou codificação 
do sistema e os testes de unidades para cada componente desse 
sistema. Implementam-se, nessa etapa, todos os recursos e 
funcionalidades, e integram-se todos os componentes e partes 
do sistema codificado. Ao fim dessa fase, um sistema deverá estar 
concluído e ser funcional.
Por último, na fase de transição, efetua-se a entrega do sistema ao 
cliente e coloca-se esse sistema para funcionar em um ambiente real. 
Nessa etapa é essencial realizar o monitoramento contínuo do sistema, 
tendo em vista que pode haver a necessidade de aperfeiçoamento 
contínuo, realizando-se o suporte técnico necessário.
32 Engenharia de Software
Na Figura 5, observe que, no processo unificado, as quatro fases 
são sequenciais, mas as fases de elaboração e construção podem ser 
realizadas de maneira concomitante, ou seja, ao mesmo tempo em 
que se elabora o sistema, também se faz a construção desse.
Figura 5 – Modelo RUP
Entrega
Comunicação 
Planejamento 
Elaboração 
Transição 
Concepção 
Construção 
Modelagem 
Construção 
Fonte: Elaborado pelo autor com baseem Pressman e Maxim, 2016.
Esse modelo é recomendado para projetos em que a estabilidade 
dos processos de desenvolvimento seja importante, já que o modelo 
sendo estruturado, ao ser aplicado, tende a reduzir os riscos de 
desenvolvimento de software.
Embora esses modelos tradicionais de desenvolvimento sejam 
amplamente utilizados, vale ressaltar que, na sociedade atual, os 
problemas acontecem de modo rápido, o que demanda soluções de 
desenvolvimento ainda mais velozes. Dessa forma, os modelos ágeis 
de desenvolvimento, alguns apresentados a seguir, têm ganhado 
cada vez mais espaço entre os desenvolvedores.
Vídeo
Planejamento e processo de software 33
2.3 Modelos ágeis de 
desenvolvimento
Vamos estudar agora os modelos ágeis de 
desenvolvimento de software, bastante necessários 
em um mundo de intensas mudanças.
Quando os prazos para o desenvolvimento de sistemas são 
cada vez menores, os requisitos mudam a todo tempo e os riscos, 
consequentemente, aumentam. Diante disso, faz-se necessário o uso 
de metodologias mais ágeis e informais, abordadas a seguir.
Os modelos ágeis têm origem em princípios estabelecidos pelo 
Manifesto para o Desenvolvimento Ágil de Software, desenvolvido 
por Kent Beck – criador do modelo XP (Extreme Programming) – e 
mais 16 desenvolvedores.
De acordo com esse manifesto, no processo de desenvolvimento 
de software é importante valorizar os seguintes aspectos: as 
interações entre os indivíduos acima de processos e sistemas; 
o software operacional acima da documentação completa; a 
colaboração com os clientes acima de negociação contratual; e as 
respostas às mudanças acima de seguir um plano.
Conforme afirma Sommerville (2011, p. 39), os modelos 
ágeis “são modelos de desenvolvimento incremental em que os 
incrementos são pequenos e, normalmente, as novas versões do 
sistema são criadas e disponibilizadas aos clientes a cada duas ou três 
semanas”. Dessa forma, são modelos de desenvolvimento de caráter 
cíclico, no qual as etapas de comunicação, planejamento, entre 
outras, se repetem em ciclos curtos e com a intensa participação dos 
clientes no processo de desenvolvimento.
Assim, justamente por se tratar de ciclos curtos de 
desenvolvimento, não é prioritário haver uma documentação 
completa ou mesmo um plano complexo para se seguir. Além 
disso, os contratos normalmente são por tempo de desenvolvimento, 
Na Figura 5, observe que, no processo unificado, as quatro fases 
são sequenciais, mas as fases de elaboração e construção podem ser 
realizadas de maneira concomitante, ou seja, ao mesmo tempo em 
que se elabora o sistema, também se faz a construção desse.
Figura 5 – Modelo RUP
Entrega
Comunicação 
Planejamento 
Elaboração 
Transição 
Concepção 
Construção 
Modelagem 
Construção 
Fonte: Elaborado pelo autor com base em Pressman e Maxim, 2016.
Esse modelo é recomendado para projetos em que a estabilidade 
dos processos de desenvolvimento seja importante, já que o modelo 
sendo estruturado, ao ser aplicado, tende a reduzir os riscos de 
desenvolvimento de software.
Embora esses modelos tradicionais de desenvolvimento sejam 
amplamente utilizados, vale ressaltar que, na sociedade atual, os 
problemas acontecem de modo rápido, o que demanda soluções de 
desenvolvimento ainda mais velozes. Dessa forma, os modelos ágeis 
de desenvolvimento, alguns apresentados a seguir, têm ganhado 
cada vez mais espaço entre os desenvolvedores.
Vídeo
34 Engenharia de Software
e não pela entrega de um software completo ou pelo cumprimento 
de requisitos.
Os principais modelos ágeis abordados neste Capítulo são o XP 
(Extreme Programming), o scrum e o AUP (Agile Unified Process).
• Modelo XP
É um modelo ágil que considera o desenvolvimento de software 
sob uma perspectiva diferente dos demais modelos. Para essa 
metodologia, a definição de requisitos é feita considerando cenários 
ou histórias de clientes; os programadores trabalham sempre em pares 
e o código é escrito em definitivo apenas após a realização de testes.
O projeto na XP segue o princípio KISS (Keep It Simple 
Stupid); sendo assim, é melhor um projeto simples com múltiplos 
incrementos posteriores do que projetos mais complexos logo de 
início. Desse modo, quando concluído, cada projeto é integrado ao 
sistema e todos os testes, após essa integração, devem apresentar 
sucesso.
• Modelo scrum
Esse modelo tem caráter cíclico, cujo nome diz respeito a uma 
jogada no esporte rugby, na qual os atletas se encontram corpo a 
corpo. Nesse modelo, as atividades de desenvolvimento ocorrem em 
um ciclo denominado sprint.
O ciclo de trabalho no scrum consiste na realização de tarefas 
de desenvolvimento, definidas em uma lista de prioridades de 
requisitos, chamada de backlog. Dessa forma, é realizada uma reunião 
inicial, denominada sprint planning meeting, em que são feitas as 
definições de planejamento das atividades que serão desenvolvidas. 
Em seguida, iniciam-se os ciclos de desenvolvimento, denominados 
sprints, nos quais cada desenvolvedor desempenha a tarefa que lhe 
foi designada.
Planejamento e processo de software 35
No modelo scrum, a cada ciclo de 24 horas, são realizadas 
reuniões de 15 minutos, nas quais a equipe de desenvolvimento, 
sob a liderança do scrum master, responde às seguintes questões 
(PRESSMAN; MAXIM, 2016): o que você realizou desde a última 
sprint? Você está tendo alguma dificuldade? O que você vai fazer 
antes da próxima reunião?
Após a realização das sprints, a equipe apresenta as 
funcionalidades do software implantadas e, então, um novo ciclo de 
desenvolvimento se inicia.
• Modelo AUP
Trata-se de uma variante do Processo Unificado voltada para 
o desenvolvimento ágil. Esse processo adota as atividades clássicas 
do RUP – concepção, elaboração, construção e transição –, porém 
com ciclos repetitivos para tornar o modelo mais ágil. Cada iteração 
adota as seguintes atividades:
1. Modelagem: elaboração de modelos, preferencialmente com 
o uso da UML (Unified Modeling Language).
2. Implementação: transformação dos modelos em código.
3. Testes: realização de testes para a descoberta de erros e 
oportunidades de melhoria no código.
4. Entrega: entrega de um incremento do código e feedback dos 
usuários.
5. Configuração e gerenciamento do projeto: gerenciamento de 
configurações, alterações, riscos e controle.
6. Gerenciamento do ambiente: gerenciamento de processos, 
padrões, ferramentas e tecnologias de suporte.
Embora sejam diferentes, todos os métodos ágeis apresentados 
são importantes. Cabe à equipe de desenvolvimento, conforme as 
necessidades de cada projeto e as preferências pessoais, escolher o 
mais adequado para utilizar em cada caso.
36 Engenharia de Software
Considerações finais
Neste capítulo, estudamos os principais modelos utilizados para 
o desenvolvimento de um software.
Primeiramente, conhecemos a estrutura básica do 
desenvolvimento de software, abordando as etapas de comunicação, 
planejamento, modelagem, construção e entrega.
Em seguida, identificamos os principais modelos tradicionais 
– em cascata, em espiral, em V, cíclico e RUP – e, com relação 
aos modelos ágeis, estudamos os princípios do Manifesto Ágil de 
Desenvolvimento de Software, além dos modelos XP, scrum e AUP.
Estudar os modelos de desenvolvimento de software é muito 
importante para que possamos escolher o mais adequado para 
determinado projeto e fazer o máximo aproveitamento dos recursos 
disponíveis.
Vale ressaltar que não há modelo mais correto ou melhor. A 
escolha do modelo mais adequado dependerá do tipo de sistema 
que deveremos construir, do perfil da nossa equipe de projeto e dos 
requisitos do nosso cliente.
Ampliando seus conhecimentos
• BECK, K. Programação extrema explicada: acolha as 
mudanças. Porto Alegre: Bookman, 2004.
Neste livro, o criador do Extreme Programming apresenta 
esse modelo com uma linguagem simples e clara. A obra é 
recomendada para quem deseja um estudo mais aprofundado 
do modelo XP, estudado neste capítulo.• SCOTT, K. O processo unificado explicado. Porto Alegre: 
Editora Bookman, 2002.
Planejamento e processo de software 37
Neste livro, explica-se o RUP (Rational Unified Process), o 
qual, conforme estudamos neste capítulo, é um dos modelos 
tradicionais mais usados para o desenvolvimento de sistemas.
• RUBIN, K. S. Scrum essencial: um guia prático para o mais 
popular processo ágil. Rio de Janeiro: Alta Books, 2017.
Nesse livro, explica-se de maneira didática o modelo ágil 
scrum, abordado neste capítulo, com ilustrações e descrições 
de fácil compreensão.
Atividades
1. No modelo ágil scrum são desempenhadas as funções de 
scrum master, product owner e development team. Pesquise 
e disserte sobre a importância de cada uma delas.
2. Uma variante do modelo XP é o Industrial XP, que 
adota práticas diferenciadas para projetos em grandes 
organizações. Pesquise e descreva as características desse 
modelo alternativo
3. Neste capítulo, tratamos brevemente do Manifesto de 
Desenvolvimento Ágil de Software. Uma variante desse 
manifesto são os 12 princípios do software ágil. Pesquise e 
descreva esses princípios.
Referências
PRESSMAN, R. S.; MAXIM, B. R. Engenharia de software: uma abordagem 
profissional. 8. ed. Porto Alegre: AMGH, 2016.
SOMMERVILLE, I. Engenharia de software. 9. ed. São Paulo: Pearson 
Prentice Hall, 2011.
WAZLAWICK, R. S. Engenharia de software: conceitos e práticas. Rio de 
Janeiro: Elsevier, 2013.
3
Engenharia de requisitos
Neste capítulo, vamos tratar da definição de requisitos, uma 
das mais importantes atividades da engenharia de software. 
Dessa forma, é importante, primeiramente, compreendermos que 
dependendo da situação, o mesmo software pode ser tanto um 
serviço quanto um produto.
Sendo um serviço, é importante definirmos os requisitos 
considerando que todo software é criado de pessoas para pessoas 
e que cada usuário tem necessidades específicas. Um software é 
intangível, ou seja, não pode ser tocado, o que significa que o valor 
desse serviço é baseado na percepção de quem vai utilizá-lo. Diante 
disso, é essencial que o engenheiro ouça o que o cliente tem a dizer 
para que o software seja desenvolvido de modo que atenda às suas 
necessidades.
Já como produto a ser comercializado, devemos considerar que 
um software requer o uso de recursos para o seu desenvolvimento, 
os quais muitas vezes são escassos ou caros, como pessoas, materiais 
e tecnologias. Sendo assim, definir previamente requisitos de 
desenvolvimento é mais do que uma atividade obrigatória de um 
engenheiro de software, é uma responsabilidade.
Assim, neste capítulo, vamos tratar dos requisitos sob os pontos 
de vista do usuário e do sistema. Primeiramente, vamos apresentar 
métodos úteis para a coleta de requisitos, depois estudaremos quais 
requisitos podem ser coletados por meio desses métodos e, por fim, 
observaremos as formas de organizar e apresentar os requisitos para 
o cliente e para a equipe de desenvolvimento.
40 Engenharia de Software
3.1 Métodos para a coleta de 
requisitos
Imagine que você vai comprar um presente 
para uma pessoa que não é muito próxima de 
você – no amigo secreto da empresa onde você 
trabalha, por exemplo. Para não errar na escolha e evitar que a pessoa 
fique chateada, você, provavelmente, realizará uma entrevista com 
os amigos próximos dela, observará os seus hábitos, o modo como 
se veste, objetos que costuma usar, e, inclusive, poderá perguntar a 
ela mesma do que gosta, quais são seus hobbies etc. Com isso, você 
levantará os requisitos necessários para a escolha do presente. Esse 
processo é bastante semelhante ao da engenharia de requisitos.
Todo software é desenvolvido tendo em vista um usuário ou 
grupo de usuários. Assim, para que o engenheiro obtenha 
sucesso no desenvolvimento de um serviço ou produto, 
inicialmente, é necessário definir quais requisitos o software 
deverá apresentar.
Segundo Pfleeger (2004, p. 111), requisito é “uma característica do 
sistema ou a descrição de algo que o sistema é capaz de realizar, para 
atingir os seus objetivos”, ou seja, trata do que um sistema necessita 
possuir ou como deverá se comportar para que esteja conforme às 
necessidades do usuário. Desse modo, a engenharia de requisitos 
é “o conjunto de técnicas empregadas para levantar, detalhar, 
documentar e validar os requisitos de um produto” (PAULA FILHO, 
2009, p. 165), ou seja, consiste em efetuar a gestão dos requisitos 
de um software durante todo o ciclo de desenvolvimento, desde a 
concepção até a entrega.
Vídeo
Engenharia de requisitos 41
Ainda segundo Paula Filho (2009), os requisitos de um software 
devem atender a determinadas características, conforme apresenta 
a Figura 1.
Figura 1 – Características para o levantamento de requisitos de um 
produto ou software
Características 
para o 
levantamento 
de requisitos
Correção
Precisão
Completeza
Consistência
Priorização
Verificabilidade
Modificabilidade
Rastreabilidade
Fonte: Elaborada pelo autor com base em Paula Filho, 2009.
A característica correção, apresentada na figura, prevê que o 
requisito do software seja corretamente descrito e que ele seja realmente 
o do software a ser construído, já a precisão trata da descrição do 
requisito, não permitindo interpretações ambíguas em relação ao que 
deve ser feito. A completeza diz respeito ao requisito abranger, de 
modo completo, aspectos relativos a funcionalidade, desempenho, 
interfaces, restrições e aspectos de qualidade, sem cláusulas de 
pendências; já a consistência possibilita que o requisito não apresente 
conflitos com outros requisitos, de modo lógico ou temporal. A 
priorização caracteriza-se pelo requisito poder ser classificado, em 
42 Engenharia de Software
conjunto com outros requisitos, conforme sua importância (essencial, 
desejável ou opcional, por exemplo); a verificabilidade trata do 
requisito ser verificável quanto à sua conformidade com o produto 
final desenvolvido. A modificabilidade permite que o requisito 
seja modificável quando necessário. Por fim, a rastreabilidade diz 
respeito ao requisito poder ser rastreável quanto aos seus antecedentes 
e consequências, podendo ser relacionada à origem do requisito (para 
trás) ou aos resultados obtidos (para frente).
Para garantir que esses aspectos sejam obtidos no levantamento 
dos requisitos, é necessário considerar nesse processo as 
características do usuário e as especificações de sistema. Assim, o 
processo de engenharia de requisitos, segundo Pressman (2011), é 
composto de algumas fases, conforme podemos observar na figura 
a seguir.
Figura 2 – Fases da engenharia de requisitos
Concepção
Negociação
Levantamento
Especificação
Elaboração
Validação
Gestão
Fonte: Elaborada pelo autor com base em Pressman, 2011.
Engenharia de requisitos 43
O processo inicial da definição dos requisitos, conforme 
podemos observar na Figura 2, é a concepção, na qual são 
previstos os problemas que serão solucionados pelo software 
e são identificadas as partes interessadas1. Em seguida, há o 
levantamento das informações necessárias para a elaboração dos 
requisitos, que acontece por meio de técnicas, como entrevistas e 
etnografia, aplicadas junto às partes interessadas. Já na elaboração, 
as informações obtidas são analisadas, o que permite descrever 
como os usuários interagirão com o sistema e, assim, construir 
um modelo de requisitos para ser apresentado. Posteriormente, 
há a fase de negociação, na qual são discutidos possíveis conflitos 
relacionados ao que as partes interessadas desejam e ao que pode ser 
desenvolvido até se chegar a um consenso. Na sequência, elabora-se 
o modelo de especificação de requisitos de software – ou SRS 
(Software Requirements Specification) –, documento contendo a 
descrição detalhada dos requisitos do sistema a ser desenvolvido. 
Depois, ocorre a validação do que foi descrito na especificação de 
requisitos de software junto ao usuário, detectando e corrigindo 
prováveis inconsistências, omissõese erros. Por fim, na etapa de 
gestão, uma vez validada, a especificação de requisitos de software é 
acompanhada durante o processo de desenvolvimento de modo que, 
caso necessário, correções e mudanças possam ser feitas.
Além disso, o levantamento dos requisitos deve considerar, 
além do usuário, todas as partes interessadas nesse sistema 
(stakeholders), visto que, segundo Sommerville (2011), no 
processo de definição dos requisitos podem surgir dificuldades, 
como o fato de as partes interessadas nem sempre sabem o 
1 Uma parte interessada, denominada stakeholder, é “quem tem alguma influência 
direta ou indireta sobre os requisitos do sistema” (SOMMERVILLE, 2011, p. 70), ou seja, 
todo indivíduo envolvido no processo de desenvolvimento de um sistema.
44 Engenharia de Software
que desejam de um sistema; elas podem utilizar linguagem 
própria ou jargões técnicos para explicar os requisitos, termos 
nem sempre compreensíveis para os engenheiros de software. 
Podem haver diferenças em termos de prioridades ou de opiniões 
com relação a requisitos necessários ou não para determinado 
sistema. A definição de requisitos pode ser influenciada por 
fatores políticos (por exemplo, influência na organização) e os 
requisitos definidos pelas partes interessadas podem mudar com 
o tempo, assim como as prioridades para cada requisito, o que 
pode dificultar o processo de desenvolvimento do sistema.
Desse modo, durante o levantamento de requisitos, para verificar 
quais são as necessidades dos usuários em relação ao software que 
será desenvolvido, realizam-se técnicas como entrevistas, análise de 
cenários, etnografia e coleta colaborativa, descritas a seguir. Nessa 
etapa, também é necessário realizar um levantamento sobre pessoas, 
processos e recursos envolvidos no desenvolvimento e na utilização 
do software. Pode-se também realizar pesquisa em base de dados, 
artigos, documentos técnicos de hardware e software, dentre outras 
fontes, a fim de se obter informações adicionais que possam ser 
utilizadas como base para a definição dos requisitos.
• Entrevistas
A entrevista é uma das técnicas primárias para a descoberta 
de requisitos. Em um ambiente formal, ou informal, realizam-se 
perguntas para saber a opinião das partes interessadas sobre quais 
seriam os requisitos do sistema para o usuário. Recomenda-se a 
realização das entrevistas em equipe, isto é, com vários profissionais 
de engenharia de software trabalhando juntos e anotando as 
respostas das perguntas. As entrevistas podem ser de dois tipos, 
conforme figura a seguir.
Engenharia de requisitos 45
Figura 3 – Tipos de entrevista durante a definição de requisitos
abertas fechadas
não há um roteiro definido de 
perguntas – inicia-se com uma 
pergunta inicial e a entrevista 
evolui conforme as respostas dos 
stakeholders.
as perguntas são previamente 
definidas e os stakeholders se 
atêm apenas a responder às 
perguntas realizadas.
Entrevistas (em equipe) 
Fonte: elaborada pelo autor com base em Sommerville, 2011.
As entrevistas são adequadas para uma compreensão 
abrangente a respeito dos hábitos das partes interessadas, das 
dificuldades enfrentadas nos sistemas que atualmente usam e das 
expectativas relacionadas ao novo sistema que será desenvolvido 
(SOMMERVILLE, 2011). Outra vantagem das entrevistas é 
o esclarecimento de jargões técnicos, processos, atividades e 
conhecimentos nem sempre claros para os engenheiros de software. 
Além disso, elas podem servir para esses profissionais obterem 
conhecimento, mesmo que pouco, da cultura da organização e de 
suas relações de poder – elementos que também podem influenciar 
no desenvolvimento do software.
• Análise de cenários
Outro método para a coleta de requisitos consiste na análise de 
cenários. Segundo Sommerville (2011, p. 73), “as pessoas geralmente 
acham mais fácil se relacionar com exemplos da vida real do que com 
descrições abstratas. Elas podem compreender e criticar um cenário 
46 Engenharia de Software
de como elas podem interagir com um sistema de software”. Assim, 
essa técnica, conforme o nome sugere, está relacionada à montagem 
e simulação de cenários hipotéticos para a utilização do software, 
como a criação de histórias no método Extreme Programming.
Dentre as situações que podem ser simuladas com a análise 
de cenários, encontram-se casos de uso do sistema por parte do 
usuário, possíveis usos inadequados, possíveis erros ou exceções 
apresentadas pelo sistema, bem como atividades simultâneas que 
podem acontecer durante a execução do sistema.
Sommerville (2011) sugere que a análise de cenários seja 
realizada por escrito, contendo cinco elementos básicos:
Figura 4 – Elementos básicos para a análise de cenários
01 02
04 05
03
Suposição 
inicial
Situação 
normal de 
utilização
Outras 
atividades
Estado do 
sistema na 
conclusão
O que pode 
dar errado
Fonte: elaborada pelo autor com base em Sommerville, 2011.
Na suposição inicial, expõe-se a situação na qual o software 
será utilizado – o cenário-base; na situação normal de utilização, 
descreve-se o processo de utilização do software, passo a passo, 
considerando o papel de cada usuário nesse processo. Na etapa que 
considera o que pode dar errado, descreve-se, a partir da situação 
normal de utilização, os possíveis erros que podem acontecer durante 
a utilização do software. Em outras atividades, verificam-se outras 
atividades ou restrições com relação ao uso do software, as quais 
não se encontram na situação normal de utilização. Por fim, em 
Engenharia de requisitos 47
estado do sistema na conclusão, abordam-se os processos relativos 
à finalização do uso do sistema e como a sua utilização é concluída.
• Etnografia
Essa possível técnica para o levantamento de requisitos 
considera que o uso do software é realizado em um contexto social 
e organizacional, ou seja, é considerado parte de uma cultura. A 
etnografia “é uma técnica de observação que pode ser usada para 
compreender os processos operacionais e ajudar a extrair os requisitos 
de apoio para estes processos” (SOMMERVILLE, 2011, p. 75).
A etnografia consiste na observação do uso de um artefato em 
seu ambiente pelos usuários. Um observador se introduz nesse 
ambiente e realiza anotações a respeito do uso desse software – 
da forma como o sistema é utilizado, o porquê de determinadas 
funcionalidades serem usadas ou não e as interações dos usuários 
com a interface do sistema.
Assim, essa técnica permite a identificação de requisitos com 
base na realidade da utilização do sistema no ambiente de trabalho, e 
não apenas com base em suposições ou estudos. Além disso, permite 
a identificação de requisitos com base na observação da cooperação 
entre as pessoas e na troca de conhecimentos, experiências e 
opiniões entre elas.
• Coleta colaborativa
A coleta colaborativa de requisitos é uma técnica em que se 
realizam reuniões com a participação das partes interessadas e dos 
engenheiros de software. Essas reuniões são realizadas segundo 
regras estabelecidas para a participação, e “é sugerida uma agenda 
suficientemente formal para cobrir todos os pontos importantes, 
porém, suficientemente informal para encorajar o fluxo livre de 
ideias” (PRESSMAN, 2011, p. 133).
Nessas reuniões, identificam-se os problemas, propõem-se 
as soluções e definem-se diferentes abordagens para definir um 
48 Engenharia de Software
conjunto preliminar de requisitos. Um facilitador é escolhido 
para conduzir a reunião e garantir que as regras definidas sejam 
cumpridas.
Por fim, independentemente da técnica utilizada (entrevistas, 
análise de cenários, etnografia e coleta colaborativa), o importante é 
que, por meio dessa aplicação, seja possível a coleta dos requisitos 
funcionais e não funcionais necessários para o desenvolvimento do 
software. A seguir, definimos alguns desses requisitos.
3.2 Classificação de requisitos
Agora que você já sabe o que são requisitos, 
é importante realizar a distinção dos tipos de 
requisitos. Pfleeger(2004) sugere a priorização 
de requisitos em três categorias básicas, conforme 
figura a seguir. Essa priorização é importante para 
que a equipe de desenvolvimento seja melhor direcionada em relação 
aos seus esforços e recursos para as tarefas de desenvolvimento.
Figura 5 – Classificação de requisitos de acordo com Pfleeger (2004)
Requisitos
totalmente 
satisfeitos
altamente 
desejáveis
possíveis, mas 
que podem ser 
eliminados
Fonte: Elaborada pelo autor com base em Pfleeger, 2004.
Dentre os requisitos que devem ser totalmente satisfeitos, 
pode-se citar as funcionalidades básicas de um sistema. Por 
exemplo, um sistema comercial deve possibilitar a emissão de 
notas fiscais, ao passo que um sistema de departamento de pessoal 
(DP) deve possibilitar a exibição da ficha cadastral de determinado 
colaborador.
Vídeo
Engenharia de requisitos 49
Já os requisitos que são desejáveis, mas não necessários, dizem 
respeito a funcionalidades acessórias que seriam muito úteis para o 
usuário desempenhar suas tarefas, mas que podem ser dispensadas 
em uma versão básica do sistema. Por exemplo, o sistema comercial 
poderia emitir um relatório de clientes inadimplentes, e o sistema 
de gerenciamento de pessoal armazenar, além da ficha cadastral, o 
currículo do colaborador.
Por fim, os requisitos que são possíveis, mas poderiam ser 
eliminados, dizem respeito a adições ao sistema que podem 
ser consideradas em determinado momento, porém podem 
ser dispensadas se necessário. Um exemplo desse requisito é a 
formatação dos sistemas empresariais anteriormente mencionados, 
originalmente desenvolvidos para computadores pessoais, para o 
formato de aplicativos de celular.
Já Pressman (2011) estabelece outra classificação para requisitos, 
sob o viés da gestão da qualidade. Para o autor, os requisitos podem 
ser classificados em três modalidades, conforme apresenta a figura 
a seguir.
Figura 6 – Classificação de requisitos de acordo com Pressman 
(2011)
Requisitos
normais esperados fascinantes
Fonte: Elaborada pelo autor com base em Pressman, 2011.
Os requisitos normais são estabelecidos com base em objetivos 
e metas definidos junto às partes interessadas, utilizando técnicas 
de levantamento de requisitos. Já os requisitos esperados, que nem 
sempre são declarados pelas partes interessadas, podem ser tão 
50 Engenharia de Software
fundamentais quanto os requisitos normais, e sua ausência causará 
insatisfações. Por último, se os requisitos fascinantes estiverem 
presentes, ocasionarão, além das expectativas das partes interessadas, 
extrema satisfação, constituindo-se em uma surpresa. Portanto, a 
definição do autor supracitado considera os tipos de requisitos sob a 
perspectiva das partes interessadas no projeto.
Outra classificação possível para requisitos, segundo 
Sommerville (2011), diz respeito à sua funcionalidade. Dessa forma, 
é possível a classificação dos requisitos segundo duas modalidades, 
conforme figura a seguir.
Figura 7 – Requisitos com base na funcionalidade
Requisitos
funcionais
funcionalidades básicas de 
determinado sistema, descrevendo 
o que este deverá executar em cada 
situação. O cumprimento desses 
requisitos garante que o sistema 
funcione conforme o esperado.
restrições do sistema, ou seja, não 
descrevem o que o sistema deverá 
executar, mas sim como ele se 
comportará durante a execução. 
não funcionais
Fonte: Elaborada pelo autor com base em Sommerville, 2011.
Como exemplos de requisitos funcionais, pode-se citar, em um 
jogo, as possíveis ações que o jogador poderá desempenhar, já em 
uma página de internet, é possível mencionar o conteúdo que deverá 
ser apresentado, o layout da página, a disposição dos botões e links, 
dentre outros. No caso de exemplos de requisitos não funcionais, 
pode-se citar, tanto no jogo, como na página de internet, os requisitos 
mínimos de hardware para o funcionamento do sistema.
Tanto os requisitos funcionais quanto os não funcionais podem 
ser, também, classificados conforme os componentes do sistema e 
seus processos de desenvolvimento. Pfleeger (2004) realiza, dessa 
forma, a seguinte classificação:
Engenharia de requisitos 51
• Requisitos de ambiente físico: dizem respeito ao local físico 
de instalação e funcionamento do sistema ou hardware, 
bem como possíveis restrições de funcionamento, como 
temperatura, ruídos, vibrações, interferência magnética, 
dentre outras.
• Requisitos de interface: tratam da interação de um sistema 
com outros sistemas, abrangendo aspectos como a formatação 
de dados, entradas e saídas, dentre outros.
• Requisitos de usuários e fatores humanos: abrangem a 
forma com a qual o usuário interage com o sistema e sua 
interface, e consideram diferentes níveis de competências 
– conhecimentos, habilidades e atitudes, bem como a 
necessidade de treinamento para o seu melhoramento. Ainda, 
consideram a intuitividade, as facilidades e as dificuldades de 
compreensão do usuário, e analisam o perfil do usuário do 
sistema e quantos o utilizarão.
• Requisitos de funcionalidade: dizem respeito às funções 
do sistema, seus modos de operação, necessidades de 
aprimoramento e limitações.
• Requisitos de documentação: tratam da necessidade de 
documentação para o sistema, bem como do formato – se é 
on-line, em papel (físico) ou ambos. Também dizem respeito 
aos públicos aos quais se destina cada documentação e quais 
usuários devem ter acesso à documentação.
• Requisitos de dados: tratam da formatação dos dados, da 
frequência de envio e recebimento, da precisão, do fluxo e da 
forma de armazenagem e manutenção desses dados no sistema.
• Requisitos de recursos: dizem respeito a materiais, pessoas, 
tecnologias, dentre outros, necessários para o adequado 
funcionamento do sistema. Também tratam de questões 
relacionadas às tecnologias da informação necessárias, como 
52 Engenharia de Software
hardware, telecomunicações, infraestrutura (edificações, 
estrutura física, dentre outros) e custos de desenvolvimento.
• Requisitos de segurança: dizem respeito às políticas de 
acesso ao sistema, bem como à gestão de dados e informações, 
principalmente, dos usuários e demais stakeholders. Também, 
dizem respeito às políticas de backup (sendo que se sugere 
que as cópias sejam armazenadas em local distinto ao do 
sistema) e prevenções contra desastres naturais ou acidentes.
• Requisitos de garantia da qualidade: abrangem, por sua vez, 
questões básicas de qualidade do sistema, como confiabilidade, 
disponibilidade, manutenibilidade, capacidade, prevenção a 
falhas e defeitos, correção de erros, indicadores de desempenho, 
dentre outros.
Desse modo, é possível compreender que se pode classificar 
requisitos pela funcionalidade, conforme os componentes do 
sistema ou pela ótica da gestão da qualidade. O importante é que o 
software, ao cumprir esses requisitos, esteja adequado às necessidades 
do usuário e das demais partes interessadas pelo sistema.
3.3 Especificação e 
apresentação de requisitos
Agora que estudamos os requisitos e suas 
características, chegou a vez de definirmos como 
apresentá-los às partes interessadas, bem como a 
melhor forma de documentá-los.
Conforme afirma Sommerville (2011), especificar requisitos 
para o desenvolvimento de um sistema consiste em documentá-los. 
Uma forma de se documentar os requisitos, tanto do usuário quanto 
do sistema, é por meio da especificação de requisitos de software 
(SRS). Esse documento detalha todos os aspectos do software que 
deverão ser considerados no processo de construção. Pressman 
(2011) sugere o seguinte conteúdo para esse documento:
Vídeo
Engenharia de requisitos 53
Figura 8 – Conteúdos sugeridos para se documentar os requisitos
Introdução
Requisitos não 
funcionais
Requisitos de 
interfaces externas
Outros requisitos
Descrição geral
Validação
Características 
do sistema
Gestão
Fonte: Elaborada pelo autor com base em Pressman, 2011.
Na introdução, apresentam-se o documento, suas convenções, 
seu público-alvo,sugestões de leitura, o escopo do projeto de 
software e as referências utilizadas. Já na descrição geral, detalha-
se o software a ser desenvolvido, contemplando características, 
restrições de projeto, ambiente operacional, dentre outros. Em 
características do sistema, detalham-se os requisitos funcionais do 
sistema e suas características essenciais. Em seguida, em requisitos 
de interfaces externas, detalham-se os requisitos referentes às 
interfaces de usuário, software, hardware e comunicação. Depois, em 
requisitos não funcionais, apresentam-se requisitos considerados 
não funcionais, como de desempenho, segurança, proteção e 
qualidade. Por fim, em outros requisitos, descrevem-se requisitos 
não mencionados nos itens anteriores, porém, importantes para o 
projeto.
Essa especificação de requisitos pode ser feita de diferentes 
formas. Sommerville (2011) descreve algumas:
• Sentenças em linguagem natural: os requisitos são escritos na 
linguagem natural – sugere-se uma frase para expressar cada 
requisito.
• Linguagem natural estruturada: descrevem-se os requisitos 
em linguagem natural, porém em um formulário estruturado 
(template).
54 Engenharia de Software
• Linguagem de descrição de projeto: os requisitos são escritos 
com o uso de uma linguagem similar à de programação, mas 
com características mais abstratas.
• Notações gráficas: utilizam-se notações gráficas para a 
descrição dos requisitos, como a linguagem UML.
• Especificações matemáticas: utilizam-se notações matemáticas 
para a expressão dos requisitos (conjuntos, por exemplo) – deve-
se observar que a maioria das pessoas pode não compreender 
os requisitos escritos dessa maneira.
Sommerville (2011) ainda sugere aspectos a serem considerados 
no momento de escrever requisitos. Primeiramente, ele propõe a 
padronização do formato de escrita, por exemplo, com a escrita dos 
requisitos em uma única frase e uma justificativa para cada requisito.
Além disso, é necessária uma linguagem consistente para a 
distinção dos requisitos obrigatórios e desejáveis ou possíveis – por 
exemplo, utilizando o termo deve para os requisitos obrigatórios 
e pode para os requisitos desejáveis e possíveis. O autor sugere, 
também, o uso de alguma forma para destacar os elementos 
fundamentais do requisito – itálico, negrito ou o uso de cores.
Adicionalmente, é preciso considerar que nem todas as pessoas 
conhecem os termos técnicos utilizados na engenharia de software. 
Assim, deve-se evitar, na descrição dos requisitos, o uso de jargões, 
siglas e acrônimos que possam causar interpretações equivocadas ou 
não entendimentos.
Para melhor compreensão por parte do usuário e do 
desenvolvedor, a escrita pode ser associada ao desenvolvimento 
de protótipos para se analisar e visualizar melhor cada requisito. 
Paula Filho (2009, p. 170) sugere a utilização de um protótipo 
evolucionário, “que é uma versão parcial do produto que satisfaz a 
um subconjunto de requisitos do produto final”, ou de um protótipo 
descartável, “construído com a única finalidade de demonstrar o que 
Engenharia de requisitos 55
foi entendido ou resolvido em relação a algum aspecto da análise ou 
desenho do produto”. O autor cita os seguintes tipos de protótipos:
• Protótipo visual: adequado para expressar funções e interfaces 
de usuário, bem como relatórios gráficos, permitindo a 
visualização das interfaces e a navegação entre estas – ele pode 
ser construído com ferramentas de desenho ou em ambiente 
de programação rápida.
• Processador de textos: pode ser utilizado para prototipar 
relatórios textuais – neste caso, a amostra do relatório que o 
software deverá produzir.
• Planilhas eletrônicas: adequadas para a simulação de cálculos 
ou algoritmos complexos.
• Programas de teste: para simular a execução de partes de um 
sistema ou novas tecnologias.
Uma vez apresentados às partes interessadas, os requisitos 
podem sofrer alterações ao longo do desenvolvimento do software. 
Recomenda-se que as mudanças sejam gerenciadas e justificadas com 
base em aspectos operacionais e financeiros (custos). Sommerville 
(2011) recomenda alguns estágios para se promover mudanças em 
requisitos:
Figura 9 – Estágios para as mudanças em requisitos
Estágios
Análise de problema 
e especificação de 
mudanças
Análise de 
mudanças e custos
Implementação
de mudanças
1
2
3
56 Engenharia de Software
Fonte: Elaborada pelo autor com base em Sommerville, 2011.
Em 1, analisa-se o problema ou proposta de mudança com o 
intuito de verificar a sua validade e viabilidade. Em 2, analisam-se 
os efeitos e impactos da mudança, bem como a necessidade de 
mudanças no documento de requisitos, em que se deve aprovar a 
mudança antes de realizá-la. Por último, em 3, implementa-se a 
mudança e efetuam-se as alterações no documento de requisitos.
Por fim, vale ressaltar que, durante o desenvolvimento do 
software e no processo de apresentação dos requisitos, estes podem 
ser negociados entre as partes. Sugere-se, com base em Pressman 
(2011), que a negociação dos requisitos seja feita no sistema 
“ganha-ganha”. Ainda recomenda-se identificar os principais 
interessados na negociação, definir as condições de ganho de 
cada parte e negociar as condições, buscando-se garantir esses 
ganhos tanto para as partes interessadas quanto para a equipe de 
desenvolvimento de software.
Considerações finais
A engenharia de requisitos é uma atividade que não deve 
acontecer apenas na fase inicial de desenvolvimento de software, 
mas deve permear todo o processo de desenvolvimento de modo 
que, conforme o software é desenvolvido, os desenvolvedores 
estejam constantemente atentos às necessidades do usuário.
Os requisitos das partes interessadas, dos usuários e do 
sistema encontram-se em constante mudança, principalmente se 
considerarmos o fato de que as organizações estão inseridas em 
mercados cada vez mais dinâmicos.
Desse modo, cabe ao engenheiro de software perceber 
essas mudanças e aplicar, sempre que possível, os métodos de 
levantamento de requisitos estudados neste capítulo, com o intuito 
de manter sempre atualizados os requisitos do sistema, facilitando, 
assim, o trabalho da equipe de desenvolvimento.
Engenharia de requisitos 57
Ampliando seus conhecimentos
• VAZQUEZ, C. E.; SIMÕES, G. S. Engenharia de requisitos: 
software orientado ao negócio. Rio de Janeiro: Brasport, 2016.
Esse livro descreve de modo didático, os processos 
de definição, coleta, análise e gestão de requisitos, 
relacionando-os a processos de negócio.
• FERNANDES, J. M.; MACHADO, R. J. Requisitos em projetos de 
software e de sistemas de informação. São Paulo: Novatec, 2017.
Esse livro descreve os principais processos da engenharia de 
requisitos, dando ênfase à modelagem de requisitos.
Atividades
1. Escolha um software que você utilize – pode ser um aplicativo 
de celular, um jogo, o sistema da empresa onde você trabalha 
ou outro de sua preferência. Defina, no mínimo, três 
requisitos funcionais e três requisitos não funcionais para 
esse sistema.
2. Baixe um aplicativo de celular qualquer pela internet e 
peça a uma pessoa (amigo, familiar etc.) que o utilize. Faça 
anotações e, se possível, uma gravação de vídeo de cada 
atividade ou interação dessa pessoa com o aplicativo. Defina, 
com base nessa utilização, três requisitos funcionais e três 
requisitos não funcionais para esse aplicativo.
3. Escolha um jogo digital de sua preferência. Imagine que você 
desenvolverá a continuação desse jogo e elabore um modelo 
de especificação de requisitos de software para ele.
Referências
PAULA FILHO, W. P. Engenharia de software: fundamentos, métodos e 
padrões. Rio de Janeiro: LTC, 2009.
PFLEEGER, S. L. Engenharia de software: teoria e prática. São Paulo: 
Pearson, 2004.
PRESSMAN, R. S. Engenharia de software: uma abordagem profissional. 
Porto Alegre: AMGH, 2011.
SOMMERVILLE, I. Engenharia de software. São Paulo: Pearson, 2011.
4
Modelagem de software com a UML
Neste capítulo, vamos estudar a UML

Outros materiais