Buscar

Ebook Engenharia de Software

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

ENGENHARIA DE 
SOFTWARE 
 
 
 
APRESENTAÇÃO
Seja bem-vindo(a) à disciplina de Engenharia de Software. 
O desenvolvimento de software é desafiador e exige conhecimento especializado. 
O resultado desse processo são produtos que ajudam as pessoas em suas atividades. O 
editor de texto, a planilha eletrônica, o slide de apresentação, os aplicativos em nosso 
celular, os sistemas utilizados pelas empresas para apoio em suas atividades, entre outros, 
são produtos de software. Ao tratarmos de Engenharia de Software, devemos considerar 
os bastidores dessa área, pois o processo de construção de um produto de software 
é complexo, mas muito bem estruturado e organizado. Estamos falando um processo 
devidamente definido, com papéis e responsabilidades, ferramentas de apoio, modelos, 
frameworks, padrões e boas práticas para apoiarem na realização das atividades de 
trabalho.
INTRODUÇÃO
Olá, aluno(a)! Neste conteúdo, aprofundaremos nossos conhecimentos sobre a 
engenharia de software.
De acordo com Sommerville (2011), o nome “engenharia de software” foi proposto 
em 1969, em uma conferência da OTAN (Organização do Tratado do Atlântico Norte), 
para a discussão de problemas relacionados com desenvolvimento de software.
Não há dúvida de que o software facilita a nossa vida, pois ele está presente nos 
mais diversos momentos. Seja no aplicativo de celular, no site da internet, no controle 
que precisamos realizar, no texto ou na apresentação que necessitamos desenvolver, o 
software está facilitando consideravelmente a execução das nossas atividades. 
Existem diversos aplicativos de software, como planilhas eletrônicas, editores 
de texto, aplicativos de mensagens e redes sociais, que são aplicações resultantes do 
desenvolvimento de software. O software ajuda na organização da nossa rotina de 
trabalho, um exemplo disso é a organização de sinais dos semáforos nas ruas e avenidas 
em que passamos, pois existem aplicações de software fazendo o seu controle. O software 
está em aplicações dos mais variados níveis de criticidade, que vão desde o registro do 
controle de ponto do trabalhador até aplicações do mais alto grau de criticidade, como o 
controle de tráfego aéreo, de represas hidroelétricas e de usinas nucleares. 
Se o software pode estar presente nos mais variados níveis de aplicações – das 
simples até as mais críticas – torna-se necessário um processo minucioso para o seu 
desenvolvimento. Esse é o ponto principal, sobre o qual trataremos, incluindo diversas 
ferramentas, modelos e processos que podem ser aplicados para que possamos produzir 
software de altíssima qualidade, livre de erros e executando o que ele se propõe a fazer.
ENGENHARIA DE SOFTWARE
Na década de 60, as entregas dos softwares atrasavam, não entregavam as 
funcionalidades que os usuários necessitavam, custavam mais que o esperado e não 
eram confiáveis. Emergindo ao final da década de 60 e ganhando força no início da 
década de 70, surge a chamada crise do software. Começava a existir uma alta demanda 
no desenvolvimento de sistemas, os profissionais de tecnologia se deparavam com a 
complexidade dos problemas a serem resolvidos e, além de tudo isso, não havia técnicas 
definidas para o desenvolvimento que garantissem o funcionamento adequado das 
soluções.
Projetos com prazo e orçamento comprometidos, produto com baixa qualidade, 
sistema gerando insatisfação aos usuários, alta dificuldade no gerenciamento das 
atividades, escassez de pessoas preparadas para a função (programadores e analistas de 
requisitos e sistemas) e códigos de difícil manutenção eram alguns dos sintomas gerados 
por essa crise.
O processo de criação de software era complexo e, agregado a isso, existia a 
imaturidade da engenharia de software como profissão, pois ainda começava a dar 
os primeiros passos. Dessa forma, surgia a necessidade da definição de um processo 
organizado que possibilitasse o desenvolvimento de produtos de software confiáveis, ou 
seja, a Engenharia de Software propriamente dita!
No contexto atual, o mundo não consegue mais evoluir sem um aplicativo de 
software. Produtos elétricos e eletrônicos, veículos, sistemas de controle de aeronaves, 
programas de celular, tablets e computadores são exemplos que utilizam aplicativos de 
software para o seu funcionamento. 
A produção das indústrias é altamente informatizada pelo controle de aplicações 
do sistema financeiro, da indústria da música, de jogos, do cinema e da televisão, que 
são segmentos com uso intensivo de software. Sendo assim, a engenharia de software 
é essencial para o funcionamento de aplicativos que suportam esses segmentos. Mesmo 
que você não concorde, o software está incorporado em praticamente todos os aspectos 
de nossas vidas.
Para Pressman (2016), software é o elemento-chave na evolução de produtos e 
sistemas com base em computador, além de ser uma das mais importantes tecnologias 
no cenário mundial. Pressman (2016) também complementa que o software consiste em:
1. instruções (programas de computador) que, quando executadas, fornecem 
características, funções e desempenho desejados; 
2. estruturas de dados que possibilitam aos programas manipular informações 
adequadamente; e 
3. informação descritiva, tanto na forma impressa quanto na virtual, 
descrevendo a operação e o uso dos programas.
Para Sommerville (2011), é uma disciplina de engenharia cujo foco está em todos 
os aspectos da produção de software, desde os estágios iniciais da especificação do 
sistema até a sua manutenção, quando o sistema já está sendo usado. Como disciplina, 
a Engenharia de Software apoia o processo de desenvolvimento, sugerindo técnicas para 
especificação, projeto e evolução de programas de desenvolvimento de software.
De acordo com o IEEE (Instituto de 
Engenheiros Eletricistas e Eletrônicos), o 
software está profundamente incorporado 
em praticamente todos os aspectos de 
nossas vidas e, consequentemente, o 
número de pessoas interessadas nos 
recursos e nas funções oferecidas por 
determinada aplicação tem crescido 
significativamente. Se considerarmos a 
grande demanda de produção de sistemas 
que atualmente temos – e as que estão 
por vir – a Engenharia de Software passa 
a ter uma importância crítica para o futuro 
da humanidade.
É importante destacar que o 
objetivo da Engenharia de Software é 
fornecer informações e técnicas para 
o desenvolvimento e a produção de 
soluções. São métodos que envolvem 
uma ampla variedade de atividades e 
tarefas que vão desde a comunicação 
até análise de requisitos, modelagem 
de projetos, construção de programas, 
testes, verificação, validação, entrega 
e suporte. A Engenharia de Software 
inclui ainda métodos que se baseiam em 
princípios para orientar o levantamento 
e a descoberta de informações, a 
modelagem e outras técnicas descritivas.
Já as ferramentas da Engenharia de Software – que são muitas – fornecem 
suporte para o processo de desenvolvimento. Nesse aspecto, existe uma integração das 
informações que vão desde o levantamento dos requisitos, a organização do projeto – 
pessoas, atividades, orçamento, cronograma de entregas – até o desenvolvimento do 
código propriamente dito. Isso possibilita a definição de um sistema para o suporte 
ao desenvolvimento de software, denominado engenharia de software com o auxílio do 
computador.
Existe uma confusão sobre o software ser apenas o programa que roda no computador, 
porém é muito mais que isso. Ao nos referenciarmos ao termo engenharia de software, 
não estamos nos limitando apenas ao programa de computador em si, pois significa algo 
muito mais amplo. A engenharia de software considera toda a documentação associada, 
as configurações necessárias para que o programa opere corretamente, o trabalho, o 
processo para o seu desenvolvimento, os testes e a qualidade do produto, constituindo 
algo muito mais amplo e complexo.
 Um sistema de softwareé, com frequência, mais do que um programa de computador. 
Ele pode incluir outros programas separados e arquivos de configuração que são usados 
para permitir que o sistema opere. Inclui documentação do sistema e do usuário, existe 
uma descrição da sua estrutura e uma documentação de como usar o sistema. Agregado a 
ele, existem sites para que os usuários baixem as informações e as atualizações referentes 
ao produto. Estamos falando de um sistema profissional projetado para pessoas, e não de 
uma aplicação criada por um amador, que desenvolve um programa para si mesmo, que 
ninguém mais usará e, somente ele, o criador, compreende a solução.
A engenharia de software é um processo organizado de trabalho, existem etapas no 
processo e papéis bem definidos, além de práticas e ferramentas de apoio que possibilitam 
as empresas a adquirirem maturidade e melhorarem seus processos de construção de 
sistemas. Ela se faz importante – e, por assim dizer, necessária – por dois motivos:
• Pessoas e sociedades estão cada vez mais dependentes das soluções de 
sistemas de software;
• Existem ganhos de longo prazo que são obtidos com o uso e a aplicação 
de métodos e técnicas da engenharia de software. Não estamos falando apenas 
do aspecto financeiro, mas da facilidade de manutenção, confiabilidade do 
produto e economia oriunda por não haver retrabalho.
A demanda de software vem aumentando cada vez mais, e com a tecnologia cada dia 
mais acessível às pessoas, existe uma demanda crescente por soluções dos mais variados 
tipos e segmentos. Resta o desafio e a consciência de produzir sistemas confiáveis de 
forma rápida e econômica. Para que isso seja alcançado, torna-se necessário um processo 
de apoio – a Engenharia de Software. 
Concluímos aqui o nosso aprendizado sobre os conceitos da disciplina de Engenharia 
de Software. Esse é um conteúdo fascinante relacionado à área de Tecnologia da 
Informação e Comunicação (TIC).
Para que o seu conhecimento seja melhor construído, continue com pesquisas e 
leituras complementares.
Referências da unidade:
PRESSMAN, R. S. Engenharia de software: Uma Abordagem Profissional. 8. ed. 
São Paulo: AMGH Editora Ltda, 2016.
Software Engineering Institute – SEI. “CMMI for Development, Version 1.3”, CMMI-
-DEV V1.3, CMU/SEI 2010-TR-033, Relatório Técnico. Carnegie Mellon University, 
2010.
SOMMERVILLE, I. Engenharia de software. São Paulo: Pearson, 2011.
INTRODUÇÃO
Olá, aluno(a)! Está preparado para conhecer a história da evolução do software? 
Vamos lá!
O desenvolvimento de software é um dos segmentos da Tecnologia da Informação 
e Comunicação (TIC) que mais demanda profissionais. Por estar em ascensão, existem 
muitas oportunidades, tanto no Brasil, como em outros países.
O trabalho de desenvolvimento de aplicações de software no contexto atual pode 
ser realizado de forma estruturada e organizada. Existem muitas ferramentas, frameworks 
e boas práticas para apoiar as atividades relacionadas a esse segmento, mas nem sempre 
foi assim...
Nos primórdios dos computadores, não havia programas instalados, logo, não 
havia maneira para que os softwares fossem desenvolvidos. Por isso, no encontro de 
hoje, estudaremos a história da evolução do software, os principais fatos históricos e os 
acontecimentos que causaram o crescimento dessa área – a Engenharia de Software.
CONHECER A HISTÓRIA DA EVOLUÇÃO DO SOFTWARE
Historicamente, profissionais de TIC que atuam especificamente no desenvolvimento 
de sistemas sempre tiveram boas oportunidades profissionais. Nesse setor, de 
desenvolvimento de software, a crise sempre foi pela escassez da mão de obra qualificada. 
Com o surgimento de novos produtos digitas, a carreira dos profissionais de TIC tem 
ganhado novos impulsos. Segundo a Page Personnel, consultoria de recursos humanos 
especializada em profissionais de TIC, os profissionais de desenvolvimento de software, 
de gestão de projetos e de infraestrutura estão entre os mais procurados pelas empresas 
do setor. De acordo com o site CIO, o profissional de desenvolvimento de software ocupou 
o topo dos 9 profissionais de TI mais demandados no Brasil em 2019.
Com a evolução do software, inúmeras oportunidades têm surgido. Com ferramentas, 
modelos e processos apoiando o seu desenvolvimento, o software – mundialmente 
falando – tem se tornado um produto cada vez mais demandado. No entanto, é necessário 
lembrar-se de que nem sempre foi assim! 
No encontro de hoje, vamos aprender sobre a história da evolução do software, um 
produto que está em ascensão gerando diversas oportunidades para a área de TIC.
No contexto atual, diversas são as ferramentas que apoiam o desenvolvimento de 
software. São ferramentas integradas que não só facilitam o trabalho de programação 
de código, criando um ambiente agradável para a produção, como também organizam o 
processo de desenvolvimento de sistemas.
Contudo, no princípio do processamento de dados, o hardware, que é a parte física 
do computador, não continha programas instalados e a sua operação ocorria de forma 
manual. Não havia programas de software para a sua operação, portanto, tudo era 
operado fisicamente. O primeiro computador, ENIAC, era operado manualmente sempre 
que uma tarefa diferente fosse executada.
A criação do EDVAC, por John Von Neumann, em 1945, e o Mark I, criado pela 
Universidade de Harvard, foram de fundamental importância na história da evolução 
do software, pois ao contrário do antecessor, ENIAC – que possuia em torno de 18 mil 
válvulas para o seu funcionamento –, eram computadores com capacidade de armazenar 
programas. Alguns anos mais tarde, esses programas receberam a denominação de 
Software. Foi o cientista americano John Wilder Tukey quem usou o termo software pela 
primeira vez, em 1958. Tukey também foi responsável pelo termo “bit” para se referenciar 
a “dígito binário”.
Vale destacar que antes do ano de 1958, mais especificamente na década 40, cada 
programa era executado isoladamente e com total controle do computador. Existia um 
trabalho árduo para o desenvolvedor que precisava prever tudo de forma minuciosa, 
considerando as entradas de carga do programa em memória, o mapeamento dos 
periféricos de entrada para busca de dados e o envio de dados para os periféricos de 
saída. Já na década de 50, temos a segunda geração da computação moderna, período 
que vai de 1955 até 1965. A programação em batch – conjunto de comandos executados 
em lote, sequencialmente – estava em alta, e surgiu o conceito de sistema operacional, 
que foi de fundamental importância para o computador IBM 701, operado por cartões 
perfurados e fitas magnéticas.
Também no ano de 1965, a IBM lançou o sistema operacional OS/360, com 
compartilhamento de tempo e excelente suporte a discos. Nesse mesmo ano, em um 
projeto envolvendo o Instituto de Tecnologia de Massachusetts (MIT), a General Electric 
(GE) e a Bell Labs, foi criado o sistema operacional Multics, que influenciou novos sistemas 
durante décadas.
Não podemos deixar de lembrar que na década de 60 houve a crise do software, 
pois conforme estudamos na unidade anterior, as entregas dos softwares atrasavam, os 
que eram produzidos não entregavam as funcionalidades que os usuários necessitavam, 
custavam mais que o esperado e não eram confiáveis. Começava a existir uma alta 
demanda no desenvolvimento de sistemas, os profissionais de tecnologia se deparavam 
com a complexidade dos problemas a serem resolvidos e, somado a tudo isso, não havia 
técnicas definidas para o desenvolvimento que garantissem o funcionamento adequado 
das soluções.
No ano de 1981, a Microsoft lançou o seu Sistema Operacional (SO) MS-DOS que, 
na verdade, havia sido adquirido da Seattle Computer Products, em 1980. Em 1984, a 
Apple lançou o SO Macintosh OS 1.0, o primeiro a ter uma interface. A Microsoft, no ano 
de 1985, lançou o Windows 1.0, seu primeiro SO com interface gráfica. No ano de 1987,a IBM e a Microsoft apresentam o OS/2, um sistema multitarefa destinado a substituir 
o MS-DOS e o Windows. Em 1991, Linus Torvalds, um estudante de graduação finlandês, 
lançou na rede Usenet o núcleo 0.01 do Linux, que logo foi adotado por centenas de 
programadores ao redor do mundo. 
O ano de 1993 é marcado por inovações, de um lado temos a Microsoft com o 
Windows NT, o primeiro SO 32 bits, e de outro, o lançamento do SO UNIX de código aberto. 
Em 1995, a Microsoft lançou o Windows 95, com uma interface totalmente inovadora. Em 
2001, temos a Microsoft com o Windows XP e a Apple com o MacOS X. Os Sistemas 
Operacionais da Microsoft mantiveram um padrão que vinha desde o Windows 95. O 
Windows 8, lançado em 2012, apresentava um design minimalista que não foi bem aceito 
pelos usuários. O sistema operacional sucessor ao Windows 8.1, até os atuais, manteve 
as características dos SOs anteriores à versão do 8.0, caracterizada sempre pelo botão 
iniciar que não tinha na versão do SO Windows 8.0. 
A evolução dos sistemas operacionais foi de fundamental importância para o 
desenvolvimento da engenharia de software, pois associado a eles, diversas linguagens 
de programação foram implementadas. Quando a interface era caractere, a linguagem 
de programação COBOL, ainda usada no segmento de sistemas bancários, foi por muitos 
anos a escolhida pelos desenvolvedores de sistemas comerciais. Com o surgimento da 
interface gráfica, sugiram opções como o Visual Objects, o Visual Basic, o Visual FoxPro 
(descontinuado em 2015), o Delphi, entre outras.
Se antigamente o desenvolvimento de aplicações para software limitava-se apenas 
à tela de um computador desktop, hoje, as aplicações têm uma grande variedade de 
dispositivos, tais como tablets, celulares, painéis etc.
São mais oportunidades surgindo para os profissionais de TIC numa área – engenharia 
de software – que não para de evoluir. Se na década de 60 houve a crise do software, 
existe a possibilidade – considerando a grande demanda de soluções – da crise pela mão 
de obra de desenvolvimento de software.
Concluímos aqui o conteúdo sobre a história da evolução do software. Onde você 
conheceu alguns marcos da história da área de Tecnologia da Informação e Comunicação 
(TIC).
Para complementar o seu estudo e aprendizado, continue com pesquisas e leituras 
complementares sobre a temática.
Bons estudos e até o nosso próximo encontro!
Referências da unidade:
9 profissionais de TI mais demandados no Brasil em 2019. CIO, 2018. Disponível 
em: https://bit.ly/3iwfQ30. Acesso em: 18 fev. 2020.
INTRODUÇÃO
Olá, aluno(a)! 
Você já parou para pensar em como um software é desenvolvido?
Se considerarmos todo o processo de criação de um produto de software, desde 
a concepção da ideia – ou necessidade – até a sua entrega, muitas são as etapas e 
pessoas envolvidas nesse processo.
Softwares são concebidos desde a década de 50, mas foi na década de 60 que 
começou a se discutir e criar modelos de processos voltados especificamente para o 
desenvolvimento de software.
O produto de software – estamos nos referindo ao sistema, à aplicação e ao 
programa – é complexo, não é algo palpável, é lógico, sua matéria-prima são trechos, 
dezenas, milhares (a depender da complexidade da solução que está sendo criada) de 
linhas de código de programação escritos numa determinada linguagem. 
Por ser algo lógico, fica difícil para as pessoas compreenderem o que será entregue. 
Ao contrário de áreas como a engenharia civil, em que o produto a ser entregue (casas, 
prédios, estradas, pontes etc.) é de fácil visualização, o software é mais difícil, pois as 
pessoas têm dificuldades em explicar suas necessidades, manifestar suas expectativas e 
deixar claro o que esperam.
Neste conteúdo, dedicaremos nossos estudos para conhecer os principais processos 
de desenvolvimento de software que ajudam na especificação do que deve ser produzido, 
garantindo assim que o produto atenda às necessidades e às expectativas de quem o 
está solicitando.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE:
ESTRUTURA E ORGANIZAÇÃO
Se durante o desenvolvimento de um software considerarmos a complexidade para 
a sua criação, torna-se imprescindível a utilização de um processo para apoiar a execução 
dos trabalhos.
É comum que mudanças ocorram durante a execução das atividades. Com o passar 
do tempo, e na medida em que as reuniões vão sendo realizadas, o cliente passa a entender 
melhor aquilo que será entregue e novas funcionalidades vão sendo requisitadas.
Fazendo uma analogia com a construção civil, antigamente as pessoas tinham de se 
conformar com o layout proposto pela empresa responsável pelo empreendimento. Hoje, 
mudanças podem ser feitas, mas somente no momento em que o projeto de engenharia 
ainda estiver na “planta”, ou seja, quando as obras de construção ainda não começaram. 
Contudo, no caso de projetos de software, ao contrário dos projetos de construção civil, 
as mudanças são do início ao fim. É por essa razão que as empresas produtoras de 
software estão investindo cada vez mais em processos de desenvolvimento.
Em um processo de desenvolvimento de software existem diversas atividades 
relacionadas que são necessárias para a construção de um produto de software. 
Para Sommerville (2011), existem muitos processos de software diferentes, mas 
todos devem incluir quatro atividades fundamentais para a engenharia de software:
1. Especificação de software – A funcionalidade do software e as restrições 
ao seu funcionamento devem ser definidas.
2. Projeto e implementação de software – O software deve ser produzido 
para atender às especificações.
3. Validação de software – O software deve ser validado para garantir que 
atenda às demandas do cliente.
4. Evolução de software - O software deve evoluir para atender às 
necessidades de mudança dos clientes.
Desde o levantamento de requisitos até a liberação da solução de sistema para 
o cliente, existirão diversas atividades. Essas atividades variam em levantamento das 
necessidades (requisitos), análise de sistemas (diagramas de classes e casos de uso), 
desenvolvimento de códigos e testes, além de verificação e validação do produto. Existem 
também as atividades de projetos (plano do projeto), como planejamento, execução, 
monitoramento e controle. 
Um software pode ser desenvolvido de várias formas, e dentro da Engenharia de 
Software existem sugestões de modelos que veremos a seguir, começando pelo modelo 
de desenvolvimento em cascata!
Figura 1: Exemplo de desenvolvimento
Fonte: Elaborado pelo autor
O modelo em cascata considera as atividades de especificação, desenvolvimento, 
validação e evolução, e representa cada uma delas como fases distintas, como: 
especificação de requisitos, projeto de software, implementação, teste, e assim por 
diante. O nome cascata ocorre em razão do encadeamento e da sequência entre uma 
fase e outra, ou seja, trata-se de um ciclo de vida de software. 
Os estágios do modelo representam as atividades de desenvolvimento, como 
“Definição de Requisitos”, “Projeto de Sistema e Software”, “Implementação e Teste 
Unitário”, “Integração e Teste de Sistema” e “Operação e Manutenção”. Em teoria, você 
só pode ir para o estágio seguinte quando concluir o anterior, pois um estágio só começa 
quando o outro termina. Na prática, existe a sobreposição desses estágios. Isso acontece 
porque durante o projeto, os problemas com os requisitos são identificados, durante 
a codificação, os problemas de projeto são encontrados, e assim por diante. Logo, o 
processo de software não é algo linear, mas o feedback de uma fase para outra.
Figura 2: Exemplo de desenvolvimento
Fonte: Elaborado pelo autor
Uma segunda opção de processo para desenvolvimento de software é o incremental. 
Esse modelo considera a ideia de desenvolver uma implementação inicial, expô-la aos 
comentários dos usuários e continuar por meio da criação de váriasversões até que um 
sistema adequado seja desenvolvido. Em vez de entregar todo o sistema ao cliente, a 
entrega ocorre por partes. Essa alternativa pode ser algo vantajoso para ambos os lados, 
pois o cliente recebe mais rápido a solução – ainda que em partes – e no caso de erros, 
será mais rápida a correção, pois há um espaço menor de tempo entre a produção, o teste 
e a entrega. Muitas empresas desenvolvedoras de software estão optando pelo modelo 
incremental devido a essa vantagem.
Figura 3: Exemplo de desenvolvimento
Fonte: Elaborado pelo autor
De uma maneira em geral, a maioria dos projetos de software acaba tendo algum 
reuso. Isso acontece porque as pessoas envolvidas no projeto sabem de projetos ou 
códigos semelhantes que podem atender a uma necessidade do projeto atual. O modelo 
de processo orientado a reuso é uma alternativa de desenvolvimento que busca fazer as 
modificações necessárias de sistemas já existentes, incorporando-as ao sistema que está 
sendo produzido. Um modelo de processo geral de desenvolvimento com base em reuso 
é formado pelos seguintes estágios:
1. Análise de componentes - Etapa em que é feita uma busca por 
componentes para implementar essa especificação;
2. Modificação de requisitos - Os requisitos são analisados com informações 
sobre os componentes que foram descobertos e, em seguida, serão modificados 
para refletir os componentes disponíveis. 
3. Projeto do sistema com reuso - Estágio onde o framework do sistema é 
projetado ou algo existente é reusado.
4. Desenvolvimento e integração - Software que não pode ser adquirido 
externamente é desenvolvido, e os componentes são integrados para criar o 
sistema.
Vale destacar que o reuso ocorre independentemente do processo de desenvolvimento 
que a empresa esteja aditando. Os processos de desenvolvimento de software com foco 
no reuso tornaram-se amplamente usados.
Figura 4: Exemplo de desenvolvimento
Fonte: Elaborado pelo autor
Para que um projeto de software tenha sucesso, torna-se imprescindível que suas 
funcionalidades sejam identificadas. A especificação de software ou engenharia de 
requisitos é o processo que ajuda a compreender a definição dos serviços, os requisitados 
do sistema e a identificação de restrições. Esse é um estágio crítico ao processo de 
software. Equívocos e erros nessa fase irão gerar problemas no projeto e na implementação 
do sistema. 
É importante destacar aqui que o processo de engenharia de requisitos busca 
produzir um documento de requisitos acordados que especifica um sistema que satisfaz 
os requisitos das partes interessadas (stakeholders). Existem quatro atividades principais 
do processo de engenharia de requisitos:
1. Estudo de viabilidade - É feita uma estimativa para satisfazer as 
necessidades do usuário identificado. O estudo considera se o sistema proposto 
será rentável ao negócio e se é possível desenvolve-lo;
2. Elicitação e análise de requisitos - Etapa de derivação dos requisitos do 
sistema. Pode envolver o desenvolvimento de um ou mais modelos de protótipos 
que ajudam a entender o sistema a ser desenvolvido;
3. Especificação de requisitos - Atividade que traduz as informações obtidas 
durante a atividade de análise em um documento que defina um conjunto de 
requisitos; 
4. Validação de requisitos - Verifica os requisitos quanto a realismo, 
consistência e completude. Durante esse processo, erros são descobertos e 
modificações para correção dos problemas são implementadas. 
As atividades no processo de requisitos não são feitas em apenas uma sequência, 
pois elas continuam durante a definição e a especificação. Em razão da compressão que o 
cliente vai adquirindo, novos requisitos surgem durante o processo, portanto, as atividades 
de análise, a definição e a especificação são intercaladas. De acordo com Sommerville 
(2011), nos métodos ágeis, como extreme programming, os requisitos são desenvolvidos de 
forma incremental, de acordo com as prioridades do usuário, e a elicitação de requisitos 
é feita pelos usuários que integram a equipe de desenvolvimento.
Os processos de desenvolvimento de software não se limitam aos que foram 
apresentados anteriormente. Esses são apenas os mais comuns utilizados pelas empresas. 
A depender do segmento que está produzindo o software, poderão existir modelos 
especializados para atender a necessidade de desenvolvimento.
Dificilmente uma empresa adotará um único modelo, e sim uma combinação deles. 
Num estágio inicial para desenvolvimento de um novo produto, a empresa iniciará com 
a especificação de software ou a engenharia de requisitos. Cumprida essa etapa, ela 
poderá adotar o modelo incremental para desenvolver uma implementação inicial e, na 
medida em que a compreensão for aumentando associada ao entendimento do produto 
que será entregue, será possível mesclar com o modelo em cascata, permitindo-se um 
desenvolvimento sequencial, em etapas. A depender da empresa, no caso de já haver a 
experiência de desenvolvimento de muitos sistemas, ela ainda poderá recorrer ao reuso.
Daí vem a importância de você, aluno, conhecer vários modelos para o desenvolvimento 
de software, pois dependendo da situação, um poderá ser mais aplicável ou vantajoso 
que outro.
Ufa! Concluímos nossa leitura sobre o processo de desenvolvimento de software 
considerando a sua estrutura e organização. Perceba que a Engenharia de Software 
apresentou muitas alternativas e detalhes sobre o processo de desenvolvimento de 
software, e será assim para as outras áreas cobertas por essa disciplina, que tem como 
característica essa riqueza de informações.
Como de costume – e sem perder a prática – para dar continuidade e profundidade 
a construção do seu conhecimento sobre o assunto, faça pesquisas e busque por leituras 
complementares.
Um grande abraço e até um próximo encontro!
Referências da unidade:
PRESSMAN, R. S. Engenharia de software: Uma Abordagem Profissional. 8. ed. 
São Paulo: AMGH Editora Ltda, 2016.
SOMMERVILLE, I. Engenharia de software. São Paulo: Pearson, 2011.
INTRODUÇÃO
Olá, aluno(a)! 
Neste conteúdo, estudaremos as etapas do processo de desenvolvimento de 
software!
Antes que um software possa ser utilizado, ele passa por diversas etapas até que 
finalmente tenha suas funcionalidades implementadas e disponibilizadas para uso. Fazer 
ou ignorar uma ou mais dessas etapas impactará diretamente na qualidade do aplicativo 
de software. 
Qualquer empresa que busca organizar sua rotina de atividades com a utilização 
de práticas orientadas por processos está preocupada com a melhoria dos seus serviços. 
As práticas de processo de software objetivam alcançar resultados satisfatórios de 
qualidade do produto – a aplicação de software – entregando dentro do prazo e do 
orçamento previsto.
DESENVOLVIMENTO DE SOFTWARE: ORGANIZAÇÃO E 
FERRAMENTAS
O processo de desenvolvimento de software pode ser definido como um conjunto 
de passos e atividades ordenadas para atingir um resultado – a entrega do produto 
de software. São etapas que envolvem atividades, restrições, recursos que podem ser 
financeiros, pessoas e insumos (ferramentas de apoio, computadores, servidores etc.).
Existem diversas abordagens, práticas e orientações voltadas para o processo 
de desenvolvimento de software. Algumas mais simples, e outras envolvendo um grau 
maior de complexidade e sofisticação. A escolha dependerá do contexto da empresa 
produtora de software e de variáveis, como quantidade de pessoas (analistas de 
sistemas, desenvolvedores, testadores e gerentes de projetos), segmento do produto, 
cliente e criticidade do negócio, que influenciarão na escolha da abordagem do processo 
de desenvolvimento de software.
Independente do modelo de processo adotado, todos eles tenderão a ter 
características como especificação, projeto e implementação, validação e evolução. 
O termo especificação pode ser interpretado de diferentes maneiras. Para algumaspessoas, especificação significa um documento escrito, enquanto para outras, pode ser 
gráficos e modelo matemático, no entanto, para o desenvolvedor, a especificação pode 
ter o sentido de casos de uso (use case). Segundo Sommerville (2011), a especificação 
de requisitos é um processo de compreensão e definição dos serviços requisitados do 
sistema e a identificação de restrições relativas à operação e ao desenvolvimento do 
sistema. Sommerville (2011) sugere (Figura 1) quatro processos para a especificação de 
requisitos:
• Estudo de viabilidade - Estimativa para avaliar se o sistema proposto 
será rentável a partir do ponto de vista de negócio;
• Elicitação e Análise de Requisitos – São levantados os requisitos do 
sistema por meio da observação, da análise de sistemas existentes e das 
reuniões de discussões com os potenciais usuários e compradores;
• Especificação de requisitos - Traduz as informações obtidas na etapa 
de análise em um documento de requisitos. Os requisitos podem ser do tipo 
usuário, que são declarações abstratas dos requisitos do sistema para o cliente, 
e requisitos de sistema, que são uma descrição mais detalhada da funcionalidade 
a ser provida;
• A validação de requisitos - Verifica os requisitos quanto ao realismo, à 
consistência e à completude.
Figura 1: Os requisitos da engenharia de processos
Fonte: Sommerville (2011)
A formalidade e o formato de uma especificação variam de acordo com o tamanho 
e a complexidade do software a ser desenvolvido.
O projeto e a implementação formam o processo que literalmente converte 
aquilo que foi especificado em um sistema executável. É nessa etapa que acontece o 
desenvolvimento e a programação propriamente dita. As atividades podem variar, tudo 
depende do tipo de sistema a ser desenvolvido. A Figura 2 mostra as atividades que 
podem ser parte do processo de sistemas de informação:
• Projeto de arquitetura - Identifica a estrutura geral do sistema, os 
componentes principais (subsistemas ou módulos), relacionamentos e como 
ocorre a distribuição;
• Projeto de interface - Define as interfaces entre os componentes do 
sistema, o reaproveitamento e o desenvolvimento simultâneo;
• Projeto de componente - É a projeção do funcionamento de cada 
componente do sistema. Pode ser uma funcionalidade a ser implementada ou 
uma lista de alterações a serem feitas em um componente de reuso;
• Projeto de banco de dados - Projeção das estruturas de dados do sistema 
e como eles devem ser representados em um banco de dados. 
Figura 2: Modelo geral do processo de projeto
Fonte: Sommerville (2011)
A validação do software – também comumente chamada de verificação e validação 
(V&V) – objetiva mostrar que a solução de software se adequa às necessidades do cliente. 
É aqui que ocorrem os testes e as simulações para garantir a validação do produto. A 
validação também pode envolver processos de verificação, como inspeções e revisões, em 
cada estágio do processo de software, desde a definição dos requisitos de usuários até 
o desenvolvimento do programa.
Poderão existir estágios e processos de testes (Figura 3). Os mais comuns são:
• Testes de desenvolvimento - Os componentes do sistema são testados 
pelas mesmas pessoas que o desenvolveram. Cada componente é testado de 
forma independente, separado dos outros;
• Testes de sistema - Enquanto o teste de desenvolvimento é isolado, os 
de sistema são integrados. Nessa etapa, existe a preocupação de encontrar 
erros oriundos das interações – interfaces – entre os componentes. Também visa 
mostrar que o sistema satisfaz seus requisitos funcionais e não funcionais, bem 
como testar as propriedades emergentes do sistema;
• Testes de aceitação - É o estágio final para que o sistema seja aceito 
e liberado para uso. Os testes de aceitação devem ser realizados com dados 
fornecidos pelo cliente. Não será possível garantir a sua validade se os dados 
se limitarem a simulações que considerem apenas dados oriundos dos testes 
simulados.
Figura 3: Fases de testes de um processo de software dirigido a planos
Fonte: Sommerville (2011)
As etapas de especificação, de projeto e implementação e de validação são 
fundamentais para gerar a primeira versão do software. Contudo, devemos lembrar que 
a solução passará por mudanças e alterações, em outras palavras, estamos tratando da 
evolução do software. 
Pressman (2016) afirma que a evolução de um projeto de software é um processo 
contínuo que já atinge mais de seis décadas. Para ele, a evolução de produtos e sistemas 
baseados em computador é uma das mais importantes tecnologias no cenário mundial. 
Já Sommerville (2011) (Figura 4), diz que a flexibilidade dos sistemas de software é uma 
das principais razões pelas quais os softwares vêm sendo, cada vez mais, incorporados 
em sistemas grandes e complexos.
Figura 4: Evolução do sistema
Fonte: Sommerville (2011)
Na história do software, sempre houve uma separação entre a etapa de 
desenvolvimento, a de evolução do software e a de manutenção da solução, que algumas 
empresas chamam de sustentação. O desenvolvimento do software é um ciclo criativo em 
que o sistema é desenvolvido e a solução “nasce”. Ocorre apenas uma vez! Depois disso, 
começa a fase de manutenção do software, que é extensa e depende da utilidade do 
software – uma solução de CRM – que pode ter várias repetições do ciclo de manutenção, 
podendo tornar essa fase um processo desinteressante. Embora os custos de manutenção 
possam vir a ser mais altos que os custos iniciais de desenvolvimento, os processos de 
manutenção são, em alguns casos, menos desafiadores do que o desenvolvimento da 
solução original.
Para Sommerville (2011), a distinção entre o desenvolvimento e a manutenção é 
cada vez mais irrelevante. Poucos sistemas de software são totalmente novos, e faz muito 
mais sentido ver o desenvolvimento e a manutenção como processos contínuos. Em vez 
de dois processos separados, é mais realista ver a engenharia de software como um 
processo evolutivo (Figura 4), no qual o software é constantemente alterado durante seu 
período de vida em resposta às mudanças de requisitos e às necessidades do cliente.
Toda nova solução de software passará pelas etapas de especificação, projeto e 
implementação e validação. Após isso, entrará num ciclo de evolução. Essa última, a mais 
longa de todas, pois existirão evoluções de tecnologia, alterações nas leis e aspectos 
jurídicos que a solução de software precisará se adaptar para responder às mudanças e 
às necessidades do cliente. Lembre-se de que em projetos de software, as mudanças são 
inevitáveis.
Compreender cada uma dessas etapas e a sua importância para o desenvolvimento 
de software é fundamental para a criação de software com alto padrão de qualidade. 
Uma etapa de validação fraca, com poucos testes, considerando dados apenas de 
desenvolvimento e sistema, poderá fazer com que um software defeituoso chegue até o 
cliente. Ganhar tempo ao custo do comprometimento de etapas como a especificação, 
projeto e implementação, poderá gerar uma solução que não atende às expectativas do 
cliente.
Cada uma dessas etapas tem o seu valor e a sua contribuição para o sucesso do 
software. Como dito anteriormente, no início dos estudos dessa unidade, existem diversas 
abordagens, práticas e orientações voltadas para o processo de desenvolvimento de 
software. A escolha dependerá do contexto da empresa, mas a equipe deve garantir que 
os processos sejam seguidos para que o resultado seja um software com altos padrões 
de qualidade.
Muito bem, concluímos aqui os estudos sobre o processo de desenvolvimento de 
software considerando a sua organização. É importante sempre que você complemente 
os seus estudos com pesquisas e leituras complementares.
Bons estudos e até um próximo encontro!
Referências da unidade:
PRESSMAN, R. S. Engenharia de software: Uma Abordagem Profissional. 8. ed. 
São Paulo: AMGH EditoraLtda, 2016.
SOMMERVILLE, I. Engenharia de software. São Paulo: Pearson, 2011.
INTRODUÇÃO
Neste conteúdo, estudaremos outro aspecto de relevância para o desenvolvimento 
de software: os fluxos dos processos.
Assim como existem propostas de desenvolvimento (cascata, incremental, orientado 
a reuso) e etapas (especificação, projeto e implementação, validação e evolução), existem 
as opções de fluxos de processos, que influenciarão na forma de trabalho das atividades 
de desenvolvimento de software.
É importante que você estudante perceba a quantidade de elementos – processos, 
etapas, fluxos – que existem para dar suporte à criação de uma solução de software. 
Mas qual a razão de tantos recursos assim?
Organização!
Todo esse conjunto de práticas existe para organizar o trabalho na área de engenharia 
de software. O software, por ser algo complexo, está exposto a falhas e problemas que 
podem comprometer o produto. As práticas de desenvolvimento, as etapas e os fluxos de 
processos existem para ajudar na entrega de um produto com altos padrões de qualidade. 
MODELOS DE PROCESSOS DE SOFTWARE. PROCESSO LINEAR X 
PROCESSO EVOLUTIVO. MODELO DE PROCESSO EM CASCATA. 
MODELO DE PROCESSO EVOLUCIONÁRIO
Os modelos de processo foram criados com o objetivo de organizar a área de 
desenvolvimento de software. Esses modelos têm contribuído significativamente com o 
trabalho de engenharia de software e fornecem orientações e boas práticas para as 
equipes de desenvolvimento. 
De uma forma geral – e não apenas para a área de engenharia de software – a adoção 
de processos na rotina de trabalho proporciona estabilidade, controle e organização das 
atividades. A sua ausência pode tornar a execução das atividades bastante caótica, 
pois não haverá organização e cada um fará da maneira que mais for conveniente. Um 
modelo de processo fornece os “passos” necessários para a realização de um trabalho de 
engenharia de software disciplinado. 
Os fluxos de processos existem para ajudar a rotina de trabalho das empresas e 
prover maior eficiência na rotina de trabalho da equipe de desenvolvimento. De acordo 
com o modelo CMMI (2010), iniciativas de melhoria de processo bem-sucedidas devem 
ser condicionadas pelos objetivos estratégicos da organização.
O cumprimento de prazos, a entrega dentro de um orçamento previsto e a qualidade 
do produto fornecido são os melhores indicadores de eficácia e eficiência do processo 
utilizado pela organização.
Um aspecto de grande relevância no desenvolvimento de software são os fluxos de 
processos. Os fluxos de processos lineares em relação ao processo de software descrevem 
como são organizadas as atividades, as ações e as tarefas que ocorrem dentro de cada 
atividade em relação à sequência e ao planejamento de tempo (Figura 1).
Figura 1: Fluxo de processos linear
Fonte: Pressman (2016)
Nesse modelo, o fluxo de atividades é executado em sequência, começando com a 
comunicação e terminando com a entrega (Figura 1). Já em um fluxo de processo iterativo 
(Figura 2), existe a repetição de uma ou mais atividades antes de prosseguir para a 
seguinte. 
Figura 2: Fluxo de processos iterativo
Fonte: Pressman (2016)
Um fluxo de processos evolucionário executa as atividades de forma “circular”. Cada 
volta produz uma versão mais completa do software (Figura 3). 
Figura 3: Fluxo de processos circular
Fonte: Pressman (2016)
Um fluxo de processos paralelo executa uma ou mais atividades em paralelo a 
outras, conforme apresentado na Figura 4.
Figura 4: Fluxo de processos em paralelo
Fonte: Pressman (2016)
O modelo de desenvolvimento em cascata, algumas vezes chamado de ciclo de vida 
clássico, sugere uma abordagem de fluxo de processos linear para o desenvolvimento 
de software, que inicia com a especificação dos requisitos, avança pelas fases de 
planejamento, modelagem, construção e disponibilização, chegando na etapa do suporte 
contínuo do software. 
Já o modelo incremental, em que os fluxos das atividades são intercalados, e não 
separados, existe um rápido feedback entre todas as tarefas, e vimos também o modelo 
orientado a reuso, em que existe um aproveitamento de códigos que podem atender a 
uma necessidade do projeto atual.
Sugiro, neste momento, aprofundarmos nossos conhecimentos sobre o modelo espiral 
(Figura 5), que é uma abordagem para o desenvolvimento de sistemas e de software em 
larga escala. Ao contrário do modelo em cascata, em que o fluxo de processo é linear, o 
modelo espiral combinará os fluxos de processos.
Figura 5: Modelo em espiral de processo de software de Boehm (©IEEE 1988)
Fonte: Sommerville (2011)
De acordo com Pressman (2016), o modelo espiral, originalmente proposto por 
Barry Boehm, é um modelo de processo de software evolucionário que une a natureza 
iterativa da prototipação aos aspectos sistemáticos e controlados do modelo cascata. 
Tem potencial para o rápido desenvolvimento de versões cada vez mais completas do 
software. 
No modelo espiral, o software é desenvolvido de forma evolucionária, pois a cada 
iteração existe uma evolução do software. Nas primeiras iterações, a versão pode consistir 
em um modelo ou em um protótipo. Já nas iterações posteriores, são produzidas versões 
cada vez mais completas do sistema, que passa pelo processo de engenharia.
Segundo Pressman (2011), o modelo espiral é dividido em um conjunto de atividades 
metodológicas definidas pela equipe de engenharia de software. A equipe de software 
realiza as atividades indicadas por um circuito em torno da espiral (Figura 5), no sentido 
horário, começando pelo seu centro. Os riscos são levados em conta à medida que cada 
revolução é realizada. 
Ao contrário de outros modelos de desenvolvimento, que terminam quando o 
software é entregue, o modelo espiral possibilita uma adaptação que pode ser aplicada 
ao longo da vida da solução de software. No primeiro circuito, podemos ter um “projeto 
mais conceitual”, que começa no centro da espiral e vai se desenvolvendo pelas várias 
iterações até que o desenvolvimento de conceitos seja concluído. Se o conceito for 
um produto final, o processo continua pelas “bordas” da espiral e um novo projeto de 
desenvolvimento de produto se inicia.
O novo produto terá a sua evolução, que passará pelas iterações ao redor da espiral. 
Na sequência, uma volta em torno da espiral pode ser usada para representar um projeto 
de aperfeiçoamento do produto de software. Essa é a lógica de trabalho do modelo 
espiral que permanece em operação e seguirá assim até que a solução do software seja 
retirada de uso, ou até que a empresa encerre as manutenções e as atualizações do 
produto.
Um modelo de processo fornece orientações para o trabalho, define o fluxo de 
atividades e a iteração entre os papéis (analista de requisitos, analista de sistemas, 
desenvolvedor e testador), sugere modelos de artefatos e organiza o trabalho a ser 
desenvolvido.
É normal – e as vezes necessário – que um modelo de processo seja adaptado 
às necessidades da empresa, pois cada organização tem a sua forma de trabalho e, 
consequentemente, as suas particularidades.
Como sempre, deve-se considerar a empresa, o segmento de software por ela 
desenvolvido, o perfil de seus clientes e a criticidade do negócio, a fim de que os fluxos 
de processos possam contribuir para a qualidade do produto entregue.
Concluímos aqui nossos estudos sobre os modelos de processos de software. Para 
complementar o seu aprendizado, faça pesquisas e leituras complementares.
Bons estudos e até um próximo encontro.
Referências da unidade:
PRESSMAN, R. S. Engenharia de software: Uma Abordagem Profissional. 8. ed. 
São Paulo: AMGH Editora Ltda, 2016.
Software Engineering Institute – SEI. “CMMI for Development, Version 1.3”, CMMI-
-DEV V1.3, CMU/SEI 2010-TR-033, Relatório Técnico. Carnegie Mellon University, 
2010.
SOMMERVILLE, I. Engenharia de software. São Paulo: Pearson, 2011.
EXEMPLOS DE PROCESSODE DESENVOLVIMENTO SOFTWARE. 
MÉTODO ÁGIL X MÉTODO PREDITIVO.
Olá, aluno(a)! 
Nesta leitura, estudaremos métodos ágeis e faremos uma referência ao método 
preditivo. Consideremos que o método preditivo, é o modelo mais formal para o 
desenvolvimento de software.
É bem verdade que o cenário atual exige um modelo ágil para a produção de software, 
mas existirão situações, principalmente aquelas em que os projetos são complexos, em 
que o modelo ágil poderá não ser o mais adequado. Portanto, é importante que você, 
estudante de engenharia de software, conheça os dois modelos para saber se adequar 
em qualquer tipo de situação.
Para Pressman (2016), um modelo de processo preditivo concentra-se em 
estruturar e ordenar o desenvolvimento de software. As atividades e as tarefas ocorrem 
sequencialmente, com diretrizes de progresso definidas. 
O termo “preditivo” é atribuído porque prescreve um conjunto de elementos de 
processo – atividades metodológicas, ações de engenharia de software, tarefas, artefatos, 
garantia da qualidade e mecanismos de controle de mudanças para cada projeto. Cada 
modelo de processo também prescreve um fluxo de processo (também denominado fluxo 
de trabalho) – ou seja, a forma pela qual os elementos do processo estão relacionados.
De acordo com Pressman (2016), os modelos de processo preditivos são, algumas 
vezes, conhecidos como modelos de processo “tradicionais”. Eles definem um conjunto 
prescrito de elementos de processo e um fluxo de trabalho de processo previsível. São 
aplicados há anos e buscam continuamente organizar e estruturar o desenvolvimento 
de software. Existem diversos modelos com diferentes abordagens, mas todos realizam 
o mesmo conjunto de atividades com objetivos genéricos, tais como a comunicação, o 
planejamento, a modelagem, a construção e a disponibilização da solução de software.
O modelo cascata, incremental e evolucionário (modelo espiral) são exemplos de 
processos preditivos de desenvolvimento de software.
No cenário atual, as empresas 
operam em um ambiente global que exige 
mudanças rápidas. Isso faz com que essas 
empresas necessitem responder a novas 
oportunidades em diferentes mercados. 
Os produtos de softwares fazem parte 
das operações de negócios, assim, surge 
a necessidade de que novos softwares 
sejam desenvolvidos num intervalo de 
tempo cada vez menor, pois somente 
dessa forma poderão aproveitar as 
oportunidades e responder às pressões 
dos concorrentes. 
A capacidade de ter um processo 
de desenvolvimento e de entrega rápidos 
são diferenciais e, por assim dizer, um 
requisito crítico para o desenvolvimento 
das soluções de software. Sendo assim, 
empresas que usam métodos preditivos 
passaram a utilizar métodos ágeis para o 
desenvolvimento de software.
Existem diversas abordagens ágeis, o Extreme Programming (XP) é talvez o mais 
conhecido e utilizado dos métodos ágeis. De acordo com Pressman (2016), o nome 
foi cunhado pelo engenheiro de software americano Kent Beck, pois a abordagem foi 
desenvolvida para impulsionar práticas reconhecidamente boas, como o desenvolvimento 
iterativo a níveis “extremos”. Por exemplo, em XP, várias novas versões de um sistema 
podem ser desenvolvidas, integradas e testadas em um único dia, por programadores 
diferentes.
Na abordagem XP (Figura 1), os requisitos de software são tratados como cenários, 
também chamados de estórias do usuário, e são implementados diretamente como uma 
série de tarefas. Uma característica dessa abordagem é o fato dos desenvolvedores 
trabalharem em pares. Os testes são criados para cada tarefa antes de escreverem o 
código. Há um curto intervalo entre as releases (entregas ou lançamentos) do produto de 
software.
Outra abordagem ágil é o método Scrum!
O nome Scrum provém de uma atividade que ocorre durante a partida do jogo de 
rúgbi. Esse método de desenvolvimento ágil de software foi concebido por Jeff Sutherland 
e sua equipe de desenvolvimento no início dos anos 1990.
Segundo Sommerville (2011), os princípios do Scrum são usados para orientar 
as atividades de desenvolvimento dentro de um processo que incorpora as seguintes 
atividades metodológicas: requisitos, análise, projeto, evolução e entrega. Em cada 
atividade metodológica, ocorrem tarefas realizadas dentro de um padrão de processo 
Figura 1: O ciclo de um release em Extreme Programming
Fonte: Pressman (2016)
chamado sprint. O trabalho realizado dentro de um sprint é adaptado ao problema em 
questão, definido e, muitas vezes, modificado em tempo real pela equipe Scrum. 
O Scrum utiliza um conjunto de padrões de processos de software que tem 
demostrado eficácia para projetos com prazos agressivos e requisitos mutáveis. Cada 
um desses padrões de processos define um conjunto de atividades de desenvolvimento:
1. Backlog – É a lista com prioridades dos requisitos ou das funcionalidades 
do projeto que fornecem valor comercial ao cliente;
2. Sprints – São unidades de trabalho solicitadas para atingir um requisito 
estabelecido no registro de trabalho – o backlog – e que precisam ser ajustadas 
dentro de um prazo já fechado – uma janela de tempo – ou time box, que 
tipicamente pode durar até 30 dias.
O número de sprints necessários para cada atividade metodológica varia dependendo 
do tamanho e da complexidade do produto.
Figura 2: Fluxo do processo Scrum
Fonte: Sommerville (2011)
O Método de Desenvolvimento de Sistemas Dinâmicos ou Dynamic Systems 
Development Method (DSDM) é outra abordagem de desenvolvimento de software ágil. O 
DSDM considera o princípio de Pareto – regra do 80-20 – ou seja, 80% de uma aplicação 
pode ser entregue em 20% do tempo que levaria para entregar a aplicação completa. 
Trata-se de um processo de software iterativo, e cada iteração segue a regra dos 80%, 
enquanto os 20% restantes poderão ser concluídos quando outros requisitos do negócio 
forem conhecidos ou alterações tiverem sido solicitadas pelo cliente.
Para Sommerville (2011), os métodos ágeis são métodos de desenvolvimento 
incremental que se concentram em desenvolvimento rápido, releases frequentes da 
solução de software, redução de overheads dos processos e produção de códigos de 
alta qualidade. São métodos que envolvem o cliente diretamente no processo de 
desenvolvimento.
É comum que pessoas e empresas confundam o termo “ágil” com fazer rápido, o que 
é um tremendo equívoco. Os métodos ágeis têm foco no produto e na entrega, e existe 
uma confiança entre fornecer e cliente, o que justifica menos documentação formal. 
“Ágil” também está relacionado com a capacidade de adaptação rápida da equipe às 
mudanças, e existe sim uma disciplina de processo que deve ser seguida para garantir a 
qualidade da entrega do produto de software. 
Na verdade, muitas empresas estão dispostas a trocar a qualidade e o compromisso 
com requisitos do software por uma implantação mais rápida do software. Essas empresas 
operam em um ambiente de mudanças rápidas e, por isso, muitas vezes, é praticamente 
impossível obter um conjunto completo de requisitos de software estável.
Devemos lembrar que o método preditivo é um modelo mais formal e que dependendo 
da complexidade da solução de software a ser desenvolvida, do escopo do projeto e do 
número de pessoas que participam do processo, esse modelo poderá ser o mais indicado 
para o trabalho.
Referências da unidade:
PRESSMAN, R. S. Engenharia de software: Uma Abordagem Profissional. 8. ed. 
São Paulo: AMGH Editora Ltda, 2016.
Software Engineering Institute – SEI. “CMMI for Development, Version 1.3”, CMMI-
-DEV V1.3, CMU/SEI 2010-TR-033, Relatório Técnico. Carnegie Mellon University, 
2010.
SOMMERVILLE, I. Engenharia de software. São Paulo: Pearson, 2011.
INTRODUÇÃO
Olá, aluno(a)! 
Este material dedica-se ao estudo de um dos itens mais críticos da engenharia de 
software: os requisitos. 
É comum que, ao pensar em requisitos de software pela primeira vez, as pessoassuponham que a engenharia de requisitos não seja difícil, afinal, entende-se que o cliente 
sabe aquilo que quer ou espera de um sistema de computador, não acha? Mas na prática, 
as coisas acontecem não acontecem bem assim!
Clientes têm dificuldades em expressar suas necessidades, e a pessoa responsável 
por entender essas necessidades e levantar os requisitos do sistema pode não perceber 
a dificuldade, ou não mudar a forma de abordagem para buscar compreender aquilo que 
o cliente espera que a solução de software faça, ou deveria fazer.
Perceba que a solução não depende apenas do cliente ou do profissional responsável 
por levantar os requisitos, mas de uma sintonia entre as duas partes, ou seja, o cliente 
conseguir explicar suas necessidades e o profissional de requisitos conseguir captar e 
buscar entender com mais detalhes o que o cliente está precisando e quais são as suas 
expetativas.
O assunto é complexo e não se trata apenas de uma solução técnica, pois há o 
fator humano envolvido, e isso requer alternativas de soluções diferentes. Talvez seja 
esse um dos fatores que torna a engenharia de requisitos um assunto tão vasto e algo 
tão interessante de ser estudado.
O QUE SÃO REQUISITOS DE SOFTWARE
A etapa referente à engenharia de requisitos começa com a concepção, etapa em 
que se define a abrangência e a natureza do problema a ser resolvido. Na sequência, há 
o levantamento de informações, que ajuda os envolvidos a definir o que é necessário e, 
em seguida, temos a etapa de elaboração, em que os requisitos básicos são refinados e 
modificados. 
À medida que as pessoas envolvidas vão definindo o problema, ocorre a negociação, 
em que são estabelecidas as prioridades, o que é essencial e quando deverá ser entregue. 
Finalmente, o problema é especificado e validado para garantir que o seu entendimento 
sobre o problema e o dos envolvidos coincidam. 
Na prática, pelo menos, deveria funcionar assim. No entanto, durante esse processo, 
o entendimento é alterado, pois as pessoas começam a ter uma compreensão melhor da 
solução e mudanças podem ser solicitadas. Mesmo que a especificação do problema ou 
a solução a ser desenvolvida seja identificada, poderão haver muitas discussões entre o 
cliente e o profissional responsável pelo levantamento de requisitos.
Para Pressman (2016), entender os requisitos de um problema está entre as tarefas 
mais difíceis enfrentadas por um engenheiro de software. O autor destaca também que 
é importante entender o que o cliente quer antes de começar a projetar e construir um 
sistema baseado em computador.
A engenharia de requisitos objetiva proporcionar um entendimento escrito do 
problema. Isso pode ser obtido por meio de uma série de artefatos: cenários de uso, listas 
de funções e características, modelos de análise ou uma especificação.
Esses artefatos, gerados pela engenharia de requisitos, são revisados com os 
envolvidos para garantir que aquilo que foi discutido com o cliente seja realmente aquilo 
que ele espera receber. É importante que isso seja tratado de forma minuciosa para que 
as expectativas com a solução de software não sejam frustradas. Pressman (2016) alerta 
para o fato de que mesmo depois de todas as partes terem entrado em acordo, as coisas 
vão mudar e continuarão mudando ao longo do projeto.
Segundo Pressman (2016), a engenharia de requisitos abrange sete tarefas distintas: 
concepção, levantamento, elaboração, negociação, especificação, validação e gestão. 
Algumas dessas tarefas podem ocorrer em paralelo e todas devem ser adaptadas às 
necessidades do projeto.
A concepção é o momento em que o projeto de software é iniciado. Essa tarefa pode 
acontecer de diversas formas, como numa conversa informal ou numa reunião formal de 
alinhamento, não existe regra para isso. De uma forma geral, a concepção pode vir do 
surgimento de uma necessidade do negócio, da descoberta de um novo serviço ou da 
identificação de um mercado em potencial. 
Quando um plano de negócio é definido, ou seja, o tamanho do mercado é 
identificado, uma análise de viabilidade é realizada e uma descrição operacional é gerada. 
Essas informações são de grande ajuda nas discussões com o cliente para se levantar 
os requisitos. Existe aqui uma elicitation, ou seja, uma investigação que busca entender 
os fluxos relevantes da solução, os aspectos técnicos e demais detalhes que ajudem a 
identificar os requisitos do projeto de software.
O levantamento é a etapa em que se deve identificar objetivos 
para o sistema ou produto de software, como as seguintes perguntas: 
O que deve ser obtido? Como o sistema deve atender às 
necessidades? Como o software será utilizado no dia a dia? 
Na teoria, essa tarefa é relativamente simples, contudo, na prática, os futuros 
usuários do sistema poderão ter dificuldades em responder com exatidão as perguntas 
feitas. Uma das justificativas para isso pode ser a dificuldade de se imaginar o software 
funcionando. Lembre-se de que estamos falando de um produto lógico, gerado por meio 
de códigos de programação. Se o produto a ser entregue fosse uma casa, a facilidade de 
visualização ajudaria consideravelmente no levantamento dos requisitos da residência, 
mas estamos falando de um software, logo, a abordagem deve ser diferente. Aqui, a 
experiência e o bom senso do profissional de tecnologia faz muita diferença.
Na etapa de elaboração, aquelas informações que foram obtidas junto ao 
cliente durante a concepção e o levantamento serão agora expandidas e refinadas. 
Nesse momento, existe o desenvolvimento de um modelo de requisitos que identifica 
características, funções e comportamentos referentes ao produto de software. Vale 
destacar que na etapa de elaboração são criados cenários que descrevem como os 
usuários – os atores – vão interagir com o sistema. A quantidade de cenários varia com a 
complexidade da solução.
Com a concepção, o levantamento e 
a elaboração, já haverá transcorrido tempo 
e oportunidades de amadurecimento 
suficientes para que os usuários comecem 
a compreender melhor a solução do 
produto de software. O cliente poderá 
pedir mais do que é possível entregar, 
poderá haver necessidades conflitantes 
e sugestões que fogem ao escopo do 
projeto. É nesse momento que acontece a 
etapa de negociação! 
Nessa etapa, é preciso conciliar 
esses conflitos, portanto, o processo 
de negociação será fundamental. Bons 
argumentos por parte do profissional 
de requisitos, consenso quanto à ordem 
dos requisitos, utilização de abordagens 
iterativas que ajudem na priorização dos 
requisitos e considerações quanto aos 
custos e riscos devem ser considerados 
para que os conflitos sejam tratados de 
modo que cada pessoa envolvida possa 
atingir um nível de satisfação.
Com os conflitos resolvidos, vamos para a etapa de especificação. Pressman (2016) 
afirma que no contexto de sistemas baseados em computador (e software), o termo 
especificação assume diferentes significados para diferentes pessoas. Especificação pode 
ser um documento por escrito, um conjunto de modelos gráficos, um modelo matemático 
formal, um conjunto de cenários de uso, um protótipo ou qualquer combinação dos fatores 
citados. 
De acordo com Pressman (2016), para sistemas grandes, um documento escrito, 
combinando descrições em linguagem natural e modelos gráficos, pode ser a melhor 
abordagem. Entretanto, talvez sejam necessários apenas cenários de uso para produtos 
ou sistemas menores que residam em ambientes técnicos bem compreendidos.
A etapa de validação é o momento em que os artefatos produzidos pela engenharia 
de requisitos terão sua qualidade avaliada. Nessa etapa, examina-se a especificação 
como forma de garantir que os requisitos do produto tenham sido declarados de forma 
não ambígua. A validação busca eliminar inconsistências e omissões, além de detectar e 
corrigir erros. Para Pressman (2016), o principal mecanismo de validaçãode requisitos é 
a revisão técnica.
A gestão de requisitos é um conjunto de atividades que identifica, controla e 
acompanha as necessidades e suas mudanças à medida que o projeto de software evolui. 
Com o tempo – e isso é quase certo de acontecer – os requisitos podem mudar e, por isso, 
torna-se necessária uma gestão para controlar essas mudanças.
Pressman (2016) sugere sete tarefas distintas para a engenharia de requisitos. 
Somado a isso, podemos acrescentar técnicas como brainstorm, delphi, fóruns de 
discussão, shadowing, mapas mentais e, ainda assim, algum requisito-chave pode passar 
desapercebido pela equipe.
Conforme comentamos no início de nosso estudo, o assunto é complexo e não se 
trata apenas de uma solução técnica, pois há o fator humano envolvido e isso requer 
alternativas de soluções diferentes. Talvez seja esse um dos fatores que torna a engenharia 
de requisitos um assunto tão vasto e algo tão interessante de se aprender.
Caro(o) aluno(a), você chegou ao final desse conteúdo, parabéns! Nele, você se 
aprofundou nos detalhes sobre os Requisitos de Software e entendeu a importância dos 
requisitos para um produto de software. Para complementar o seu aprendizado, continue 
com pesquisas e leituras complementares.
Até breve!
Referências da unidade:
PRESSMAN, R. S. Engenharia de software: Uma Abordagem Profissional. 8. ed. 
São Paulo: AMGH Editora Ltda, 2016.
Software Engineering Institute – SEI. “CMMI for Development, Version 1.3”, CMMI-
-DEV V1.3, CMU/SEI 2010-TR-033, Relatório Técnico. Carnegie Mellon University, 
2010.
SOMMERVILLE, I. Engenharia de software. São Paulo: Pearson, 2011.
A IMPORTÂNCIA E CLASSIFICAÇÕES: REQUISITO FUNCIONAL E 
REQUISITO NÃO-FUNCIONAL, REQUISITO NÃO-FUNCIONAL DE 
PRODUTO, ORGANIZACIONAL E EXTERNO
Olá, aluno(a)! 
Neste material trataremos sobre os requisitos de software, na tangente da 
classificação dos requisitos.
A capacidade de realizar uma boa avaliação de requisitos impactará diretamente 
na qualidade do produto de software. Por esse motivo, a engenharia de requisitos é algo 
completamente relevante para o desenvolvimento de sistemas.
De acordo com Sommerville (2011), os requisitos de um sistema são as descrições 
do que o sistema deve fazer, os serviços oferecidos e as restrições do seu funcionamento. 
Esses requisitos refletem as necessidades dos clientes para um sistema que serve a uma 
finalidade determinada, como controlar um dispositivo, colocar um pedido ou encontrar 
informações. 
O termo “requisito” não é usado de forma consistente pela indústria de 
software. Há casos em que o requisito é uma declaração abstrata em alto nível, 
um serviço que o sistema deve oferecer, uma restrição do sistema, uma definição 
detalhada e formal de um recurso ou uma função do sistema.
O levantamento de requisitos é crítico para o processo de construção de software. 
Equívocos nessa etapa comprometerão as demais subsequentes. Um dos problemas que 
surgem são as falhas em não fazer uma clara separação entre esses diferentes níveis 
de descrição. É sugerida uma distinção entre “requisitos de usuário” que expressará os 
requisitos abstratos de alto nível e “requisitos de sistema”, que expressará a descrição 
detalhada do que o sistema deve fazer. 
Os requisitos de usuário são declarações escritas numa linguagem natural com 
diagramas que expressam quais serviços a solução de software deverá fornecer a seus 
usuários, enquanto os requisitos de sistema são descrições mais detalhadas das funções 
dos serviços da solução de software. 
O documento de requisitos do sistema, também conhecido por especificação 
funcional, deve orientar com exatidão aquilo que deve ser implementado. Enquanto 
o requisito de usuário contém informações mais em alto nível, o requisito de sistema 
fornece uma informação mais específica sobre serviços e funções do sistema que devem 
ser implementados.
Sommerville (2011) destaca que diferentes níveis de requisitos são úteis, pois eles 
comunicam informações sobre o sistema para diferentes tipos de leitores. Eles precisam 
ser escritos em diferentes níveis de detalhamento, pois, dessa forma, diferentes leitores 
poderão usá-los de diversas maneiras. É importante destacar que os leitores dos 
requisitos de usuário não se preocupam com a forma como o sistema será implementado, 
logo, eles podem não estar interessados nos recursos detalhados do sistema. O mesmo 
não acontece com os leitores dos requisitos de sistema, pois esses precisam saber mais 
detalhadamente o que o sistema fará e como o sistema apoiará os processos de negócios.
Os requisitos de software são classificados como requisitos funcionais e requisitos 
não funcionais. Os requisitos funcionais são as declarações de serviços que o sistema 
deve fornecer, como o sistema deve reagir a entradas específicas e como o sistema deve 
se comportar em determinadas situações. Em alguns casos, os requisitos funcionais 
também podem explicitar o que o sistema não deve fazer. Em outras palavras, os requisitos 
funcionais de um sistema descrevem o que o sistema deve fazer.
Os requisitos não funcionais referem-se às restrições a serviços ou funções do sistema. 
As restrições podem ser de tempo, processamento ou normas legais. Por exemplo: o sistema 
processa documentos com até 1.000.000 (um milhão de registros). Trata-se de requisitos 
que não estão diretamente relacionados com os serviços oferecidos pelo sistema a seus 
usuários. Eles podem estar relacionados às propriedades, como confiabilidade, tempo de 
resposta e ocupação de área. Eles podem restringir as características do sistema como 
um todo, por exemplo, o desempenho, a proteção e a disponibilidade do sistema. Os 
requisitos não funcionais geralmente são mais críticos que os requisitos funcionais.
A Figura 1 apresenta a visão geral organizada com tipos de requisitos de software.
Figura 1: Visão geral dos tipos de requisitos de software
Fonte: elaborado pelo autor
Os requisitos não funcionais podem ser classificados em três tipos, definidos como:
1. Requisitos de produto – São provenientes das características requeridas 
para o produto de software. Eles especificam ou restringem o comportamento 
do software, como a rapidez com que o sistema deve executar uma consulta ou 
impressão de um relatório;
2. Requisitos organizacionais – São provenientes das organizações que 
desenvolvem o produto de software. Alguns exemplos desses requisitos são: a 
linguagem de programação, o ambiente de desenvolvimento e o processo de 
desenvolvimento que deverá ser seguido;
3. Requisitos externos – Abrangem todos os requisitos que se originam 
dos fatores externos ao sistema e ao seu processo de desenvolvimento, como 
aspectos legais, requisitos reguladores, normas a serem seguidas etc. Um 
sistema voltado para o segmento financeiro, por exemplo, deverá atender a 
exigências de um órgão regulador para essa área, o Banco Central.
É importante que você perceba a extensão e a complexidade desse assunto para o 
desenvolvimento das soluções de software.
Com isso concluímos que o requisito é uma etapa fundamental do processo de 
desenvolvimento de software. Uma informação mal compreendida, o esquecimento de 
um item de relevância para a solução e o levantamento de informações imprecisas são 
fatores que impactam o resultado do produto de software.
Por esses motivos, dedicamos o nosso estudo sobre a importância e os tipos de 
requisitos de software. Não é demais repetir que a capacidade de se realizar uma boa 
avaliação de requisitos impactará diretamente na qualidade do produto de software. Por 
isso, a engenharia de requisitos é algo tão relevante para o desenvolvimento de sistemas.
Para aprofundar seus conhecimentos sobre o assunto, continue nas suas pesquisas 
e leituras complementares. 
Bons estudos e até um próximo encontro!
Referências da unidade:
PRESSMAN, R. S. Engenharia de software: Uma Abordagem Profissional. 8. ed. 
São Paulo: AMGHEditora Ltda, 2016.
Software Engineering Institute – SEI. “CMMI for Development, Version 1.3”, CMMI-
-DEV V1.3, CMU/SEI 2010-TR-033, Relatório Técnico. Carnegie Mellon University, 
2010.
SOMMERVILLE, I. Engenharia de software. São Paulo: Pearson, 2011.
O QUE SÃO REQUISITOS BEM E MAL DESCRITOS
O que justifica haver tantos problemas com a engenharia de 
requisitos?
Ter um bom conhecimento técnico não é o suficiente para conseguir obter os requisitos 
dos clientes. Nesse processo – o de levantamento dos requisitos – existe uma série de 
fatores não técnicos envolvidos, e um desses, talvez o mais crítico, seja a comunicação!
Imagine uma entrevista em que o profissional de tecnologia 
está num processo de entrevista para levantar os requisitos do 
sistema de software. Esse profissional – que geralmente para essa 
função é o analista de negócios – está tendo dificuldades para 
entender as informações passadas pelo cliente. Para o cliente, não 
está claro o que o sistema deve gerar, quais relatórios devem ser 
produzidos, quais dados devem ser consultados e quais informações 
serão registradas na solução de software. Se esse processo continuar 
dessa forma, com dificuldade de se dizer o que se espera do sistema 
e com dificuldade de se entender o que precisa ser feito, haverá um 
registro de requisitos desorganizado. Mas por que isso acontece?
Os motivos são muitos, como o analista de negócios ter pouca experiência na 
função, não estar claro para o cliente o que precisa ser feito, a existência de precipitação 
por parte do cliente em chamar o profissional, ou a empresa de desenvolvimento, aquilo 
que precisa ser feito estar claro – mas apenas para uma pessoa da equipe ou, por fim, 
analistas e desenvolvedores pressionados por prazos querem começar a desenvolver 
antes do levantamento dos requisitos ter sido concluído! 
Uma das razões por tantos problemas com os requisitos de um software deve-se 
ao fato de se investir pouco tempo para entender aquilo que precisa ser feito. Clientes 
dedicam pouco tempo para debater as necessidades e empresas de solução de software 
reservam pouco tempo para compreender o que precisa ser feito. De uma forma geral, 
investe-se pouco na verificação daquilo que está sendo registrado. O resultado é a 
ausência de uma referência confiável do que precisa realmente ser feito e implementado 
para o produto de software. 
O resultado disso é a necessidade de se realizar outras reuniões para compreender 
melhor o que está sendo solicitado. Como se não bastasse, é comum que os clientes não 
tenham uma compreensão clara do que está sendo solicitado, existe uma vaga noção 
daquilo que precisa ser resolvido.
Requisitos equivocados resultam em software que não gera a solução esperada 
para o cliente. Isso envolve custo de retrabalho, desgaste da equipe e do cliente, 
comprometimento da imagem da empresa que está desenvolvendo o produto e atraso 
nos projetos de ambos os lados – cliente e fornecedor.
Situações como as citadas acima são corriqueiras na área de desenvolvimento de 
sistemas e, apesar das diversas técnicas e ferramentas para a lidar com esse tipo de 
questão, o problema continua a se repetir nos projetos de desenvolvimento de software.
A Figura 1 é um exemplo clássico utilizado para mostrar o processo de desenvolvimento 
do software desde a sua concepção – levantamento de requisitos –, momento em que o 
cliente explica para o analista de negócio (dependendo da empresa pode ser o gerente 
do projeto) o que ele espera e o analista registra o que entendeu, até a entrega do 
produto ao cliente.
Figura 1: Processo de desenvolvimento de software
Fonte: Startup Sorocaba¹
¹Disponível em< https://tinyurl.com/y9kbbb8q>. Acesso em 07/07/20
A engenharia de requisitos deve estabelecer uma ponte entre o demandante (o 
cliente) e o demandando (a empresa que desenvolverá o produto). Na teoria, é simples, 
mas na prática, surgem dúvidas como: 
Onde é o início dessa ponte? Quem define a necessidade do negócio? Quem define 
as restrições? O início dessa ponte ocorre por meio de uma definição mais genérica? 
O mercado tem respondido a isso com a oferta de soluções de aplicativos, técnicas 
e processos. Uma solução que tem surtido efeito é diminuir os ciclos de desenvolvimento 
dos produtos de software. Em vez de buscar compreender o produto como um todo e 
apresentar – após um longo tempo de desenvolvimento – a versão completa da solução 
que demandará diversos ajustes, entrega-se partes menores do produto. Essa prática 
apresenta diversas vantagens, pois em caso de erro, a solução será mais simples, devido 
a menos integrações entre componentes. O intervalo entre aquilo que foi desenvolvido e 
a solução chegar ao cliente é menor, portanto, será mais fácil relembrar o que foi feito. 
A compreensão do cliente evoluirá junto com a solução. Em caso de mudanças e 
implementação de novas funcionalidades, será mais fácil agregar a solução. Em partes 
menores, o gerenciamento será mais fácil, e a compreensão dos requisitos será mais 
precisa e completa.
A área de engenharia de software conta com modelos para avaliar a maturidade 
dos processos. Um deles é o Capability Maturity Model® Integration (CMMI). O CMMI 
é um modelo internacional de maturidade para melhoria de processo, destinado ao 
desenvolvimento de produtos e serviços, e composto pelas melhores práticas associadas 
a atividades de desenvolvimento e de manutenção que cobrem o ciclo de vida do produto 
desde a concepção, até a entrega e manutenção.
A engenharia de requisitos no modelo CMMI é representada por dois processos. O 
primeiro processo, Desenvolvimento de Requisitos, identifica as necessidades do cliente 
e traduz essas necessidades em requisitos de produto. O segundo processo, Gestão 
de Requisitos, assegura que as mudanças ocorridas nos requisitos sejam refletidas em 
planos, atividades e produtos de trabalho do projeto. Esses dois processos mostram a 
relevância do tema – engenharia de requisitos – para esse modelo internacionalmente 
adotado por diversas empresas.
Apesar de haver soluções de ferramentas para levantamento de requisitos do 
produto, modelos e boas práticas de processos, a atividade de se desenvolver um 
documento de requisitos de forma rápida e precisa ainda é um desafio para as equipes 
de desenvolvimento de software.
Concluímos aqui nossos estudos sobre a importância dos requisitos para o 
desenvolvimento de software. Para complementar o seu aprendizado, continue com 
pesquisas e leituras complementares.
Bons estudos!
Referências da unidade:
PRESSMAN, R. S. Engenharia de software: Uma Abordagem Profissional. 8. ed. 
São Paulo: AMGH Editora Ltda, 2016.
Software Engineering Institute – SEI. “CMMI for Development, Version 1.3”, CMMI-
-DEV V1.3, CMU/SEI 2010-TR-033, Relatório Técnico. Carnegie Mellon University, 
2010.
SOMMERVILLE, I. Engenharia de software. São Paulo: Pearson, 2011.
INTRODUÇÃO
Olá, estudante! Bem-vindo(a). Aprenderemos sobre o Processo Unificado, que é um 
modelo de desenvolvimento de sistemas organizado em fases (Concepção, Elaboração, 
Construção, Transição e Produção), interações - conjuntos de casos de uso – e os 
incrementos.
O Processo Unificado tem como objetivo aproveitar os melhores recursos e 
características dos modelos tradicionais de processo de software sendo assim, um 
complemento fundamental para a evolução do nosso aprendizado.
O PROCESSO UNIFICADO DE SOFTWARE
Segundo Pressman (2016), o Processo Unificado (Unified Process - UP) de 
desenvolvimento de software é o conjunto de atividades necessárias para transformar 
requisitos do usuário em um sistema de software. Para Pressman, o UP de desenvolvimento 
de sistemas combina os ciclos iterativo e incremental para a construção de softwares. É 
fundamental na visão de que o avanço de um projeto deve estar baseado na construção 
de artefatos de software e não apenas em documentação.
O Processo Unificado é um modelo

Outros materiais