Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Metodologia de 
Desenvolvimento de 
Sistemas 
Metodologia de 
Desenvolvimento de 
Sistemas 
1ª edição
2019
Autoria
Parecerista Validador
Samira Santos da Silva
Sandra Gavioli Puga / José Leão
*Todos os gráficos, tabelas e esquemas são creditados à autoria, salvo quando indicada a referência.
Informamos que é de inteira responsabilidade da autoria a emissão de conceitos. Nenhuma parte
desta publicação poderá ser reproduzida por qualquer meio ou forma sem autorização. A violação dos
direitos autorais é crime estabelecido pela Lei n.º 9.610/98 e punido pelo artigo 184 do Código Penal.
4
Sumário
Sumário
Unidade 1
1. Histórico do Desenvolvimento de Software ...........8
Unidade 2
2. Fundamentos de Desenvolvimento de Software ..22
Unidade 3
3. Modelos do Ciclo de Vida de Projetos de 
Desenvolvimento de Software .................................................35
Unidade 4
4. Modelos MDS ............................................................50
Unidade 5
5. Processos de MDS .....................................................63
Unidade 6
6. Tipos MDS .................................................................77
5
Sumário
Unidade 7
7. Qualidade em MDS ...................................................91
Unidade 8
8. Estudos de Casos com Uso de Software CASE .. 105
6
Palavras do professor
Seja bem-vindo à disciplina de Metodologia de Desenvolvimento de 
Sistemas. A proposta principal deste estudo é abordar os diversos 
conceitos referentes às metodologias existentes para o desenvolvimento 
de softwares, de forma a levá-lo à plena compreensão e utilização dessas 
metodologias em possíveis projetos durante sua carreira acadêmica e 
profissional. Assim, você estará preparado para atender às demandas do 
mercado. 
Ao longo das unidades, serão apresentados os fundamentos do 
desenvolvimento de sistemas, tendo como foco as etapas que constituem 
o desenvolvimento e a introdução ao conceito de metodologia de 
desenvolvimento. Serão evidenciados também os modelos existentes 
para o ciclo de vida de projetos e para o desenvolvimento de softwares, 
assim como os processos, tipos e métricas de qualidade referentes às 
metodologias de desenvolvimento de software. Com o domínio desses 
conceitos, você poderá tomar decisões mais acertadas em seus projetos 
futuros. 
Por fim, será mostrado como o uso de um software CASE pode auxiliar 
o estudo de caso no desenvolvimento de sistemas. Sua compreensão é 
fundamental para que seja possível usufruir de todos os benefícios dessa 
ferramenta, que facilita desde a análise de requisitos até a execução de 
testes. 
Bons estudos!
7
Objetivos da disciplina
• Identificar os fundamentos de metodologia de desenvolvimento 
de sistemas.
• Descrever a história e evolução das metodologias de 
desenvolvimento de sistemas.
• Apontar as diferentes metodologias para desenvolvimento de 
sistemas.
• Descrever e aplicar os processos e tipos de metodologias de 
desenvolvimento de sistemas.
• Definir o conceito de ciclo de vida de projetos de desenvolvimento 
de sistemas.
• Aplicar softwares CASE a estudos de caso e situações-problema no 
desenvolvimento de sistemas.
8
 1Unidade 11. Histórico do Desenvolvimento 
de Software 
Para iniciar seus estudos
Nesta unidade, será apresentado o conceito de metodologia de 
desenvolvimento de software, assim como as diversas metodologias de 
desenvolvimento que foram surgindo ao longo dos anos. Além disso, será 
contextualizado o surgimento de cada metodologia, de forma a justificar 
sua existência. Compreender a evolução das metodologias no decorrer 
do tempo ajudará você a assimilar melhor a aplicação das mesmas ao 
desenvolvimento de softwares em seu cotidiano.
Objetivos de Aprendizagem
• Definir o conceito de metodologia de desenvolvimento de 
sistemas.
• Descrever a história e evolução no decorrer dos anos do conceito 
de metodologia de desenvolvimento de sistemas.
9
Metodologia de Desenvolvimento de Sistemas | Unidade 1 - Histórico do Desenvolvimento de Software 
Introdução da unidade
A compreensão do conceito de metodologia de desenvolvimento de sistemas é fundamental para qualquer 
profissional na área de TI atualmente. Mesmo quando o profissional não trabalha diretamente com a codificação 
de sistemas, isso se faz importante. Todas as outras áreas em uma empresa que desenvolve softwares participam 
desse processo e, portanto, devem conhecê-lo. Por esse motivo, nesta unidade será definido tal conceito.
Por fim, será apresentado como a evolução das metodologias de desenvolvimento resultou nas técnicas mais 
utilizadas nos dias atuais. Assim sendo, compreender a história do desenvolvimento de sistemas possibilita 
assimilar melhor como as metodologias recentes surgiram. Também será possível perceber que o aprimoramento 
no modo como o software vinha sendo desenvolvido resultou em uma gama de métodos que atendem a diversos 
tipos de aplicações.
1.1 Histórico do desenvolvimento de software
Ao longo dos anos, a utilização de softwares foi se tornando essencial no dia a dia das pessoas. Estão presentes 
em todos os segmentos, desde o gerenciamento de caixas de supermercado, no auxílio a médicos durante a 
execução de uma cirurgia em pacientes e até mesmo no controle de pouso e decolagem de uma aeronave. 
Por isso, o funcionamento correto de um software é de extrema importância, visto que erros desse sistema de 
processamento de dados podem causar tanto prejuízos financeiros como danos fatais. 
Devido ao fato de que o desenvolvimento de sistemas pode ser visto como algo complexo, diferentes metodologias 
foram sendo propostas no decorrer dos anos. Elas foram se adaptando ao ambiente em que o software seria 
construído, para garantir a qualidade do que estava sendo produzido. 
Nesta unidade, será abordada a definição do conceito de metodologia de desenvolvimento de software. Em 
seguida, será apresentada a forma como as metodologias de desenvolvimento de software evoluíram ao longo 
dos anos, até chegarem aos métodos mais recorrentes dos dias atuais.
1.1.1 Metodologia de desenvolvimento de software
Define-se como metodologias de desenvolvimento de softwares a estrutura básica para se controlar o modo como 
um sistema deve ser construído. Uma metodologia contém regras, padrões, práticas e conceitos necessários 
para o desenvolvimento de um software, de forma que o mesmo atinja os padrões necessários de qualidade, 
minimizando-se os riscos e custos 
No decorrer dos anos, o uso de softwares foi se difundindo por vários segmentos, tanto técnicos como de negócios, 
fazendo com que as metodologias se adaptassem e evoluíssem. 
Sabendo-se que uma metodologia é um conjunto de métodos, deve-se, também, entender o que é um método 
e qual é a sua função. 
Um método pode ser definido como uma abordagem técnica detalhada passo a passo, a fim de executar uma ou 
mais tarefas estabelecidas pela metodologia. Em outras palavras, a principal função do método é basear-se em 
procedimentos para atingir um objetivo. 
10
Metodologia de Desenvolvimento de Sistemas | Unidade 1 - Histórico do Desenvolvimento de Software 
A metodologia a ser utilizada no desenvolvimento de um sistema deve ser escolhida de forma cautelosa, 
baseando-se na natureza do projeto e no produto final a ser desenvolvido, bem como dos métodos e ferramentas 
que serão empregados e dos controles e produtos parciais desejados.
1.2 Evolução das metodologias de desenvolvimento de 
software
Desenvolver softwares nem sempre é uma tarefa fácil. Existe cada vez mais demanda por softwares que sejam 
eficazes, ou seja, que realizam de fato sua função e que sejam ao mesmo tempo eficientes, consumindo pouca 
memória e pouco poder de processamento computacional. Além disso, devem ser de fácil utilização pelo usuário 
final. 
Apesar dos grandes avanços em termos de tecnologia, pode-se perceber que muitas equipes de desenvolvimento 
ainda entregam softwares que acabam falhando com o usuário em algum momento da operação. Quandoisso 
acontece, raramente é uma falha técnica. Pode-se dizer que, na maioria das vezes, a falha de um sistema é 
resultado da ausência ou utilização de forma errada de metodologias de desenvolvimento. 
Nos primórdios do desenvolvimento de software, o modelo básico utilizado foi o “codificar e corrigir”, que consistia 
nas seguintes etapas:
1. Escrever um código.
2. Corrigir os problemas deste código.
O modelo básico de desenvolvimento de software consistia em uma espécie de “tentativa e erro”. Era um processo 
considerado artesanal, em que a produção consistia em gerar versões que seriam refinadas sucessivamente com 
o objetivo de eliminar falhas até que o cliente se mostrasse satisfeito. Também não existia uma documentação 
informando os requisitos do software. Tal levantamento era feito de maneira informal e dificilmente o problema 
era modelado, diferentemente do método ágil, em que aplicamos os conceitos de iteração. 
Além da ausência das boas práticas de engenharia de software, o trabalho era todo centrado no programador. 
Nesse cenário, não se fazia o uso de documentações. O software era visto como uma obra de arte e como produto 
central, portanto, não sendo planejado. 
Não obstante os problemas mencionados, o modelo dos primórdios trazia consigo ainda outras desvantagens.
Após um grande número de correções, a estrutura do código se tornava fraca, levando a um alto custo nas próximas 
correções. Isso ressaltava a necessidade de projetar o software antes de codificá-lo. Outro problema é que esse 
tipo de software não contemplava todas as expectativas do usuário após a entrega. Isso evidenciava a necessidade 
do levantamento dos requisitos do software antes de sua codificação. Por fim, o código produzido nesse modelo 
era difícil de ser testado e de ser modificado, caso houvesse necessidade. Isso salientou a necessidade de haver 
uma fase de testes e modificações já planejadas desde o princípio.
Partindo do cenário citado nos parágrafos anteriores, a necessidade de desenvolver softwares de maneira mais 
profissional e organizada se fez clara. A crise do software na década de 1970 foi o que impulsionou a discussão 
sobre formas metodizadas para o desenvolvimento de softwares. O termo “crise de software” diz respeito aos 
problemas enfrentados pelos desenvolvedores da época, devido à grande demanda por sistemas cada vez mais 
complexos, além da ausência de técnicas de desenvolvimento que facilitassem todo o processo. 
11
Metodologia de Desenvolvimento de Sistemas | Unidade 1 - Histórico do Desenvolvimento de Software 
Naquela época, a Conferência da Organização do Tratado do Atlântico Norte (OTAN), que reunia países ocidentais 
e capitalistas, liderados pelos Estados Unidos, marcava o surgimento da engenharia de software. A reunião tinha 
como objetivo a definição de práticas que levassem a melhorias na construção de sistemas.
Figura 1 – Donald Trump dando um discurso durante a OTAN do ano de 2018
Fonte: SHUTTERSTOCK, 2018.
Para saber mais acerca das metodologias de desenvolvimento de software, acesse a Internet 
e pesquise alguns temas sobre a crise do software da década de 1970. 
Saiba mais
12
Metodologia de Desenvolvimento de Sistemas | Unidade 1 - Histórico do Desenvolvimento de Software 
A construção dos primeiros aviões passou pelas mãos dos irmãos Wright. Entretanto, até 
que a ideia funcionasse, houve muito desperdício de recursos, devido às inúmeras tentativas 
sem sucesso. O procedimento funcionava da seguinte forma: a aeronave era construída por 
completo e, ao final, era empurrada de um penhasco. Caso o teste falhasse, a aeronave seria 
destruída e começariam tudo outra vez. Imagine se o desenvolvimento de softwares também 
fosse assim?!
Tendo como motivação inicial a crise de software dos anos 1970, diversos modelos de desenvolvimento foram 
propostos. O primeiro modelo de desenvolvimento proposto é denominado modelo em cascata (ROYCE, 1970), 
também chamado de clássico ou linear, foi um dos primeiros modelos de desenvolvimento de sistemas. Sua 
primeira descrição formal pode ser encontrada em um artigo publicado por Winston W. Royce no ano de 1970. 
Apesar disso, Royce não utilizava o termo “waterfall” ou cascata em seu artigo. Essa metodologia surgiu como 
uma nova forma de desenvolver software que pudesse minimizar os problemas da utilização do modelo artesanal 
da produção de sistemas.
Figura 2 – Winston W. Royce, autor da primeira descrição formal do modelo cascata
Fonte: WINSTON..., 2017.
13
Metodologia de Desenvolvimento de Sistemas | Unidade 1 - Histórico do Desenvolvimento de Software 
Nesse modelo, o desenvolvimento de software é visto de forma sequencial, com um fluir constante para 
frente, como uma cascata, contendo as seguintes fases: levantamento e análise de requisitos, projeto (design), 
desenvolvimento, testes (validação) e operação (manutenção). Cada etapa é fechada em relação às suas 
próximas tarefas, permitindo que uma fase se inicie apenas após a finalização da fase anterior. Entretanto, existe 
a possibilidade de voltar à fase anterior da cascata, caso seja necessário, o que acontece principalmente em 
sistemas mais complexos. Nessa abordagem, é importante que todos da equipe compreendam bem todos os 
pontos que o software deve contemplar. 
A Figura 3 ilustra o processo proposto pelo modelo em cascata.
Figura 3 – Modelo em cascata proposto por Royce em 1970
Requisitos
Design
Análise
Desenvolvimento
Testes
Operação
Fonte: Adaptada de ROYCE, 1970.
Existe também outro modelo intitulado de desenvolvimento iterativo e incremental. Esse modelo surgiu em 
sequência ao modelo cascata. Muitos exemplos de sua utilização podem ser encontrados no artigo de Craig Larman 
e Victor Basili, chamado “Iterative and incremental development: a brief history”. O projeto Mercury, desenvolvido 
pela NASA, agência especial norte-americana, foi um dos primeiros a utilizá-lo. Alguns dos engenheiros do 
Mercury, mais tarde, formaram uma nova divisão dentro da International Business Machines (IBM), que utilizou o 
desenvolvimento iterativo e incremental para a construção do software de um ônibus espacial, entre os anos 
de 1977 e 1980. O software resultou em grande sucesso e contava com 17 iterações que duraram 31 meses, o 
que equivale a aproximadamente oito semanas por iteração. A motivação deles para evitar o modelo cascata foi 
que os requisito do software do ônibus mudavam constantemente durante o processo de desenvolvimento do 
software. 
A ideia principal do modelo iterativo e incremental é desenvolver um sistema por meio de repetidos ciclos 
(iterativo) pelas fases, que são semelhantes às fases do modelo cascata, porém, desenvolvendo pequenas partes 
(novas funcionalidades) por vez (incremental). Dessa forma, à cada iteração, novas informações em relação ao 
domínio do problema podem ser adquiridas, possibilitando que novas versões tenham funções adicionais sem 
causar grandes prejuízos ao desenvolvimento. 
14
Metodologia de Desenvolvimento de Sistemas | Unidade 1 - Histórico do Desenvolvimento de Software 
As fases básicas desse tipo de modelo são: análise, projeto, implementação e testes. Essa abordagem contrasta 
com o modelo cascata, visto que as fases são realizadas apenas uma vez. 
A Figura 4 ilustra o funcionamento desse modelo.
Figura 4 – Modelo iterativo e incremental inicialmente utilizado em projetos da NASA entre 1977 e 1980
Fonte: Adaptada de PRESSMAN, 2016.
O principal processo de desenvolvimento que contempla a metodologia iterativa e incremental é o Rational Unified 
Process - Processo Unificado Racional (RUP), que foi patenteado pela empresa Rational. 
De forma semelhante ao modelo iterativo e incremental, a abordagem de desenvolvimento de software denominada 
prototipação também visa resolver problemas recorrentes das alterações constantes em um software. Ela permite 
que versões iniciais do sistema sejam verificadas antes de prosseguir com o desenvolvimento. Sua prática foium dos pontos que Frederick P. Brooks aborda em seu livro de 1975, chamado “The mythical man-month”, e o 
artigo do seu aniversário de 10 anos, denominado “No silver bullet”. Um dos primeiros exemplos de aplicação da 
prototipagem em softwares de grande escala foi na implementação do tradutor Ada/ED, da Universidade de Nova 
York, utilizado na linguagem de programação Ada. O tradutor foi implementado na linguagem SETL, privilegiando 
clareza de design e interface de usuário em detrimento à velocidade e eficiência. O sistema Ada/ED foi a primeira 
implementação Ada, certificada no dia 11 de abril de 1983.
Figura 5 – Frederick P. Brooks, um dos precursores na consolidação da prototipagem como modelo de desenvolvimento de 
software
Fonte: FRED..., 2016.
15
Metodologia de Desenvolvimento de Sistemas | Unidade 1 - Histórico do Desenvolvimento de Software 
Existem três formas de criar uma aplicação protótipo para ser validada.
• A primeira é criar o protótipo no papel ou mesmo no computador que retrate a interação homem-
máquina. Nesse caso, pode-se entregar ao usuário um protótipo de uma interface gráfica de usuário, por 
exemplo, e pedir que ele interaja com o protótipo realizando sugestões sempre que necessário.
• A segunda é implementar uma funcionalidade dentre as que estão no escopo do software que está sendo 
desenvolvido.
• A terceira é utilizar-se de um software já pronto que tenha parte ou todas as funcionalidades necessárias. 
Essa última é mais utilizada em softwares que estão parcialmente prontos, mas que precisam de funções 
adicionais ou até mesmo melhorias. 
Na maioria dos casos, a prototipagem ajuda a encontrar requisitos ainda não descobertos, bem como garantir 
que funcionalidades individuais funcionem corretamente. 
Um ponto negativo desse modelo é que, em alguns casos, desenvolvedores realizam concessões temporárias, a 
fim de colocarem o protótipo do software em funcionamento, mas que acabam ficando até a versão final. Para 
sua utilização com eficiência, é necessário que usuário e desenvolvedor entendam que o protótipo é apenas uma 
versão que ajuda na definição dos requisitos de um software. 
A Figura 6 ilustra o funcionamento do modelo prototipagem.
Figura 6 – Modelo prototipagem utilizado amplamente nos anos 80
Requisitos
Definição 
Projeto de sistema
Codificação, teste, ...
Investigação inicial Implementação Manutenção
Fonte: Adaptada de PRESSMAN, 2016. 
O modelo espiral (BOEHM, 1988) foi descrito por Barry Boehm em seu artigo de 1988, denominado “A spiral 
model of software development and enhancement”. Esse modelo busca acomodar as fases do modelo cascata 
em um ciclo mais dinâmico, que passa pelas mesmas fases diversas vezes, aumentando gradualmente os 
níveis de complexidade. Nessa abordagem, começa-se com entradas pequenas, calculando que alterações de 
funcionalidades específicas sejam realizadas antes do sistema todo estar pronto, visto que o custo da alteração 
da aplicação nesse ponto seria maior.
16
Metodologia de Desenvolvimento de Sistemas | Unidade 1 - Histórico do Desenvolvimento de Software 
Figura 7 – Barry Boehm, criador do modelo espiral
Fonte: O LENDÁRIO..., 2018.
O modelo espiral consiste em uma sequência de iterações, em que cada iteração é uma volta em um espiral, e 
cada fase ou atividade no desenvolvimento é um setor ou quadrante da volta. A metodologia espiral engloba as 
melhores práticas dos métodos acima citados, inovando ao trazer também uma nova etapa, chamada “análise de 
riscos”. Conforme ilustra a Figura 8, essa abordagem contém quatro estágios definidos pelos quatro quadrantes 
sobrepondo o espiral.
Figura 8 – Modelo espiral proposto por Barry Boehm em 1988
Fonte: Adaptada de PRESSMAN, 2016.
Ao analisar a figura, é possível observar que:
17
Metodologia de Desenvolvimento de Sistemas | Unidade 1 - Histórico do Desenvolvimento de Software 
• O primeiro estágio (quadrante superior esquerdo) consiste na determinação dos objetivos, soluções 
alternativas e restrições do software.
• No segundo estágio (quadrante superior direito), são analisados os riscos que as decisões tomadas no 
estágio anterior trazem. Nessa etapa, decide-se se a próxima etapa será executada ou não. Geralmente, 
pode-se construir protótipos e realizar simulações do software.
• Já no terceiro estágio (quadrante inferior direito), realiza-se o desenvolvimento do software, englobando 
as etapas de design, especificação, codificação e verificação. Todas as especificações realizadas devem ser 
verificadas de forma apropriada.
• Por fim, o quarto estágio (quadrante inferior esquerdo) consiste na revisão das etapas anteriores, bem 
como o planejamento da próxima fase. Baseando-se nos resultados obtidos nas fases anteriores, pode-se 
planejar como será a próxima fase.
Após a finalização de um ciclo, compreendendo as quatro fases, recomeça-se checando se os requisitos da 
iteração anterior ainda são válidos, incluindo novas funcionalidades, se necessário. 
Na etapa em que os testes são realizados, pode-se contar com a ajuda do cliente para verificar se aquele sistema 
realmente é o que ele está buscando. Assim, uma alteração realizada nas iterações iniciais não teria um custo tão 
alto quanto nas iterações finais. Apesar de o modelo espiral apresentar diversas vantagens, é necessário um nível 
adequado de experiência com essa metodologia para determinar a avaliação dos riscos de forma correta. Se um 
grande risco não for detectado, problemas surgirão nas iterações seguintes. 
O fechamento da era de modelos baseados em cascata é realizado com o surgimento do vorgehensmodell ou 
modelo em “V”, proposto por Paul Rook no fim da década de 1980. Nesse modelo, a dependência entre as fases 
de desenvolvimento e verificação são mostradas de forma explícita. 
Na Figura 9, pode-se verificar as fases do modelo em V. Do lado esquerdo, temos as tarefas de desenvolvimento. 
Do lado direito, as tarefas de testes. As setas em cinza claro indicam qual teste uma tarefa de desenvolvimento 
deve planejar. Os testes são planejados de cima para baixo, conforme as atividades de desenvolvimento vão 
sendo executadas. Após a etapa de implementação, cada teste planejado é executado de baixo para cima.
Figura 9 – Modelo em V proposto por Paul Rook no final da década de 80
Requisitos
do cliente
Requisitos
funcionais
Design
(alto nível)
Design
(detalhado)
Teste de
Unidade
Teste de
Integração
Teste do
sistema
Teste de
aceitação
Implementação
Fonte: Adaptada de PRESSMAN, 2016.
18
Metodologia de Desenvolvimento de Sistemas | Unidade 1 - Histórico do Desenvolvimento de Software 
Apesar de ser simples, fácil de usar e de deixar explícitas as atividades de teste durante o processo, esse modelo 
funciona bem apenas para sistemas mais simples, visto que exige plena compreensão dos requisitos do sistema. 
Além disso, há uma certa dificuldade em se seguir o fluxo sequencial do modelo, já que para passar à próxima fase 
é necessário que a anterior esteja plenamente concluída. 
O termo Desenvolvimento Rápido de Aplicação (MARTIN, 1991) ou Rapid Application Dev (RAD), foi registrado 
por James Martin, em 1991. Esse modelo também pode ser considerado iterativo e incremental, porém enfatiza 
um ciclo de desenvolvimento bastante curto, com duração média entre 30 e 90 dias, e sugere a divisão de 
trabalho em equipes distintas. O número de fases no RAD pode variar entre quatro a seis fases, dependendo 
de qual abordagem da literatura será considerada. Nesta unidade, abordaremos um modelo com cinco fases, 
conforme mostra a Figura 10.
Figura 10 – Fases do desenvolvimento Rápido de Aplicação (RAD)
Análise Inicial
Modelagem de dados
Modelagem de Processo
Geração da aplicaçãoTestes e correções
Entrega
Modelagem de negócio
Fonte: Adaptada de MARTIN, 1991.
As cinco fases aqui consideradas serão: modelagem de negócio, modelagem de dados, modelagem do processo, 
geração da aplicação e testes e modificações.
A fase modelagem de negócio modela o fluxo de informações entrefunções ou módulos. A modelagem de dados 
define as classes e suas relações de acordo com a necessidade da aplicação. A modelagem do processo baseia-se 
na fase anterior para criar o fluxo de dados por meio de diagramas de classes, casos de uso, etc. Na geração da 
aplicação, o software é de fato desenvolvido. Por fim, testes e modificações dos módulos são realizados a fim de 
corrigir possíveis falhas existentes na fase de testes e modificações. 
O RAD é útil quando existe a possibilidade de se modularizar o projeto (o que muitas vezes não é possível). Além 
disso, as tarefas devem ser possíveis de serem divididas em equipes. Por fim, essa metodologia também não se 
aplica a sistemas que não podem ser finalizados no prazo de 90 dias.
No período entre 1990 e 2005, houve uma ascensão do que chamamos de métodos ágeis. Esses métodos 
envolvem um conjunto de metodologias, com o intuito de acelerar o ritmo do desenvolvimento de softwares, 
visto que os modelos tradicionais de desenvolvimento acabavam sendo apontados como lentos e burocráticos. 
19
Metodologia de Desenvolvimento de Sistemas | Unidade 1 - Histórico do Desenvolvimento de Software 
Se antes o desenvolvimento de um software poderia demorar até anos, o objetivo era conseguir fazê-lo em meses 
ou até mesmo semanas. Com a origem desse conceito datada por volta de 1990, o conceito de agile não demorou 
a ser difundido, resultando na criação de diversos modelos que suportam essa metodologia. 
A Tabela 1 exibe alguns dos métodos propostos no período acima citado e suas principais características.
Tabela 1 – Ano de surgimento e principais características de algumas metodologias ágeis
Ano de Surgimento Metodologia Principais características
1995 Dynamic Systems 
Development 
Method (DSDM)
Define qualidade e esforço em termos de custo e tempo no 
princípio do desenvolvimento e ajusta as entregas do projeto 
para atender aos critérios definidos através da categorização 
dos “entregáveis” em: “deve ter”, “deveria ter”, “poderia ter” 
e “não terá”. 
1995 Scrum Projetos são divididos em ciclos (tipicamente mensais) 
chamados de Sprints. Funcionalidades do sistema são 
mantidas no Product Backlog. Existem três papéis na equipe 
do Scrum: Scrum Master, Product Owner e DevTeam. 
1996 Crystal Seus métodos possuem quatro funções: patrocinador 
executivo, designer principal, desenvolvedores e usuários 
experientes. Muitas estratégias e técnicas são empregadas 
para alcançar a agilidade. 
1996 Extreme 
Programming
Torna possível evitar com que o custo do software tenha um 
aumento extremo com o tempo. Seus principais atributos 
são: desenvolvimento incremental, escalonamento flexível, 
códigos de teste automatizados, comunicação verbal, etc. 
1997 Feature-driven 
Development (FDD)
Opera com o princípio de concluir um projeto dividindo-o 
em funções pequenas, com valor para o cliente, e que 
podem ser entregues em menos de duas semanas. Possui 
dois princípios fundamentais: o desenvolvimento de software 
é uma atividade humana e o desenvolvimento de software é 
uma funcionalidade valiosa para o cliente. 
2005 Agile Unified 
Process (AUP)
É a evolução do Rational Unified Process (RUP) e combina 
técnicas existentes como Test Driven Development (TDD) 
e Agile Modeling para entregar um produto de melhor 
qualidade. 
Fonte: Adaptada de PRESSMAN, 2016.
Em 2001, o Manifesto Ágil foi escrito explicando exatamente como um método ágil deveria ser, seu conceito, 
além dos 12 princípios de um método ágil. A partir desse momento, o surgimento e, principalmente, a utilização 
de metodologias ágeis, não parou mais. Ao contrário, em grande parte das empresas atualmente, as técnicas 
de desenvolvimento tradicionais já foram substituídas por metodologias ágeis, levando-nos a crer que estamos 
vivendo a “era agile”. 
20
Metodologia de Desenvolvimento de Sistemas | Unidade 1 - Histórico do Desenvolvimento de Software 
A Figura 11 apresenta a relação dos métodos citados nesta unidade e sua localização na linha do tempo de 
acordo com o ano de seu surgimento. Nela, é possível notar a grande concentração de métodos ágeis surgindo 
entre os anos de 1995 e 2000, devido a um grande interesse no aumento da produtividade naquela época.
Figura 11 – Linha do tempo dos métodos de desenvolvimento de software
Fonte: Adaptada de PRESSMAN, 2016.
Os modelos para o desenvolvimento de software não terminam por aí. De 2005 até os dias atuais, diversos 
modelos vêm sendo propostos para suprir diferentes necessidades vindas de diferentes aplicações. Entretanto, 
os modelos descritos nesta unidade ainda são os mais utilizados. 
Síntese da unidade
Nesta unidade, foi tratada a definição do conceito de metodologia de desenvolvimento de softwares. Além disso, 
foi apresentado como se deu o surgimento de algumas das principais metodologias existentes, que são utilizadas 
até os dias atuais.
21
Considerações finais
Atualmente, todas as empresas que desenvolvem softwares, 
independentemente do segmento a que são direcionados, utilizam uma 
metodologia de desenvolvimento, por vezes mais de uma metodologia 
pode ou deve ser utilizada para garantir o nível de qualidade. Muitas 
empresas, principalmente que desenvolvem softwares para a área 
governamental, têm suas metodologias auditadas pela ISO, sendo esta 
uma exigência de vários órgãos governamentais. 
22
 2Unidade 22. Fundamentos de 
Desenvolvimento de Software
Para iniciar seus estudos
Nesta unidade, apresentaremos os conceitos básicos para a compreensão 
de metodologias de desenvolvimento de software. Daremos a definição de 
software enquanto produto, visto que essa definição é a que se aplica ao 
desenvolvimento de softwares para o mercado. Além disso, abordaremos 
as etapas no desenvolvimento de software, a definição de modelo de ciclo 
de vida, bem como o conceito de metodologia de desenvolvimento de 
software. Todos esses conceitos são importantes para o desenvolvimento 
de softwares mais robustos e com mais qualidade.
Objetivos de Aprendizagem
• Identificar os princípios que envolvem o desenvolvimento de 
software.
• Descrever os conceitos de software enquanto produto, modelos de 
ciclo de vida e metodologias para o desenvolvimento de software.
23
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
Introdução da unidade
O objetivo desta unidade é contextualizar os fundamentos do desenvolvimento de software e suas etapas, bem como 
apresentar as metodologias de desenvolvimento de software mais utilizadas no momento. Esse conhecimento 
possibilitará ao aluno compreender outros níveis de complexidade de metodologia de desenvolvimento de 
software, do básico ao complexo, facilitando reconhecer no ambiente corporativo das empresas situações em 
que a escolha e aplicação de métodos sejam necessárias. Nesta unidade, será apresentado o conceito de software 
como produto, que é o interesse de equipes que desenvolvem para atender o mercado corporativo. Também 
serão expostas algumas metodologias de desenvolvimento de software existentes. Por fim, serão abordados os 
modelos de ciclo de vida para que o aluno possa entender os seus conceitos e aplicação simultânea com as 
metodologias de desenvolvimento de software.
2.1 Fundamentos de desenvolvimento de Software
Nesta unidade, abordaremos os princípios para a compreensão do desenvolvimento de software. Primeiramente, 
apresentaremos a definição de software enquanto produto categorizando-o em produtos genéricos e sob 
encomenda. Em seguida, definiremos o conceito de desenvolvimento de software apresentando cada uma das 
suas etapas. Então elucidaremos o conceito de modelo de ciclo de vida, exemplificando com a apresentação de 
dois tipos de modelo, em cascata e iterativo e incremental. Por fim, apresentaremos a definição de metodologias de 
desenvolvimento de softwares, ilustrando seu conceito com a descrição de algumas das principais metodologias.
2.1.1 O que é um software?
Programas de computador são escritospor diversas pessoas. Profissionais em empresas escrevem programas 
que simplificam seu trabalho. Pesquisadores escrevem programas que realizam seus experimentos. E alguns 
programadores escrevem programas apenas por hobby. Entretanto, a maior parte do desenvolvimento de software 
é realizada com o intuito profissional, a fim de construí-los para um propósito de negócio. Em geral, softwares 
desse tipo são produzidos por equipes em vez de apenas uma pessoa. Devido a seu alto custo, tanto em termos 
de dinheiro quanto em termos de tempo, geralmente um software é desenvolvido uma vez e mantido durante 
um longo tempo, tendo apenas algumas alterações nesse período. Atualmente, em função do dinamismo dos 
negócios e da disponibilidade de novas tecnologias, métodos voltados ao rápido desenvolvimento e entrega têm 
sido fortemente utilizados, atendendo a um escopo reduzido, porém com forte interação com os usuários. 
Na engenharia de software, tem-se como objetivo apoiar o desenvolvimento de softwares profissionais, visto que 
se integrarão com outros softwares e, assim, farão parte de um sistema completo, requerendo, portanto, diversos 
cuidados, diferentemente de outros tipos de softwares. As técnicas existentes nela apoiam todos os passos no 
desenvolvimento de um software, desde a especificação, passando pelo projeto até a evolução do software. 
Softwares pessoais geralmente não requerem esse tipo de preocupação.
Quando pensamos no conceito de software, geralmente nos referimos a um programa de computador. 
Entretanto, a engenharia de software não diz respeito apenas ao programa de computador, mas também à toda 
documentação e dados de configuração que são necessários para que o programa funcione de forma correta. 
Um sistema de software que foi desenvolvido com intuito profissional é, na maioria das vezes, mais do que apenas 
o programa em si. Inclui a integração de diversos programas e arquivos de configuração. Pode incluir, também, 
uma documentação do sistema para que outra equipe consiga entendê-lo, uma documentação de usuário para 
que usuários consigam interagir com o sistema e até mesmo sites em que o programa possa ser atualizado. 
Uma diferença fundamental entre o desenvolvimento de forma profissional e de forma amadora é a necessidade 
de um manual existente no primeiro. Se quem está escrevendo o software é a própria pessoa que vai utilizá-lo, 
24
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
não há necessidade de especificar manuais do programa. Entretanto, caso seja um software profissional, isto se 
torna fundamental, visto que alterações futuras, por exemplo, podem ser realizadas por uma equipe diferente 
daquela que o escreveu. Esses pontos são fundamentais para longevidade do software.
Engenheiros de software, de forma geral, se preocupam em desenvolver o que chamamos de produto de software, 
ou seja, um software que pode ser vendido para um cliente. Existem dois tipos de produtos de software: produtos 
genéricos e produtos sob encomenda.
2.1.2 Produtos genéricos
Produtos genéricos são softwares do tipo stand alone (capazes de operar independentemente de outro hardware/
software) produzidos por empresas de desenvolvimento e vendidos para quaisquer clientes que queiram comprá-
los. Exemplos mais comuns desse tipo de software são os softwares para PCs, como ferramentas de banco de 
dados, editores de texto, editores gráficos e ferramentas para gestão de projetos. Além desses exemplos, podemos 
citar o que chamamos de aplicações verticais. Essas aplicações são desenvolvidas para atender a determinado 
nicho. Exemplos disso são os softwares para controle de estoque, sistema de gestão de biblioteca e sistemas 
de contabilidade, desde que desenvolvidos especificamente para serem executados de forma individual, pois 
sistemas de contabilidade e controle de estoques hoje fazem parte de produtos Enterprise Resource Planning (ERP).
Figura 12 – Editor de texto: exemplo de um produto genérico
Fonte: SHUTTERSTOCK, 2018.
2.1.3 Produtos sob encomenda
Produtos sob encomenda são softwares encomendados por um cliente em particular. Por essa razão, esse software 
acaba tendo as características específicas exigidas pelo cliente. Alguns exemplos desse tipo de software são os 
sistemas de controle de dispositivos eletrônicos, sistemas para dar apoio a uma parte específica do negócio ou 
até mesmo sistemas de controle de tráfego aéreo.
25
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
Figura 13 – Sistema de controle de tráfego aéreo: exemplo de um produto sob encomenda
Fonte: SHUTTERSTOCK, 2018.
2.2 O que é o desenvolvimento de software?
Desenvolver um software é uma atividade complexa, exige inúmeros passos até a operação correta do mesmo. O 
resultado disso é que muitos projetos de desenvolvimento de softwares são abandonados no meio do caminho, 
seja por falta de tempo, seja de dinheiro. Um estudo realizado pelo Standish Group em 1994 relata que 10% dos 
projetos não terminavam dentro do prazo estabelecido. Além disso, cerca de 60% dos projetos obtinham um 
custo maior do que o esperado. A situação atualmente não está nada diferente.
Tentativas para minimizar as dificuldades de se desenvolver softwares, como as citadas no parágrafo anterior, 
envolvem a definição de um processo de desenvolvimento de software. Um processo de desenvolvimento de 
software consiste em todas as atividades para definir, desenvolver, testar e manipular um software. Entre os 
principais objetivos de um processo no desenvolvimento de software, estão: definir as atividades a serem 
executadas; definir quando, como e quem vai executá-las; estabelecer formas de verificar o andamento do 
desenvolvimento; padronizar a forma como o software é desenvolvido em uma empresa. Existem vários processos 
de desenvolvimentos de software. Alguns exemplos de processos já existentes são o ICONIX, o Rational Unified 
Process (RUP) e o Enterprise Unified Process (EUP). 
Um processo de desenvolvimento agrupa as tarefas necessárias para a construção de softwares em atividades. 
Existem diversos processos de softwares propostos. Apesar disso, é um consenso na comunidade de engenharia 
de software que não existe um processo único ideal para todas as situações. Existem processos que se adaptam 
melhor em diferentes situações. Entretanto, podemos definir algumas atividades que estão presentes na maioria 
dos processos, com uma ou outra modificação. Nessa seção, descreveremos as atividades típicas de um processo 
de desenvolvimento de softwares, que são: levantamento de requisitos, análise, projeto, implementação, testes e 
implantação.
26
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
2.2.1 Levantamento de requisitos
A etapa de levantamento de requisitos consiste na compreensão do problema no qual o desenvolvimento do 
software está imerso. O principal objetivo dessa etapa é fazer com que usuário e desenvolvedores tenham a mesma 
visão do sistema que deve ser construído. Para isso, clientes e desenvolvedores realizam um levantamento das 
necessidades dos futuros usuários do sistema que será desenvolvido. Denominamos tais necessidades como 
requisitos.
Por vezes, o termo levantamento de requisitos é encontrado na literatura como elicitação de 
requisitos ou até mesmo análise de requisitos.
Fique atento!
Geralmente, os requisitos são condições, capacidades e funcionalidades que estão relacionadas ao domínio do 
problema e que devem ser trazidas para o sistema. Durante essa etapa, é necessário também que a equipe de 
desenvolvimento procure entender o domínio que deve ser compreendido pelo sistema. Existem diversas técnicas 
para isso, como: leitura de material de referência; imersão no ambiente do usuário para observação; entrevista 
com usuários e especialistas; workshops; entre outras.
O resultado da etapa de levantamento de requisitos é o documento derequisitos, contendo diversos tipos de 
requisitos para o sistema a ser desenvolvido. Esse documento pode vir até mesmo escrito em linguagem informal. 
Um documento como esse, normalmente, contém:
1. Requisitos funcionais: definem as funcionalidades que devem existir no sistema. Um exemplo desse 
requisito seria: “O sistema deve permitir que cada recepcionista cadastre um novo paciente”.
2. Requisitos não-funcionais: definem as restrições existentes em relação às funcionalidades do sistema. 
Alguns dos tipos de requisitos não funcionais serão listados a seguir.
a. Confiabilidade: consiste em medidas quantitativas que dizem respeito à confiabilidade exigida do sistema. 
Exemplo disso seria definir um requisito que determina qual deve ser o tempo médio mínimo entre falhas. 
Dessa forma, conseguimos “exigir” que o sistema tenha o mínimo de confiabilidade.
b. Desempenho: corresponde a requisitos que vão estabelecer o tempo de resposta esperado para 
determinadas funcionalidades ou até mesmo a quantidade máxima de memória requerida pelo sistema.
c. Portabilidade: requisitos que vão restringir os componentes de hardware ou software com os quais o 
sistema terá de interagir. Geralmente, estão ligados aos sistemas operacionais e plataformas sob os quais 
o software deverá ser executado.
d. Segurança: esse tipo de requisito diz respeito a limitar acessos não autorizados a determinadas partes 
do sistema (ou a todo o sistema), seja por acessos internos, seja externos, a fim de garantir o mínimo 
de segurança. Temos de considerar que, atualmente, temos a Lei Geral de Proteção de Dados do Brasil 
(LGPD), uma política internacional de proteção ao dado que está sendo implantada no Brasil, de forma 
que essas leis devem ser consideradas. 
27
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
e. Usabilidade: requisitos que vão afetar a usabilidade do sistema. O impacto se dá, principalmente, na 
facilidade de uso e na necessidade de realizar treinamentos com usuários ou não.
 3. Requisitos normativos: são restrições que limitam o desenvolvimento do sistema. Podem dizer respeito, 
por exemplo, ao custo e prazo máximo de entrega do sistema ou até mesmo a aspectos legais (necessidade 
de licença), componentes de hardware ou software que necessitam ser adquiridos, além de atender a 
aspectos específicos da legislação brasileira, etc. Também podem ser regras de negócio, restrições ou 
políticas do domínio do problema que afetam o desenvolvimento.
Requisitos devem ser estabelecidos de modo que seja possível sua verificação. Além disso, clientes devem ser 
capazes de compreendê-los, bem como todos da equipe. Ele não deve conter as soluções técnicas a serem 
adotadas, mas sim responder à pergunta: “O que o usuário precisa neste sistema?”. Nesse documento, é 
interessante que os requisitos apareçam ordenados de acordo com a prioridade que é definida pelo valor que 
sua implementação traz ao cliente. Essa prioridade ajudará a equipe técnica a tomar decisões ao longo do 
desenvolvimento. 
Essa etapa é a mais importante em termos financeiros, visto que uma especificação incorreta leva a sistemas 
inconsistentes, que não serão utilizados de fato, resultando em desperdício de dinheiro e tempo. Além disso, esse 
documento pode ser visto como um termo de consentimento entre a equipe técnica e o cliente. Nesse sentido, 
ele é a garantia para a equipe de desenvolvimento de que aquilo que foi implementado realmente era o que o 
cliente concordou ao assinar o documento de requisitos.
2.2.2 Análise
Por vezes, a etapa de levantamento de requisitos (definida anteriormente) em conjunto com a etapa de análise 
recebem o nome de engenharia de requisitos. Nesta seção, abordaremos a fase de análise. Num contexto geral, 
o termo “analisar” significa dividir um sistema em componentes e verificar como interagem, a fim de entender o 
funcionamento do sistema. No contexto de sistemas de softwares, essa etapa consiste em um estudo detalhado 
dos requisitos que foram levantados na etapa anterior. Com base nesse estudo, modelos que representem o 
sistema são construídos.
Eventualmente, o termo análise é encontrado na literatura como análise de requisitos.
Fique atento!
Assim como o levantamento de requisitos, a análise de requisitos não leva em consideração o ambiente tecnológico 
a ser utilizado. Esta não é uma preocupação da análise de requisitos. É necessário primeiro especificar de forma 
bem clara o que deve ser feito, para só então definir como fazê-lo. Portanto, deve-se dedicar tempo para que o 
problema seja definido por completo para só então implementá-lo. Muitas equipes pecam por ignorarem essa 
etapa, o que resulta em problemas em etapas futuras. 
28
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
Os modelos construídos na etapa de análise devem ser validados e verificados. A validação tem como objetivo 
garantir que as necessidades que o cliente possui estão sendo atendidas pelo sistema. A pergunta que deve-se 
fazer é: “Estamos construindo o sistema correto?”. Para ter certeza da resposta, modelos são apresentados a 
futuros usuários para que possam ser validados. A validação evita que se descubra em etapas tardias que o 
sistema em construção não é o que o cliente queria. 
Já a verificação tem por objetivo verificar se modelos construídos condizem com os requisitos definidos. A 
pergunta que se deve fazer é: “Estamos construído o sistema corretamente?”. Modelos nessa etapa são analisados 
separadamente, bem como a consistência da sua integração. A validação é tipicamente uma atividade de análise, 
enquanto a verificação é uma atividade típica da fase de projeto (que veremos a seguir). 
Um dos resultados da etapa de análise é o modelo de objetos representando as classes que compõem o sistema. 
Outro resultado é um modelo funcional do sistema a ser desenvolvido. Ao longo dos anos, diversas ferramentas 
foram propostas para auxiliar na etapa de modelagem. Cada uma é útil para modelar determinado aspecto do 
sistema. Pode-se, também, utilizar mais de uma ferramenta para capturar diferentes aspectos.
A modelagem de dados consiste em criar modelos que expliquem ou descrevam o comportamento de um 
sistema. No caso da modelagem para o projeto de software, esse modelo descreve o sistema a ser construído. As 
principais ferramentas para realizar análise na Unified Modeling Language (UML) são o diagrama de casos de uso e 
o diagrama de classes. Outros diagramas da UML também podem ser utilizados.
2.2.3 Projeto
Na análise, a preocupação está em aspectos que são independentes da implementação do sistema. Já na fase de 
projeto, estabelece-se “como” o sistema funcionará para que atenda aos requisitos, considerando os recursos 
tecnológicos existentes. No projeto, adicionam-se restrições de tecnologia aos modelos construídos na fase de 
análise. Tais restrições podem estar ligadas à arquitetura do sistema, ao padrão de interface gráfica, à linguagem 
de programação, entre outros.
Você também pode encontrar o termo projeto na literatura como “design” ou “desenho”.
Fique atento!
O resultado dessa etapa é uma descrição computacional de o que o software deve fazer, que precisa condizer com 
a descrição produzida pela etapa de análise. Em alguns casos, restrições de tecnologia já ficam subentendidas 
da etapa de análise. Em outros casos, devem ser especificadas nessa etapa. Mas, independentemente disso, essa 
etapa é direcionada pelos modelos produzidos na etapa anterior e pelo planejamento do sistema.
29
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
Apesar de apresentarmos a análise e o projeto de forma separada nesta unidade, nem 
sempre há uma distinção bem clara entre as duas etapas. Pelo contrário, frequentemente 
essas duas etapas se misturam.
Fique atento!
As duas atividades principais nessa etapa são o projeto da arquitetura e oprojeto detalhado. O projeto da 
arquitetura reside na distribuição das classes de objetos relacionadas do sistema em subsistemas e seus 
componentes. Pode-se, também, distribuir esses componentes de forma física pelos recursos de hardware 
disponíveis. Geralmente, os diagramas de implementação UML são utilizados nessa atividade do projeto.
O projeto de arquitetura também é chamado de “projeto de alto nível”. Já o projeto detalhado 
pode vir com a nomenclatura “projeto de baixo nível”.
Saiba mais
Já no projeto detalhado, modelam-se as colaborações entre objetos de cada módulo, a fim de realizar as 
funcionalidades deste. Nessa atividade, também são realizados projetos da interface com o usuário, do banco de 
dados, dos algoritmos a serem utilizados e é considerada a distribuição do sistema. Geralmente, são utilizados 
diagrama de classes, diagrama de casos de uso, diagrama de interação e diagrama de atividades nessa atividade 
do projeto. 
2.2.4 Implementação
A etapa de implementação consiste em codificar o sistema, ou seja, traduzir a descrição computacional resultante 
da etapa de projeto em um código executável por meio do uso de linguagens de programação. Em processos que 
seguem o paradigma da orientação a objetos, a implementação consiste na criação do código-fonte das classes 
do sistema usando linguagens, como C++, C#, Java, etc. Essa etapa pode consistir na programação desde o início 
ou pode também fazer reuso de componentes de softwares, bibliotecas e frameworks, a fim de tornar mais rápida 
sua execução.
2.2.5 Testes 
A especificação realizada na fase de projeto passa por diversos testes, com o propósito de realizar a verificação do 
sistema. O principal resultado dessa etapa é o relatório de testes, que contém informações sobre possíveis erros 
30
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
que forem identificados no software. Após a execução dos testes, partes individuais do sistema são integrados 
para, assim, formar o produto de software. 
Há uma tendência nos desenvolvedores de simplificar em demasia as atividades de testes, seja por problemas 
de prazo, pela ansiedade da própria equipe de desenvolvimento ou, principalmente, pelos usuários. Porém, as 
etapas de teste não podem de forma alguma serem minimizadas. Ao contrário, devem ser criadas estratégias, 
selecionar profissionais do cliente e analistas de teste que executarão tais atividades. Considera-se que a equipe 
de desenvolvimento deve ter no seu quadro perfis específicos para as atividades de teste.
2.2.6 Implantação 
A implantação consiste no empacotamento, distribuição e instalação do sistema no ambiente do usuário. Aqui 
os manuais do sistema são escritos, arquivos são carregados, dados são importados para o sistema e usuários são 
capacitados para usar o sistema de forma correta. Por fim, pode ocorrer também a migração não só de sistemas 
de softwares, mas também de dados preexistentes.
2.3 O que são modelos de ciclo de vida?
O desenvolvimento de softwares pode envolver diversas fases (descritas na seção anterior). Denominamos modelo 
de ciclo de vida um encadeamento específico dessas fases na construção de um software. Existe uma diversidade 
de modelos de ciclo de vida. Alguns deles foram apresentados na unidade anterior. A principal diferença entre 
eles está na maneira como as diversas fases são encadeadas. Nesta seção, descreveremos dois modelos de ciclo 
de vida: modelo em cascata; modelo iterativo e incremental.
2.3.1 Modelo em cascata
O modelo de ciclo de vida em cascata é também chamado de clássico ou linear e tem como característica 
principal uma tendência na progressão sequencial entre uma fase e a seguinte. Ocasionalmente, pode haver 
uma retroalimentação entre uma fase e a fase anterior. Mas, de forma geral, as fases seguem em sequência. A 
Figura 14 ilustra o modelo em cascata.
Figura 14 – Modelo em cascata
Requisitos
Design
Análise
Desenvolvimento
Testes
Operação
Fonte: Elaborada pela autora.
31
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
Existem diversos problemas provenientes da utilização desse modelo. A maioria deles provém da sequencialidade 
das fases. O primeiro problema é que projetos no mundo real dificilmente seguem o fluxo sequencial. Existem 
diversas atividades que podem ser desenvolvidas em paralelo. Além disso, o fato de que essa abordagem define 
que todos os requisitos devem ser levantados no começo do desenvolvido limita a possibilidade da descoberta 
de novos requisitos posteriormente, após testes com o usuário. Por fim, só há uma versão pronta do sistema ao 
chegar ao final do ciclo. Em algumas situações, o usuário não quer esperar todo esse tempo para ter uma versão 
inicial que ele já possa utilizar. 
Mesmo com todos esses problemas, o modelo em cascata foi utilizado durante bastante tempo. Atualmente, sua 
utilização não é mais viável, devido à grande complexidade dos sistemas.
2.3.2 Modelo iterativo e incremental
O modelo de ciclo de vida incremental e iterativo foi proposto na tentativa de solucionar os problemas 
impostos pelo modelo em cascata. Um processo de desenvolvimento segundo essa abordagem considera 
o desenvolvimento em ciclos. Cada ciclo contém as seguintes fases: análise; projeto; implementação; testes. 
Diferentemente da abordagem em cascata, em que essas etapas são realizadas uma única vez, nesta abordagem, 
em cada ciclo, todas essas etapas são executadas novamente. A Figura 15 exibe o modelo iterativo e incremental.
Figura 15 – Modelo de ciclo de vida iterativo e incremental
Fonte: Elaborada pela autora.
O que muda de um ciclo para o outro é o subconjunto de requisitos considerado. Portanto, a cada ciclo, um 
subconjunto de requisitos diferente é desenvolvido. No ciclo seguinte, um novo subconjunto de requisitos é 
considerado criando um novo incremento do sistema, com mais funcionalidades implementadas a cada ciclo. 
Podemos entender esse método como uma generalização do método em cascata. Considerando cada ciclo 
individualmente, podemos dizer que ali existe um desenvolvimento em camada. 
Essa abordagem só funciona se é possível particionar os requisitos em subconjuntos para que cada subconjunto 
seja implementado em um ciclo diferente. Para decidir quais subconjuntos de requisitos serão desenvolvidos 
primeiro, considera-se a prioridade que cada requisito tem para o cliente e seu risco. Com a abordagem 
incremental, o usuário participa de forma ativa do desenvolvimento do software, o que diminui as chances da 
construção de um sistema diferente do que ele deseja.
32
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
O modelo de ciclo de vida incremental e iterativo tem por característica o desenvolvimento 
de software em vários passos similares (iterativo), com cada passo estendendo o sistema e 
deixando-o com mais funcionalidades (incremental).
Uma desvantagem frequentemente elucidada dessa abordagem é o fato da possibilidade do usuário já se 
entusiasmar em demasia com a primeira versão do sistema e pensar que esta já corresponde ao sistema final. 
Entretanto, existem várias atividades não sistêmicas que podem e devem ser desenvolvidas com os usuários, 
para que eles conheçam o ciclo de vida do projeto e a estratégia na aplicação de cada ciclo, acrescendo, ainda, as 
vantagens, como o fato de que riscos do projeto nessa abordagem podem ser melhor gerenciados e mitigados, 
fazendo com que mesmo sim valha a pena sua utilização.
2.4 O que são metodologias de desenvolvimento de software?
Podemos definir uma metodologia de desenvolvimento de software como sendo um conjunto de modelos de 
processo ou métodos que possuem alguma característica em comum. Elas são utilizadas para o estabelecimento 
de ordem, definição de padrões e para utilização de técnicas já provadas no desenvolvimento de sistemas, que 
agilizam o processo e garantem o máximo de qualidadeno software. As principais abordagens de metodologias 
de desenvolvimento de software são: metodologia estruturada; metodologia orientada a objetos; metodologia 
ágil. As principais diferenças entre elas estão nas técnicas de construção do processo de negócio, nas definições 
dos dados e nos modelos de eventos.
2.4.1 Metodologia estruturada
Em metodologias do tipo estruturada definem-se uma sucessão de processos detalhados desde o nível macro 
até o nível mais baixo. Em outras palavras, estabelece-se uma visão top-down de sistemas. Entre as metodologias 
existentes, a metodologia estruturada é a mais antiga, estando ainda em uso em algumas instituições. 
A representação dos elementos do sistema nessa metodologia é dada pelo uso do Data Flow Diagram (DFD) ou 
Diagrama de Fluxo de Dados. Esse diagrama descreve o fluxo dos dados no sistema. Já o Entity Relation Diagram (DER) 
ou Diagrama Entidade Relacionamento descreve o relacionamento entre entidades, que podem ser, por exemplo, 
objetos ou pessoas. Ele normaliza os dados do ambiente e define os dados para a aplicação. Nele, determinam-se 
os registros estruturados para serem definidos nas bases de dado. Em outras palavras, especifica-se como dados 
devem entrar e sair dos processos a serem armazenados no sistema. 
Para armazenar as descrições em um repositório, pode-se fazer uso de ferramentas CASE. O resultado é um 
modelo lógico do negócio que representa uma abstração do mundo real. Existem outros métodos que fazem 
parte dessa metodologia, mas não foram abordados aqui.
33
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
2.4.2 Metodologia Orientada a Objetos
A metodologia de desenvolvimento orientada a objetos entende cada processo como uma coleção de objetos. A 
metodologia utiliza os termos da orientação a objetos como sua base, tais como encapsulamento, requerimento, 
herança e classe. Tendo também seu próprio conjunto de diagramas, a metodologia faz uso de diagramas similares 
à metodologia estruturada. Por vezes, essa metodologia é descrita como contendo quatro fases: análise; projeto 
do sistema; projeto dos objetos; implementação. 
Atualmente, a metodologia orientada a objetos tem sido bastante aceita pelo mercado, em comparação com a 
metodologia estruturada. É possível a transição da metodologia estruturada para a orientada a objetos. Cerca de 
47 metodologias “pontes” têm sido utilizadas com essa função.
2.4.3 Metodologia ágil
O desenvolvimento de software ágil, que começou a partir da metade de 1990, pode ser visto como uma reação 
contra métodos chamados “pesados”, que continham regulamentação bastante restrita e burocrática, como o 
modelo em cascata, por exemplo. A metodologia ágil surgiu para superar os problemas do modelo em cascata 
trazidos pela sua lentidão, burocracia e contradição à forma usual com que os engenheiros de software sempre 
realizaram seu trabalho com eficiência. 
Primitivamente, métodos ágeis eram denominamos “métodos leves”. Durante uma reunião no ano de 2001, 
membros ativos da comunidade se reuniram em Snowbird, nos Estados Unidos, adotando, assim, o nome 
métodos ágeis. Posteriormente, formou-se a Agile Alliance, organização sem fins lucrativos com o objetivo de 
promover o desenvolvimento ágil.
Os métodos ágeis iniciais são os seguintes: Scrum, Crystal Clear, Programação Extrema, Adaptive Software 
Development, Feature Driven Development e Dynamic Systems Development Method. Mais tarde, outros métodos 
foram surgindo e, atualmente, métodos ágeis são bastante utilizados no processo de desenvolvimento de muitas 
empresas. A utilização dos métodos ágeis tem crescido exponencialmente, em função das empresas startups 
que desenvolvem novas soluções aproveitando a oferta de oportunidades geradas pelas novas tecnologias, 
como Internet das Coisas (IoT), e também por empresas tradicionais que, em função do dinamismo do mercado, 
necessitam rapidamente de se adaptarem ao mundo digital.
Síntese da unidade
Esta unidade teve como objetivo definir alguns conceitos básicos para a compreensão do desenvolvimento de 
softwares. Foram apresentados os conceitos de software com produto, bem como a definição de desenvolvimento 
de software, modelos de ciclo de vida e metodologia de desenvolvimento de software.
34
Considerações finais
Compreender os conceitos básicos no desenvolvimento de software 
possibilita que conceitos complexos sejam assimilados de maneira mais 
fácil no futuro.
35
 3Unidade 33. Modelos do Ciclo de Vida de 
Projetos de Desenvolvimento 
de Software
Para iniciar seus estudos
Nesta unidade, você compreenderá os principais conceitos relacionados ao 
ciclo de vida de projetos de software. Conhecer esses conceitos é essencial 
para a tomada correta de decisões relacionadas ao desenvolvimento 
de software em ambientes de desenvolvimento, como empresas, por 
exemplo. 
Objetivos de Aprendizagem
• Compreender os princípios que envolvem o ciclo de vida de 
projetos de software.
• Compreender os conceitos de arquitetura de software e da 
aplicação do conteúdo abordado através de um estudo de caso.
36
Metodologia de Desenvolvimento de Sistemas | Unidade 3 - Modelos do Ciclo de Vida de Projetos de Desenvolvimento de Software
Introdução da unidade
Esta unidade possui como foco apresentar diversos conceitos relacionados ao ciclo de vida de projetos de 
software. Além de detalharmos as etapas típicas de um ciclo de vida, apresentaremos também alguns dos principais 
modelos de ciclo de vida que podem ser utilizados no desenvolvimento de diferentes tipos de software. São eles 
os modelos sequenciais, incrementais e iterativos. Conhecê-los faz com que a decisão sobre quando aplicá-los 
se torne mais fácil. Apresentaremos também o conceito de arquitetura de software, ilustrando o conceito com 
três dos padrões de arquitetura mais utilizados: Arquitetura em Camadas, Cliente-Servidor, MVC, sendo o último 
um dos mais populares em empresas atualmente. Por fim, ilustraremos como é o processo de decisão sobre um 
modelo de ciclo de vida através da apresentação de um estudo de caso. 
3.1 Modelos do ciclo de vida de projetos de desenvolvimento 
de software
Quando pensamos no desenvolvimento de software, queremos ir logo para a parte da codificação em si. 
Entretanto, existem algumas etapas que necessitam ser realizadas antes de colocar, de fato, a mão na massa. 
Decisões relacionadas aos modelos de ciclo de vida de projetos de desenvolvimento de softwares são algumas 
delas. 
Nesta unidade, abordaremos o conceito de Ciclo de Vida de Projetos de Softwares, bem como alguns dos principais 
modelos existentes. Além disso, apresentaremos e discutiremos o conceito de arquitetura de software juntamente 
com alguns dos padrões existentes. Por fim, apresentaremos um estudo de caso que ilustra a aplicação de 
modelos de ciclo de vida no desenvolvimento de softwares.
3.1.1 Ciclo de vida de projetos de software
Para compreender a definição de ciclo de vida de projetos, primeiramente é necessário compreender a definição 
de projeto. De acordo com o PMBOK (Project Management Body of Knowledge), um conjunto de práticas na gestão 
de projetos desenvolvido pelo instituto PMI, a definição de projeto é dada pelo seguinte trecho:
Um projeto é um esforço temporário, empreendido para criar um produto, serviço ou resultado 
exclusivo. Os projetos e as operações diferem, principalmente, no fato de que os projetos são 
temporários e exclusivos, enquanto as operações são contínuas e repetitivas.
De forma geral, o objetivo de um projeto é entregar um produto ou serviço. Quando estamos nos referindo ao 
desenvolvimento de software, o produto do projeto não é algo produzido com ferro derretido que sai moldado de 
uma forma, mas sim algo mais complexo. 
O processo de produção de um software deve ser mais elaborado, o que resulta em um processo mais complexo. Ele 
demanda uma série de atividades que devem ser realizadas de acordo com critérios estabelecidos previamente.Essas atividades são agrupadas por questão de organização e afinidade entre fases, que são então colocadas em 
sequência, considerando uma ordem lógica, de forma que sejam executadas na linha do tempo, que vai do início 
ao fim do projeto. O sequenciamento das fases do projeto de acordo com os critérios adotados é chamado de 
ciclo de vida do projeto (STAIR, 2016).
37
Metodologia de Desenvolvimento de Sistemas | Unidade 3 - Modelos do Ciclo de Vida de Projetos de Desenvolvimento de Software
Os critérios adotados em um ciclo de vida do projeto são os métodos ou processos escolhidos 
para ele.
Saiba mais
Outra forma de definição de ciclo de vida de um projeto de software é dada pela norma NBR ISO/IEC 12207:1998 
que o define oficialmente como sendo uma:
Estrutura contendo processos, atividades e tarefas envolvidas no desenvolvimento, operação e 
manutenção de um produto de software, abrangendo a vida do sistema, desde a definição de seus 
requisitos até o término de seu uso.
Em outras palavras, os modelos de ciclo de vida são o esqueleto ou as estruturas predefinidas nas quais 
encaixamos as fases do processo. A primeira escolha a ser feita no processo de desenvolvimento de um software é 
sobre o modelo de ciclo de vida. Partindo dessa escolha, a melhor forma de obter as necessidades do cliente será 
definida, além da provável data em que o mesmo receberá uma primeira versão do sistema em funcionamento. 
A duração do ciclo de vida de um software vai do começo da sua produção até o momento em que seu uso é 
extinguido. Em geral, os ciclos de vida envolvem as seguintes fases que serão detalhadas a seguir: Planejamento, 
Análise e Especificação de Requisitos, Projeto, Implementação, Testes, Entrega e Implantação, Operação e 
Manutenção.
3.1.2 Planejamento
Na etapa de planejamento, o escopo do software é determinado. Deve-se também fornecer uma estrutura de 
modo que possibilite ao gerente a realização de estimativas iniciais tanto de recursos quanto de custos e prazos. 
É normal, na fase de planejamento, o gerente de projetos construir cronogramas de atividades considerando 
recursos necessários e custo de horas, assim também como recursos dos clientes. Além disso, deve-se elaborar 
um plano de projeto que deve ser definido a partir do processo a ser utilizado.
3.1.3 Análise e especificação de requisitos
Na etapa de análise e especificação de requisitos, o escopo do software é refinado, sendo necessário, conforme 
as boas práticas do PMI (Project Management Institute), gerar um documento de change management, ou mudança 
de documento, para documentar as possíveis incongruências entre o escopo original e o refinado, considerando 
também as mudanças que podem impactar o prazo e o custo do projeto. O objetivo aqui é analisar o domínio do 
problema e da solução e definir exatamente o que o software deve fazer, ou seja, quais as funcionalidades que 
deverão existir e de que modo o software deve se comportar. Um documento com os requisitos do software deve 
ser gerado de forma que não haja ambiguidades ou inconsistência entre os mesmos.
38
Metodologia de Desenvolvimento de Sistemas | Unidade 3 - Modelos do Ciclo de Vida de Projetos de Desenvolvimento de Software
3.1.4 Projeto
A etapa de projeto envolve duas grandes etapas: o projeto da arquitetura do software, bem como o projeto 
detalhado. O resultado da etapa anterior é utilizado como insumo. Aqui pode-se definir, por exemplo, tipos 
de dados a serem utilizados e mecanismo de acesso a eles. Além disso, são fornecidos detalhes essenciais à 
implementação.
3.1.5 Implementação
Na etapa de implementação, o projeto que está no papel é traduzido para uma forma que seja passível de 
execução por um computador. Em outras palavras, o código é de fato escrito, implementando funcionalidades 
que foram identificadas no início do processo.
3.1.6 Testes
Nesta etapa, são executados testes unitários de diversos componentes e anotando os resultados. Além disso, a 
integração de componentes e o sistema como um todo também são testados. O objetivo é encontrar bugs ou 
defeitos.
Alguns modelos de processo já preveem testes nas etapas iniciais do ciclo de vida, assim 
como definem estratégias e roteiro, considerando a participação do usuário e do perfil do 
Analista de Teste.
Fique atento!
3.1.7 Entrega e implantação
Na etapa de entrega e implantação, o software é instalado no ambiente de produção. Portanto, envolve a 
capacitação de usuários, a configuração do ambiente de produção e conversão de bases de dados, caso seja 
necessário. O objetivo maior desta etapa é realizar o Teste de Aceitação com o usuário. Em outras palavras, 
verifica-se se o software satisfaz os requisitos que foram impostos pelos usuários. Alguns métodos de ciclo de 
vida denominam esta fase como Homologação. 
3.1.8 Operação
39
Metodologia de Desenvolvimento de Sistemas | Unidade 3 - Modelos do Ciclo de Vida de Projetos de Desenvolvimento de Software
A etapa de operação consiste na real utilização do software pelo usuário no seu ambiente de trabalho. Esta etapa 
é executada após o teste de aceitação da etapa anterior ser concluído com sucesso. 
3.1.9 Manutenção
A manutenção consiste em fazer alterações no software por algum motivo específico. As manutenções podem ser 
Adaptativas, Evolutivas e Corretivas. A manutenção adaptativa tem por objetivo a adequação do software a seu 
ambiente. A manutenção evolutiva tem o intuito de melhorar a qualidade do software geralmente acrescentando 
novas funcionalidades. Por fim, a manutenção corretiva visa corrigir erros que não foram detectados na etapa 
de teste. Normalmente, nesta fase do projeto, as empresas optam por capacitar e manter uma equipe específica 
para dar sustentação ao sistema.
3.2 Principais modelos do ciclo de vida
A primeira escolha software a ser feita no processo de software é a decisão em relação a qual modelo de ciclo de 
vida utilizar. Essa escolha será influenciada pela forma mais adequada de atender às necessidades do cliente, 
da cultura da equipe de TI atual, bem como quando ele deseja receber uma versão inicial do mesmo em 
funcionamento. A Figura 16 ilustra o funcionamento de três das principais abordagens para definir o ciclo de 
vida. 
Figura 16 – Diferença entre os modelos de ciclo de vida: sequencial, incremental e iterativo
Software desejado = + + 
Sequencial Versão 1 Versão 2 Versão 3
Incremental
Iterativo
Fonte: Elaborada pelo autor.
40
Metodologia de Desenvolvimento de Sistemas | Unidade 3 - Modelos do Ciclo de Vida de Projetos de Desenvolvimento de Software
Para decidir sobre qual modelo utilizar, é necessário ter em mente que não existe um modelo ideal. Características 
como perfil e complexidade do problema do cliente, tempo e custo máximo, equipe envolvida e ambiente onde 
o software irá executar são fatores que influenciarão diretamente na escolha de um modelo de ciclo de vida a ser 
utilizado. 
Do mesmo modo, é raro que uma empresa utilize um único ciclo de vida. Na maior parte das vezes, o processo 
se dá com mais de um ciclo de vida envolvido. Ciclos de vida podem se comportar de maneira sequencial (uma 
fase segue a outra em ordem), iterativa (fases possuem retroalimentação) ou até mesmo incremental (software 
é aprimorado a cada fase) (PRESSMAN, 2016). A seguir, veremos essas três formas de gerar ciclos de vida no 
desenvolvimento de softwares.
3.2.1 Modelos sequenciais
Modelos sequenciais organizam o processo de desenvolvimento de software em uma sequência linear de fases. 
Este modelo se aplica em situações onde requisitos estão bem definidos visto que cada fase somente acontece 
uma vez, dificultando a descoberta e implementação de requisitos na fase desenvolvimento, por exemplo. 
Softwares mais simples podem ser desenvolvidos utilizando este modelo. Um exemplo deste tipo de modelo é o 
Cascata, exemplificado na Figura 17.
Figura 17 – Modelo de ciclo de vida em cascata
Requisitos
Design
Análise
Desenvolvimento
Testes
Operação
Fonte:Elaborada pela autora.
3.2.2 Modelos incrementais
Modelos sequenciais propõem o desenvolvimento de softwares em incrementos ou módulos. Dessa forma, seu 
desenvolvimento segue o fluxo sequencial sendo, por exemplo, um requisito implementado por vez, passando 
por todas as etapas do desenvolvimento. Dessa forma, o cliente já possui uma versão inicial do sistema bem 
antes que o modelo sequencial. Outra vantagem é que o cliente vai avaliando o avanço do desenvolvimento dos 
incrementos/módulos e checando se o software que está sendo construído é o que ele realmente quer. Em relação 
41
Metodologia de Desenvolvimento de Sistemas | Unidade 3 - Modelos do Ciclo de Vida de Projetos de Desenvolvimento de Software
a suas desvantagens, podemos citar o fato de que requisitos instáveis ou incompletos geram muitas mudanças nos 
incrementos. Além disso, a gestão do projeto se torna mais complexa utilizando este modelo. Um exemplo disso 
deste modelo é o RAD (Rapid Application Development) que preza pelo ciclo de desenvolvimento curto, mostrado na 
Figura 18.
Figura 18 – Fases do desenvolvimento rápido de aplicação (RAD)
Análise Inicial
Modelagem de negócio
Testes e correções
Entrega
Modelagem de dados
Modelagem de Processo
Geração da aplicação
Fonte: Elaborada pela autora.
3.2.3 Modelos iterativos
Nos modelos iterativos, não se tem a preocupação em entregar versões que o usuário já consiga operar já no 
primeiro ciclo de vida. O que geralmente são produzidos são protótipos ou modelos para checar se o que está 
sendo desenvolvido é o que o usuário precisa. À medida que os requisitos vão ficando mais claros e constantes, 
versões que o usuário já consiga manipular vão surgindo. Esta abordagem permite aos usuários finais refinarem 
cada vez mais o propósito do software, abrangências e funcionalidades.
Modelos iterativos podem ser empregados para solução de problemas mais complexos, bem como quando 
requisitos mudam a todo momento ou quando não se sabe elucidar ao certo todos os requisitos no início do 
processo. Exemplos de modelos iterativos são o RUP (Rational Unified Process) e o Modelo Espiral, que é ilustrado 
na Figura 19.
42
Metodologia de Desenvolvimento de Sistemas | Unidade 3 - Modelos do Ciclo de Vida de Projetos de Desenvolvimento de Software
Figura 19 – Modelo de ciclo de vida espiral
Fonte: Elaborada pela autora.
3.3 Arquitetura de software
A arquitetura de software é uma descrição em alto nível de abstração que mostra uma visão completa da estrutura 
do sistema (PRESSMAN, 2016). Essa descrição deve dar suporte às funcionalidades existentes no sistema, 
portanto seu comportamento dinâmico deve ser levado em consideração. Além disso, também deve estar em 
conformidade com a qualidade, fazendo com que os requisitos não funcionais sejam de fato aplicados. No nível 
da arquitetura, detalhes de implementação devem ser ocultados. 
Não fazem parte da arquitetura de software o design detalhado (ou de baixo nível) que mostra o projeto dos 
componentes internos, modelos de dados e implementação. Além disso, a arquitetura do sistema físico, que 
inclui processador, topologia de rede, arquitetura de elementos de hardwares, entre outros, também não está 
incluída em arquitetura de software.
43
Metodologia de Desenvolvimento de Sistemas | Unidade 3 - Modelos do Ciclo de Vida de Projetos de Desenvolvimento de Software
Figura 20 – O papel da arquitetura de software no desenvolvimento de software
Requisitos
Requisitos
Arquitetura de Software
Código
Código
?
Fonte: Elaborada pela autora.
Ao longo dos anos, softwares passaram a ter grande importância. Se no início eram aplicações mais simples, 
atualmente estão se tornando cada vez mais complexos, chegando ao ponto de controlar decolagem e pouso de 
aeronaves. Suas funcionalidades simples no princípio de sua popularização, como na utilização de planilhas, não 
chegam próximas da complexidade dos softwares mais recentes contendo um número enorme de funcionalidades, 
como no controle de usinas, por exemplo. Para que isso pudesse acontecer, houve modificações na arquitetura 
dos softwares daquela época para que pudessem suportar tamanha complexidade.
Softwares que são bem arquitetados possuem diversas vantagens. A primeira delas é o fato de que suportam um 
aumento de carga considerável sem perda de desempenho. Além disso, podem ser facilmente escalados. Por fim, 
a arquitetura de um software pode também servir para gerar uma estimativa de custo e gerência de determinado 
projeto. Normalmente, características de arquitetura e custos são computados durante a análise de viabilidade e 
pré-projeto, pois influenciam escopo, prazo e custo do projeto de software.
Os padrões de arquitetura de software surgiram como formas de apresentar, compartilhar e reutilizar conhecimento 
sobre sistemas de software. Propostos na década de 90, são amplamente utilizados até os dias de hoje. Para 
compreender a definição de um padrão de arquitetura de software, é necessário pensar em uma descrição 
abstrata, estilizada, de boas práticas já experimentadas e testadas em diversas aplicações e ambientes. Portanto, 
um padrão de arquitetura deve conter a descrição de uma organização de um sistema que obteve sucesso 
anteriormente. Além disso, deve informar também sobre quando é melhor sua utilização, bem como seus pontos 
fortes e fracos. A seguir, descreveremos três dos principais tipos de padrões de arquitetura (SOMMERVILLE, 2007): 
em Camadas, MVC e Cliente-Servidor.
44
Metodologia de Desenvolvimento de Sistemas | Unidade 3 - Modelos do Ciclo de Vida de Projetos de Desenvolvimento de Software
3.3.1 Arquitetura de software em camadas
O padrão de arquitetura em camadas é uma forma de obter separação e independência entre os componentes 
do software. Neste padrão, as diversas funcionalidades do sistema são distribuídas em camadas separadas, onde 
cada camada só depende dos recursos e serviços que são oferecidos pela camada imediatamente inferior. O 
Quadro 1 mostra algumas das características deste padrão.
Quadro 1 – Descrição da arquitetura de software em camadas
Nome Arquitetura em camadas
Descrição Organiza o sistema em camadas com funcionalidades distribuídas entre elas. Uma 
camada fornece serviços à superior.
Exemplo Sistema de compartilhamento de documentos com direitos autorais, em bibliotecas 
diferentes.
Quando é 
usado
Usado na construção de novos recursos em cima de sistemas existentes, quando o 
desenvolvimento está espalhado por várias equipes.
Vantagens Substituição de camadas inteiras (mantendo interface). 
Desvantagens É difícil a separação clara entre camadas. Desempenho pode ser prejudicado. 
Fonte: Elaborado pela autora.
Esta abordagem suporta o desenvolvimento incremental de sistemas. Ao se desenvolver uma camada, alguns dos 
seus serviços já podem ser disponibilizados ao usuário. A arquitetura é passível de mudança e portável. Contanto 
que sua interface não seja alterada, uma camada pode ser trocada por outra equivalente. E, caso uma camada 
seja alterada, somente a camada adjacente é afetada. 
Na Figura 21 a seguir, exemplificamos uma arquitetura em quatro camadas.
Figura 21 – Exemplo de arquitetura em camadas
Interface de usuário
Gerenciamento de interface de usuário
Autenticação e autorização
Lógica de negócio principal/funcionalidade de 
aplicação Recursos de sistema
Apoio de sistema (SO, banco de dados, etc.)
Fonte: Elaborada pela autora.
45
Metodologia de Desenvolvimento de Sistemas | Unidade 3 - Modelos do Ciclo de Vida de Projetos de Desenvolvimento de Software
No exemplo da figura anterior, a camada mais baixa contém softwares de apoio ao sistema, como banco 
de dados ou sistema operacional. A segunda camada é a camada de aplicação, incluindo componentes que 
estejam relacionados com o funcionamento da aplicação e componentes utilitários que sejam utilizados por 
componentes da aplicação. A terceira camada se preocupa com o gerenciamento de interface de usuário, bemcomo provê autenticação e autorização ao usuário. Por fim, a quarta camada fornece recurso de interface com 
usuário. O número de camadas nesse padrão é arbitrário.
3.3.2 Arquitetura de software MVC
As características de separação e independência em um padrão de arquitetura são essenciais visto que 
possibilitam com que alterações sejam localizadas. O padrão MVC (Modelo-Visão-Controlador ou Model-View-
Controller) separa os componentes de um sistema em camadas Modelo, Visão e Controlador de forma que seja 
possível alterá-los independentemente. Exemplo disso seria trocar a camada de visão sem ter que alterar as 
restantes. 
A Figura 22 a seguir faz uma analogia da atividade “assistir à TV” com o padrão MVC. O usuário utiliza o controle 
para interagir com as funcionalidades do sistema que estão no modelo. O modelo é um DVD que é quem gerencia 
o que vai ser exibido, de acordo com o que for determinado pelo controle. A camada de visualização, nesse caso, 
é a TV que recebe as ordens da camada modelo (DVD) sobre o que exibir.
Figura 22 – Analogia do modelo MVC com um usuário que assiste a uma TV
Usuário Controlador
Fonte: Adaptada de SHUTTERSTOCK, 2018.
46
Metodologia de Desenvolvimento de Sistemas | Unidade 3 - Modelos do Ciclo de Vida de Projetos de Desenvolvimento de Software
Esse padrão geralmente é utilizado no gerenciamento de iteração em sistemas baseados na Web. O Quadro 2 
resume o padrão MVC. 
Quadro 2 – Descrição da arquitetura de software MV
Nome MVC
Descrição
Separa a apresentação e a interação dos dados do sistema. O componente 
modelo gerencia o sistema de dados e as operações associadas a eles. O 
componente visão define como os dados são apresentados ao usuário. O 
componente controlador gerencia a interação do usuário (ex.: mouse) e passa as 
interações para os outros componentes. 
Exemplo Sistema aplicativo baseado na internet.
Quando é usado Quando existem diversas maneiras de visualizar e interagir com dados. 
Vantagens 
Permite que dados sejam alterados independentemente da sua representação 
e vice-versa. 
Desvantagens Em sistemas simples, o código fica complexo. 
Fonte: Elaborado pela autora.
3.3.3 Arquitetura cliente-servidor
O padrão de arquitetura cliente-servidor é bastante utilizado em sistemas distribuídos, mas pode também ser 
implementado em um único computador. Sua descrição é apresentada no Quadro 3. Nesse tipo de padrão, o 
sistema se organiza como um conjunto de serviços e servidores associados e clientes que utilizam esses serviços.
Quadro 3 – Descrição da arquitetura de software cliente-servidor
Nome Cliente-servidor
Descrição
Funcionalidades associadas a serviços que são oferecidos por servidores. Clientes 
podem solicitar serviços. 
Exemplo Biblioteca de vídeos organizados como um sistema cliente-servidor.
Quando é usado
Quando banco de dados compartilhado precisa ser acessado a partir de uma 
série de locais. 
Vantagens Servidores podem ser distribuídos através de uma rede. 
Desvantagens
Cada serviço é um ponto único de falha suscetível a ataques. Desempenho 
depende da rede. 
Fonte: Elaborado pela autora.
47
Metodologia de Desenvolvimento de Sistemas | Unidade 3 - Modelos do Ciclo de Vida de Projetos de Desenvolvimento de Software
Os principais elementos dessa abordagem são:
1. Um conjunto de servidores oferecendo serviços a outros componentes. Ex.: servidores de impressão que 
oferecem serviços de impressão.
2. Um conjunto de clientes que podem chamar pelos serviços que servidores oferecem.
3. Uma rede que permita aos clientes acessar esses serviços. 
Neste tipo de arquitetura, como nos outros padrões, também se faz presente a separação e a independência. 
Serviços e servidores podem ser alterados sem modificar o restante dos sistemas. Além disso, clientes precisam 
conhecer os servidores e serviços disponíveis, mas servidores não precisam conhecer os clientes. Solicitações são 
feitas por clientes a um servidor que deve respondê-las. 
A Figura 23 contém um exemplo de um sistema multiusuário que utiliza internet para fornecer uma biblioteca de 
filmes e fotos e que usa o modelo cliente-servidor. Servidores diferentes gerenciam mídias diferentes devido às 
suas diferenças. O servidor de catálogos deve fornecer consultas rápidas, além de comércio eletrônico. Por fim, 
um servidor para rodar o programa do cliente numa interface rodando em um browser da internet é utilizado.
Figura 23 – Uma arquitetura cliente-servidor para biblioteca de filmes
Cliente 1
Internet
Servidor de
catálagos
Catálogo de
Biblioteca
Servidor
de vídeos
Servidor
de Fotos
Servidor
Web
Informações sobre
vídeos/fotos
Arquivo de
Filmes
Arquivo de
Fotos
Cliente 2 Cliente 3 Cliente 4
Fonte: Elaborada pela autora.
3.4 Estudo de caso
Nesta seção, desenvolveremos um estudo de caso com o objetivo de consolidar os principais conceitos teóricos 
descritos nesta unidade e prover uma visão prática de como decidir em um projeto do mundo real em relação a 
qual modelo de ciclo de vidas utilizar. 
O sistema do estudo de caso descrito a seguir será chamado de Sistema de Controle Acadêmico (SCA). Uma 
universidade necessita de um software para a gestão dos diversos processos acadêmicos, como matrícula 
em disciplina, lançamento de notas, alocação de recursos para professores, entre outras ações. Após um 
levantamento, obteve-se uma lista de requisitos iniciais. A universidade tem urgência em utilizar o sistema, visto 
48
Metodologia de Desenvolvimento de Sistemas | Unidade 3 - Modelos do Ciclo de Vida de Projetos de Desenvolvimento de Software
que o início do semestre letivo já está próximo e pelo menos as funcionalidades básicas relacionadas à matrícula 
de alunos não podem demorar a ser implementadas. Além disso, não se tem uma ideia total de como deve ser o 
sistema, apenas uma ideia inicial. 
Considerando a descrição do parágrafo acima, qual seria o modelo de ciclo de vida ideal para o processo do 
desenvolvimento do software SCA? Analisando as informações obtidas, podemos verificar que o modelo ideal 
seria um dos modelos do tipo incremental. Assim, o cliente, que no caso seria a universidade, logo ao final do 
primeiro ciclo já teria uma versão inicial do sistema que poderia ir sendo utilizada. Além disso, a universidade não 
tem uma ideia consistente do que deseja no software, apenas uma ideia dos requisitos iniciais. Desenvolvendo-o 
de forma incremental e com a utilização pela universidade de cada versão, provavelmente serão descobertos 
novos requisitos. Um exemplo de modelo que poderia ser aplicado nesta situação seria o RAD (Rapid Application 
Development) que preza pelo ciclo de desenvolvimento curto.
Síntese da unidade
Nesta unidade, abordamos a definição de ciclo de vida de projetos, suas etapas e os principais modelos existentes. 
Além disso, apresentamos a definição de arquitetura de software, citando também alguns dos padrões de 
arquitetura mais utilizados. Por fim, aplicamos alguns dos conceitos abordados durante a unidade através da 
definição de um estudo de caso.
49
Considerações finais
Desenvolver softwares é um processo complexo, pois seu sucesso 
depende tanto de pessoas quanto de processos e ferramentas. Existe uma 
infinidade de modelos de processo. Entretanto, todos possuem pontos 
positivos e negativos. Todos possuem fases que são comuns à maioria dos 
processos. O ideal é procurar pelo o que mais se adéqua à aplicação a ser 
desenvolvida.
50
 4Unidade 44. Modelos MDS 
Para iniciar seus estudos
Nesta unidade, você compreenderá algumas das diferentes metodologias 
de desenvolvimento de software existentes. Além disso, realizaremos uma 
comparação entre diferentes metodologias, bem como a exploração dos 
conceitos em um estudo de caso. A partir destes conceitos, suas decisões 
acerca de quais métodos utilizar em projetos futuros serão as mais 
corretas possíveis. 
Objetivos de Aprendizagem
• Descrever as principais metodologias de desenvolvimento de 
sistemas existentes para que sejapossível sua aplicação em 
diferentes processos.
• Realizar comparações entre metodologias existentes.
• Analisar estudos de caso.
51
Metodologia de Desenvolvimento de Sistemas | Unidade 4 - Modelos MDS 
Introdução da unidade
A utilização de padrões no desenvolvimento de software se consolidou à medida que os softwares se tornaram 
mais complexos. A necessidade de sistemas com um grande número de funcionalidades fez com que o processo 
de desenvolvimento requeresse uma organização mais formal, de forma que prazos pudessem ser cumpridos, 
e padrões de qualidade, atingidos. Por esse motivo, a utilização de metodologias de desenvolvimento de 
sistemas se tornou algo de extrema importância para a maioria das equipes de desenvolvimento. Esta unidade 
abordará diferentes tipos de metodologias de desenvolvimento de sistemas, com o intuito de compará-las. 
Compreendê-las possibilita que fiquem claras suas vantagens e desvantagens, resultando na tomada das 
melhores decisões sobre métodos para o desenvolvimento de seus projetos.
4.1 Modelos MDS
O surgimento das metodologias de software se deu a partir da grande necessidade de padronizar o processo 
de análise e desenvolvimento de software. O rápido avanço da tecnologia resultou em hardwares cada vez mais 
potentes. Assim, o desenvolvimento de softwares de grande porte se tornou algo mais usual. 
A forma como softwares estavam sendo desenvolvidos não suportava a produção em tal escala. A partir disso, 
surgiram os métodos para padronização e documentação do desenvolvimento de software, fazendo com que 
agora se tornasse viável. Ao longo dos anos, diversas metodologias, pelas mudanças nos padrões, foram surgindo 
a fim atender às necessidades de mercado. Nesta unidade, serão apresentadas as principais metodologias de 
desenvolvimento, bem como uma comparação entre elas e um estudo de caso aplicando os conceitos abordados.
4.1.1 Principais MDS
Uma metodologia de desenvolvimento de software pode ser vista como uma coleção de métodos designados 
para cada atividade ou fase do projeto de um sistema. Nesta seção, serão abordados três dos principais tipos 
de metodologia de desenvolvimento de sistemas, que possuem o intuito de agilizar, organizar e estabelecer 
padrões que garantem maior qualidade do software: metodologia estruturada, metodologia orientada a objetos 
e metodologia ágil.
4.1.2 Metodologia estruturada
A metodologia estruturada surgiu no início da década de 1980 (OLIVEIRA, 1999), com o intuito de solucionar 
os problemas existentes do método de programação linear, método apelidado de “código espaguete”, devido à 
falta de organização existente, fazendo alusão a um emaranhado semelhante a um macarrão. A proposta foi de 
uma abordagem que fosse estruturada para a programação de computadores. Essa nova forma de desenvolver 
criou padrões para os métodos de desenvolvimento, de forma que se tornou indispensável para os profissionais 
daquela época. Ao longo da sua extensiva utilização por mais de uma década, incorporou banco de dados 
relacionais, ferramentas CASE, além de realizar diversas simplificações e melhorias. 
52
Metodologia de Desenvolvimento de Sistemas | Unidade 4 - Modelos MDS 
O termo “estruturada” diz respeito ao fato de que métodos dessa metodologia seguem uma espécie de “passo a 
passo”, chegando a uma estrutura formal final que deve sempre ser seguida. Cada passo é realizado baseando-se 
no resultado do passo anterior. A principal utilização dessa metodologia está associada à documentação e 
análise de projeto de sistemas. Diferentemente da metodologia orientada a objetos (abordada a seguir), seus 
métodos seguem um desenvolvimento estruturado orientado a processos, em vez de serem orientadas a objetos. 
Processos são a forma como os dados vão sendo transformados.
Grande parte das metodologias estruturas são definidas em uma abordagem chamada top-down (de cima para 
baixo). Em outras palavras, é feito um enfoque mais abrangente até chegar ao mais detalhado, passando por 
camadas especificadas do genérico ao mais específico. 
Essa metodologia engloba diversos métodos e processos de software. Alguns dos principais métodos da 
metodologia estruturada são: análise estruturada, projeto estruturado, programação estruturada, análise 
essencial, Structured Analysis and Design Technique (SADT), Diagrama de Fluxo de Dados (DFD) e Modelo Entidade-
Relacionamento (MER). Nesta seção, será feito um enfoque na análise estruturada.
Análise estruturada
Análise estruturada é uma abordagem tradicional para o desenvolvimento de sistemas que foi utilizada durante 
um longo período, principalmente devido à facilidade em sua compreensão (SHELLY,2012). Essa técnica utiliza 
uma sequência de fases, também chamada de Ciclo de Vida de Desenvolvimento de Sistemas (Systems Development 
Life Cycle - SDLC), para planejar, analisar, projetar, implementar e apoiar a construção de um sistema. Mesmo com 
suas modificações ao longo dos anos, essa técnica ainda se faz presente no desenvolvimento de software em 
diversas empresas. Sendo baseada em um plano similar ao modelo para construção de edifícios, algumas vezes 
aparece na literatura como abordagem preditiva. 
A análise estruturada se utiliza de um conjunto de modelos de processo para descrever graficamente um 
sistema. Por vezes, é chamada de “técnica centrada no processo”, devido ao fato de que foca, principalmente, 
nos processos que fazem com que os dados se tornem informações úteis. A análise estruturada não modela só 
os processos, mas também aborda a estrutura e organização dos dados, o projeto do banco de dados relacional 
e os problemas da interface do usuário. 
Um modelo de processo indica os dados que entram e saem dos processos do sistema. Processos recebem os 
dados de entrada, transformando-os por meio das regras de negócios e gerando dados de saída. A Figura 24 
exemplifica um modelo de processo que representa um sistema de registro escolar e é chamado de Diagrama de 
Fluxo de Dados (Data Flow Diagram – DFD), devido ao fato de utilizar diversos símbolos e formas para representar 
o fluxo, o processamento e o armazenamento dos dados.
53
Metodologia de Desenvolvimento de Sistemas | Unidade 4 - Modelos MDS 
Figura 24 – Diagrama de fluxo de dados para um sistema de registro escolar
Alunos
Cursos
Lista de
Aluno
Matricular
Alunos
DADOS DE
REGISTRO
DADOS DO CURSO
ENTRADA
SAÍDA
Sistema de Registro Escolar
Fonte: Adaptada de SHELLY, 2012.
A análise estruturada foca na utilização do SDLC para planejar e administrar o processo de desenvolvimento 
de sistemas. O SDLC especifica atividades e funções que todos os desenvolvedores de sistemas realizam, 
independentemente da abordagem utilizada. O modelo em cascata pode ser utilizado para ilustrar a movimentação 
dos dados no SDLC. O resultado de cada uma das suas fases é chamado de “entregável” ou produto final, que flui 
em direção à fase seguinte. 
Alguns analistas veem desvantagens na utilização de modelos que descrevem o SDLC, como o modelo em 
cascata, pelo fato de que na maioria das vezes não fica clara a interatividade entre as fases. Entretanto, na maior 
parte das vezes, as fases do SDLC não são seguidas com rigidez. Geralmente, modelos são descritos de forma que 
as fases adjacentes possam interagir entre si, como mostram as setas pontilhadas da Figura 25. Já outros analistas 
compreendem o fluxo de dados nesse modelo como sendo bidirecional, com ênfase na interação e entrada de 
usuário. Dessa forma, o modelo seria mais semelhante aos modelos das metodologias ágeis.
.
54
Metodologia de Desenvolvimento de Sistemas | Unidade 4 - Modelos MDS 
Figura 25 – As fases e os “entregáveis” do SDLC no modelo em cascata
Solicitação 
do Sistema
Fase 1
Planejamento de
Sistema
Relatório de
Investigação
Preliminar
Documento de
Requisitos do 
Sistema
Especificação do
Projeto do Sistema
Sistema 
Funcionando
Completamente
Sistema Efetivo
Fase 3
Projeto de Sistema
Fase 2
Análise deSistema
Fase 4
Implementação de
Sistema
Fase 5
Segurança e Suporte
de Sistema
Fonte: Adaptada de SHELLY, 2012.
O modelo SDLC, geralmente é composto por cinco etapas: planejamento de sistema, análise de sistema, projeto 
de sistema, implementação de sistema e suporte e segurança de sistema. Essas etapas serão descritas a seguir.
Planejamento de sistema
A fase de planejamento de sistema recebe como entrada a “solicitação do sistema”, que é um documento 
descrevendo a necessidade ou motivação para um novo sistema que atua em uma questão de negócio, problemas 
ou mudanças desejadas em um sistema já existente. Em muitos casos, a inclusão de requisitos de Tecnologia da 
Informação (TI) por gerentes e usuários no plano de negócio acaba gerando solicitações de sistema. Solicitações 
de sistema podem vir do chefe de departamento, do gerente superior, da equipe de planejamento ou até mesmo 
55
Metodologia de Desenvolvimento de Sistemas | Unidade 4 - Modelos MDS 
do departamento de TI. Solicitações podem estar em diferentes escalas. Uma solicitação menor pode pedir um 
novo recurso no sistema, e uma solicitação maior pode envolver a criação de um sistema. 
O objetivo dessa fase é realizar investigações iniciais para avaliar uma oportunidade ou problema de negócio 
relacionado à TI. Essa investigação é extremamente importante, visto que afetará todos as fases seguintes. 
Nessa etapa, uma parte essencial da investigação é o estudo da viabilidade, que avalia os custos e benefícios, 
recomendando ações baseadas nisso. 
Suponha que o analista receba a solicitação de sistema para mudar o software. 
O primeiro passo é verificar se faz sentido realizar a investigação preliminar. Caso a investigação seja feita, pode 
ser que conclua que não é necessário realizar alteração alguma no sistema, pois o problema não está nele. Caso 
contrário, se for descoberto que o sistema realmente necessita de alterações, segue-se para a próxima etapa.
Análise de sistema
O objetivo da fase de análise de sistemas é construir um modelo lógico do sistema a ser desenvolvido. Como 
passo inicial, deve-se modelar requisitos, investigando processos de negócio e documentando as funcionalidades 
que o sistema deve ter para satisfazer às necessidades do usuário. Na modelagem de requisitos, continua-se 
a investigação iniciada na etapa de planejamento do sistema. Para compreender o sistema, pode-se realizar 
entrevistas, pesquisas, fazer uma revisão de documentos existentes, realizar observação ou amostragem. Essas 
técnicas resultam em modelos de negócio, modelos de processo e de dados e modelos de objetos. O resultado final 
dessa fase, também chamado de “entregável”, é o documento de requisitos do sistema. Ele descreve requisitos 
de usuário e de gerenciamento, os custos e benefícios, além de alternativas para estratégias de desenvolvimento. 
Projeto de sistema
O objetivo da etapa de projeto de sistema é criar um modelo físico que contemple os requisitos documentados 
para o sistema. O projeto da interface de usuário, a identificação das saídas, entradas e processos são englobados 
nessa etapa. Além disso, são projetados controles internos e externos para garantir que o sistema seja confiável, 
consistente e seguro. É também nesta etapa que se decide sobre a arquitetura do software que será usada pelos 
programadores para transformar o projeto lógico em código. 
O resultado dessa etapa é a especificação do projeto do sistema que é apresentado à gestão e ao usuário para 
revisão e aprovação. A participação de ambos é fundamental para evitar com que haja mal-entendidos sobre o 
que o sistema fará, o modo como ele fará e qual será o custo.
Implementação de sistema
A etapa de implementação de sistema é quando, de fato, o sistema é construído. Independentemente da 
metodologia utilizada, seja orientada a objetos, seja estrutura, as ações a serem realizadas são as mesmas: escrever 
o programa, testá-lo, documentá-lo e instalá-lo. O objetivo dessa fase é fornecer um sistema completamente 
funcional e documentado. Em outras palavras, ao final dessa fase, o sistema deve estar pronto para uso. Pode 
incluir, também, conversão de arquivos para serem executados no novo sistema, capacitação de usuários e tudo o 
que for necessário para realizar a transição para o novo sistema. Por fim, pode incluir uma avaliação para verificar 
se seu funcionamento, seus custos e benefícios estão dentro do esperado. 
Suporte e segurança de sistema
A última etapa é o suporte e segurança de sistema. Consiste em manter, aprimorar e proteger o sistema. A 
manutenção corrige erros e adapta o sistema ao ambiente. O aprimoramento provê novas funcionalidades 
56
Metodologia de Desenvolvimento de Sistemas | Unidade 4 - Modelos MDS 
para obter mais benefícios. Já a segurança protege o sistema de ameaças internas e externas. Um sistema bem 
desenvolvido deve ser seguro, confiável, fácil de dar manutenção e escalável.
Apesar de existirem cinco fases na análise estruturada, o desenvolvimento de um sistema 
nunca chega ao fim, visto que as regras de negócio estão sempre mudando, o que leva à 
necessidade frequente de alteração do software.
Fique atento!
4.1.3 Metodologia orientada a objetos
Com o início da programação orientada a objetos e a consolidação de seus conceitos, sua utilização começou a 
se dar em grande escala nos meios acadêmicos. 
A partir da década de 1990 (OLIVEIRA, 1999), metodologias orientadas a objetos começaram a ser estudadas e 
aprimoradas. O objetivo do surgimento dessas metodologias era superar as limitações impostas pelos métodos 
existentes naquela época, grande parte baseados na metodologia estruturada. A cada dia, essa metodologia 
recebe mais adeptos na preferência em relação à estruturada. Sua função é designada como visualizar, modelar 
e implementar sistemas como uma coleção de objetos que interagem entre si, utilizando-se de linguagens de 
modelagem especializadas, atividades e técnicas necessárias para abordar problemas específicos do paradigma 
orientado a objetos (KHAN, 2011). 
As metodologias orientadas a objetos (OO) podem ser divididas em duas categorias (KHAN,2011): metodologias 
OO da primeira geração e metodologias OO da segunda geração. A primeira geração consistia, na verdade, de 
metodologias híbridas, parte estruturada e parte orientada a objetos. A fase de análise era realizada utilizando as 
técnicas de análise estruturada, resultando em: diagramas de fluxo de dados, diagramas entidade-relacionamento 
e diagramas de transição de estado. Já a fase de projeto se concentrava, principalmente, no mapeamento dos 
resultados da etapa de análise para um diagrama de software orientado a objetos. Por vezes, a literatura refere-se 
a essas metodologias como transformativas. Já as metodologias OO da segunda geração apareceram entre os 
anos de 1992 e 1996, consistindo-se em uma evolução das metodologias da primeira geração. As metodologias 
de ambas as gerações são denominadas “seminais”, visto que foram pioneiras em um campo ainda não explorado, 
que era análise e projeto OO, consistindo em uma base para as evoluções seguintes. 
Na metodologia orientada a objetos, não se estrutura o processo como na estruturada. A metodologia 
estruturada considera dados e processos como entidades diferentes. Na metodologia OO, dados e os processos 
que manipulam esses dados são combinados em um componente chamado objeto. Além disso, considera-se 
não só o conceito de classe, mas também o conceito de herança. A principal característica desses métodos é 
não compreender os problemas pelo clássico caminho entrada-processamento-saída. Além disso, processos e 
funções são substituídos por objetos, classes e seus relacionamentos. 
Alguns conceitos de orientação a objetos são necessários para a plena compreensão dessa metodologia. Um 
objeto é um componente que armazena dados e operações que manipulam dados. Podem compor outros objetos 
e ser compostos por objetos. Operações são espécies de funções com o intuito de ler ou manipulardados de 
determinado objeto. Na orientação a objetos, operações são representadas pelo que chamamos de “métodos”. 
Solicitações são chamadas aos métodos com objetivo de executar determinada operação usando um ou mais 
57
Metodologia de Desenvolvimento de Sistemas | Unidade 4 - Modelos MDS 
objetos. Classe é a implementação de fato do tipo de um objeto. Descreve os dados e os métodos específicos que 
todo objeto daquele tipo conterá. 
Um exemplo da aplicação desses conceitos seria imaginar a cadeira específica em que você está sentado neste 
momento. Ela é um objeto ou instância específica da classe de cadeiras. 
A classe de cadeiras possui atributos (dados), tais como custo, dimensão, peso, cor, etc. A cadeira é um móvel 
e, portanto, herda as características que são comuns a todos os móveis. Esse conceito é chamado de herança. 
As características (dados e operações) de uma classe são reutilizadas a cada nova instância/objeto criado, o que 
economiza esforço, código, tempo e aumenta a confiabilidade do sistema. 
Metodologias OO facilitam a modelagem de um problema do mundo real para o contexto do computador, 
visto que englobam conceitos, como grupo, herança e abstração de dados, que são comuns ao mundo real. A 
desvantagem na sua utilização é que alguns bancos de dados e linguagens ainda não estão totalmente equipados 
para prover pura orientação a objetos. Alguns dos principais métodos existentes na metodologia orientada a 
objetos são: análise orientada a objetos, design orientado a objetos e Rational Unified Process (RUP). Nesta seção, 
será abordada a análise orientada a objetos.
Análise orientada a objetos
Diferentemente da análise estruturada, que separa processos e dados, a análise OO combina ambos em objetos. 
O conceito de OO é utilizado para modelar os problemas do mundo real em operações e processos. O resultado 
disso é uma série de objetos que representam pessoas, coisas, transações e eventos do mundo real. Por meio da 
utilização de linguagens de programação OO, o programador consegue criar objetos no código. 
Objetos são instâncias específicas de determinada classe (em que são definidas propriedades). Uma classe 
pode também herdar as características de outra classe, como mostra a Figura 26. Ela apresenta um exemplo 
de um diagrama de classes UML bem simples. Ela contém as classes pessoa, professor e aluno. As duas últimas 
herdam as propriedades da classe pessoa (nome, endereço e RG). Apesar disso, ambas também possuem suas 
características específicas. Por exemplo, um aluno possui uma matrícula e esse atributo não existe na classe 
professor.
Figura 26 – Diagrama de classes UML exemplificando a herança
Pessoa
Nome
Endereço
RG
Professor Aluno
Nome
Endereço
RG
Nome
Endereço
RG
Sala
Telefone
Data_de_Contratacao
Curso
Matrícula
Orientador
Herda Herda
Fonte: Adaptada de SHELLY, 2012.
58
Metodologia de Desenvolvimento de Sistemas | Unidade 4 - Modelos MDS 
No projeto OO, processos internos a um objeto (os chamados métodos) podem alterar suas propriedades. 
Exemplo disso seria um site de uma loja on-line que contém um objeto pedido, que deve conter um atributo 
chamado status. Quando o objeto cliente pede para cancelar o pedido, o atributo status do pedido muda seu valor. 
Nessa abordagem, é possível o envio de informações entre objetos por uma mensagem. Mensagens podem 
requerer uma informação ou determinado comportamento de outro objeto. Exemplo disso seria o objeto pedido 
solicitar ao cliente o endereço para envio. A análise OO faz uso de modelos de objetos para representar dados 
e comportamentos e ilustrar como objetos afetam outros objetos. Descrever objetos e métodos que apoiam as 
operações de negócio possibilita que componentes reutilizáveis sejam desenvolvidos, acelerando o processo de 
desenvolvimento. 
O processo de análise e projeto nos métodos OO segue um conjunto de fases, semelhantemente ao SDLC, 
embora haja uma variação no número e nomes das fases. Além disso, elas tendem a ser mais interativas. 
A figura 4 ilustra um modelo para desenvolvimento de software contendo as seguintes fases: planejamento, análise 
e projeto. A interação entre essas fases produz protótipos que são posteriormente testados e implementados. 
Esse modelo é bastante interativo e pode representar com precisão processos de negócio do mundo real.
Figura 27 – Um modelo interativo frequentemente utilizado por métodos OO
Fonte: Adaptada de SHELLY, 2012.
A metodologia OO se tornou popular, principalmente, devido à transição nos últimos anos de linguagens de 
programação estruturadas para linguagens orientadas a objetos, tais como: Java, Smalltalk, C++, Python, Perl, 
entre outras.
4.1.3.1 Metodologia ágil
As metodologias ágeis surgiram no ano de 1995 (KHAN, 2011). A definição de que metodologias ágeis são 
apenas abordagens de code-and-fix (programar e corrigir) de forma controlada, com pouca ou nenhuma clareza 
do processo, é somente verdade para uma pequena, mas influente minoria de suas abordagens. Essa minoria é 
baseada na prática do projeto do programa, codificação e teste, a fim de aprimorar a flexibilidade e produtividade 
59
Metodologia de Desenvolvimento de Sistemas | Unidade 4 - Modelos MDS 
no desenvolvimento do software. A maioria das abordagens ágeis, no entanto, englobam processos explícitos, 
apesar de haver um esforço para deixá-los o mais leve possível. 
De forma geral, abordagens ágeis fragmentam as fases em iterações sucessivas, compostas por todas as fases, só 
que de menor tamanho, de forma que se mantenha um maior controle e agilidade. Além disso, os erros podem 
ser detectados e corrigidos mais cedo (PRESSMAN; MAXIM, 2016). 
Se comparássemos análise estruturada e metodologia ágil na construção de um edifício, verificaríamos que 
a primeira construiria um plano geral para o edifício, enquanto a segunda buscaria desenvolver o edifício de 
forma incremental, prototipando cada incrementando e ajustando-o conforme o desejo do usuário. Conforme 
o processo ágil vai se consolidando, desenvolvedores podem revisar, estender ou mesclar versões antigas ao 
produto final. A abordagem ágil prioriza o feedback contínuo, de forma que em etapas incrementais seguintes 
não existam erros corrigidos no passado. 
A abordagem ágil foi consolidada a partir do “Manifesto ágil”, que foi criado por um grupo de pessoas que já 
utilizavam essas práticas em 2000, que atualmente são a base para a utilização de métodos ágeis. Apesar de só 
recentemente sua grande exploração ter se difundido, métodos ágeis foram utilizados com sucesso na produção 
do setor automotivo japonês antes mesmo de serem incorporados ao desenvolvimento de softwares. Nesse 
sentido, sua utilização fez sucesso devido aos benefícios do trabalho em equipe e metas de curto prazo, o que 
resultou em produtos de alta qualidade e baixo custo. 
A organização do processo ágil, geralmente, se dá em espiral, com cada iteração desenvolvendo um incremento 
do software baseado no feedback do usuário sobre o que foi desenvolvido na iteração anterior. A interação entre 
desenvolvedores e usuários é constante nesse tipo de metodologia. É importante que a equipe de desenvolvedores 
seja hábil em identificar a completude da informação a ser entregue aos usuários. Muitas vezes são necessárias 
muitas iterações para que o usuário final possa reconhecer valor na informação recebida. A organização em 
espiral tem o objetivo de reduzir riscos no processo, associados, principalmente, com a construção de um software 
diferente do desejado, além de acelerar o processo de desenvolvimento.
Note que uma iteração de um modelo espiral se assemelha bastante ao modelo SDLC.
Diversas variações adaptativas e métodos relacionados existem e há uma expectativa de que isso perdure ainda 
por bastante tempo. Algumas das abordagens que contemplam a metodologia ágil são: Feature Driven Development 
(FDD), Enterprise Unified Process (EUP), Scrum, Crystal (e suas variações), DSDM, Programação Extrema (Extreme 
Programming – XP),entre outras. 
Métodos ágeis se tornaram extremamente populares recentemente, mas é necessária a avaliação de suas 
vantagens e desvantagens para tomar a decisão de quando utilizá-los. Como vantagem, podemos citar que 
métodos ágeis possibilitam que desenvolvedores sejam flexíveis e responsivos. Entretanto, ao mesmo tempo, 
contêm uma documentação muito simples e podem prover mais riscos que as outras metodologias. Além disso, 
o fato de o processo seguir em iterações pode gerar prejuízos em termos de tempo e dinheiro, se não forem bem 
implementadas.
Por fim, é necessário que o analista de sistemas compreenda bem as vantagens e desvantagens de diferentes 
métodos de diferentes metodologias para chegar à conclusão de qual é a melhor opção para determinado projeto.
60
Metodologia de Desenvolvimento de Sistemas | Unidade 4 - Modelos MDS 
4.2 Comparação entre diferentes MDS
As metodologias de desenvolvimento de sistemas apresentadas na Seção 4.1 possuem vantagens e desvantagens. 
Por esse motivo, ao decidir em relação a qual aplicar no desenvolvimento de um sistema, é necessário analisá-
las cautelosamente. O Quadro 4 apresenta uma comparação entre as diferentes metodologias abordadas. São 
apresentadas a descrição, principais ferramentas de modelagem, vantagens e desvantagens para cada uma delas. 
Quadro 4 – Comparação entre diferentes metodologias de desenvolvimento de software
Análise Estruturada Análise OO Métodos Ágeis
Descrição Representa o sistema 
em termos dos dados e 
processos que manipulam 
estes dados. Sistema é 
organizado em fases, como 
no SDLC, com “entregáveis” 
sendo o resultado de cada 
uma. 
Compreende o sistema 
em termos de objetos 
que são consistidos por 
dados e processos. Objetos 
representam coisas/
pessoas do mundo real. 
Comparada à estruturada, 
tende a ser mais iterativa. 
Enfatiza um intenso 
trabalho em equipe. 
Divide o processo de 
desenvolvimento em 
iterações que adicionam 
funcionalidades 
ao sistema. Tenta 
diminuir os riscos 
adicionando recursos 
incrementalmente. 
Tipicamente utiliza o 
modelo espiral. 
Ferramentas 
para 
Modelagem 
Diagramas de Fluxo de 
Dados (DFD) e descrições 
de processo. 
Diagramas orientados a 
objetos (Ex: UML). 
Ferramentas 
para aprimorar a 
comunicação (Ex: 
softwares colaborativos, 
brainstorming e 
whiteboards). 
Vantagens Método tradicional que 
é baseado em uma boa 
documentação. Iteração 
de fases pode prover 
flexibilidade quando 
comparado a outros 
métodos. 
Facilmente integrado 
com linguagens de 
programação OO. 
Modularidade e reúso do 
código, reduzindo custos 
e tempos. Fácil de dar 
manutenção e escalável. 
Muito flexível e eficiente 
diante de mudanças. 
Enfatiza a interação do 
time e os frequentes 
entregáveis reduzem o 
risco do projeto. 
61
Metodologia de Desenvolvimento de Sistemas | Unidade 4 - Modelos MDS 
Desvantagens Mudanças podem ser 
caras, principalmente nas 
últimas fases. Requisitos 
são definidos no princípio 
e podem mudar ao longo 
do tempo. Usuários podem 
mudar de ideia ao longo do 
tempo. 
Interação de objetos e 
classes pode ser complexa 
em sistemas maiores. 
Membros da equipe 
necessitam algum nível 
de habilidade técnica 
e de comunicação. 
Falta de estrutura e 
documentação pode 
gerar fatores de risco. 
Quando requisito muda, 
todo o projeto deve ser 
alterado. 
Fonte: Adaptado de SHELLY, 2012.
4.3 Estudo de caso
Um software para controle de gastos em uma empresa deve ser construído. A equipe de desenvolvimento é 
bastante colaborativa e está bastante engajada no projeto. Têm-se uma ideia inicial das funcionalidades que 
devem existir no software, entretanto, ainda não existe uma lista fechada de requisitos. O cliente necessita que uma 
versão inicial do software esteja pronta o mais rápido possível, visto que sua empresa já está em funcionamento 
sem a gestão dos gastos. 
Nesse exemplo, métodos que fazem parte das metodologias ágeis seriam adequados. O fato de que os membros 
da equipe de desenvolvimento estão bastante comprometidos com o projeto possibilita a aplicação de métodos 
ágeis no processo de desenvolvimento. Além disso, os requisitos estão bastante sujeitos a mudanças. Utilizar 
metodologias ágeis faz com que exista uma redução dos riscos associados a mudanças nos requisitos. Por fim, 
como existe uma necessidade de que uma versão inicial do software esteja pronta rapidamente, metodologias 
ágeis seriam adequadas, pois com poucas iterações já se tem um sistema em funcionamento.
Síntese da unidade
Nesta unidade, foram abordados os conceitos relacionados às principais metodologias de desenvolvimento 
de software: metodologia estruturada, metodologia orientada a objetos e metodologia ágil. Além disso, uma 
comparação entre essas metodologias foi realizada, a fim de destacar suas vantagens e desvantagens. Por fim, 
um estudo de caso possibilitou a aplicação dos conceitos abordados.
62
Considerações finais
As metodologias de desenvolvimento de sistemas não se mantêm 
constantes. Ao contrário, são adaptativas e se modificam ao longo do 
tempo, a fim de se adequarem às necessidades existentes no momento 
presente. A tendência é que, com o passar dos anos, novas metodologias 
surjam e, com elas, novos métodos e novas técnicas para desenvolver 
softwares.
63
 5Unidade 55. Processos de MDS
Para iniciar seus estudos
Nesta unidade, você compreenderá a definição de processo de 
desenvolvimento de software. Também assimilará os diversos tipos 
de fluxo de processos existentes, as diversas métricas para avaliar um 
processo e a forma como um processo unificado se organiza. Com a 
aprendizagem desses conceitos, você poderá fazer as melhores escolhas 
em seus projetos futuros.
Objetivos de Aprendizagem
• Definir processo de desenvolvimento de software e fluxo de 
processo de software.
• Aplicar métricas de projeto e processo de software.
• Definir a aplicação do processo unificado.
64
Metodologia de Desenvolvimento de Sistemas | Unidade 5 - Processos de MDS
Introdução da unidade
Esta unidade abordará diversos conceitos relacionados ao processo de desenvolvimento de software. 
Apresentaremos sua definição de forma que seja possível compreender sua localização dentro da engenharia 
de software. Abordaremos, também, os diversos tipos de fluxo de processo: linear, iterativo, evolucionário e 
paralelo. Compreender as suas diferenças possibilita que você saiba quando utilizá-los em seus projetos futuros. 
Além disso, evidenciaremos a definição de métricas de processo e projeto de software e apresentaremos alguns 
dos seus exemplos. Dessa forma, será possível assimilar as principais características por trás das métricas e sua 
importância, de modo que você se sentirá motivado a utilizá-las em seus projetos. Por fim, definiremos o processo 
unificado, um exemplo de processo que se utiliza das fases genéricas de um processo de desenvolvimento de 
software.
5.1 Processos de MDS
Nesta unidade, algumas definições sobre o processo de desenvolvimento de software serão abordadas. 
Inicialmente, a definição de processo de desenvolvimento de software será estabelecida, bem como as principais 
atividades de um processo genérico. Em seguida, os tipos mais básicos de fluxo de processos de desenvolvimento 
serão apresentados. Por fim, a importância das métricas na avaliação do processo e projeto de desenvolvimento 
de software será evidenciada, bem como será dado um exemplo de processo que pode ser representado utilizando 
as atividades genéricas, denominado processo unificado.
5.1.1 Definição de processo de desenvolvimento de software
De acordo com Pressman e Maxim, uma visão de um ponto de vista diferente sobre o processo de software, 
compreendido pela visão de um economista, Howard Beatjer Jr., é dada pelo seguinte trecho:
Porque o software, como todo capital, é conhecimento incorporado, e porque esse conhecimento é, 
inicialmente, disperso, tácito, latente e, em considerável medida, incompleto, o desenvolvimento 
de software é um processo de aprendizadosocial. Esse processo é um diálogo no qual o 
conhecimento, que deverá se tornar o software, é coletado, reunido e incorporado ao software. 
O processo possibilita a interação entre usuários e projetistas, entre usuários e ferramentas em 
evolução e entre projetistas e ferramentas em evolução (tecnologia). Trata-se de um processo 
iterativo no qual a própria ferramenta em evolução serve como meio de comunicação, com cada 
nova rodada do diálogo extraindo mais conhecimento útil das pessoas envolvidas (PRESSMAN; 
MAXIM, 2016, p. 30).
Podemos, de fato, entender a construção de um software como um processo de aprendizado social iterativo, cujo 
resultado (definido por Howard como “capital de software”) seria a integração do conhecimento que é coletado, 
filtrado e organizado durante o processo. 
O processo de software, de um ponto de vista mais técnico, pode ser definido como uma metodologia para 
atividades, ações e tarefas, cujo objetivo final é desenvolver um software de qualidade. O processo de software 
define a abordagem que será utilizada de acordo com a engenharia de software. Entretanto, a engenharia de 
65
Metodologia de Desenvolvimento de Sistemas | Unidade 5 - Processos de MDS
software também incorpora as tecnologias que fazem parte do processo. Exemplo disso seriam as ferramentas 
automatizadas.
Compreendendo o processo de software como parte da engenharia de software, é importante 
notar que esse processo deve se adaptar de forma que se adeque aos produtos desenvolvidos 
e às necessidades do mercado.
De forma geral, podemos compreender o processo de software como uma série de passos previsíveis para a 
construção de um sistema. Ele pode ser visto como uma espécie de roteiro para que um software de qualidade 
seja produzido dentro de um prazo estabelecido. Geralmente, o processo de software é adaptado por engenheiros 
de software e gerentes para se adequar ao contexto em que será aplicado e, então, seus passos são seguidos. 
Clientes/usuários também têm um papel fundamental no processo de definição, construção e teste do software.
A importância do processo de software se dá, principalmente, pelo fato de que ele favorece com que haja 
controle, estabilidade e organização em uma atividade que poderia se tornar caótica sem essas características. 
Um processo deve ser “ágil” e, para isso, deve requerer somente atividades, controles e produtos adequados para 
a equipe que esteja produzindo e para o produto a ser produzido, além de atender às expectativas de negócio da 
organização. 
O processo de software a ser adotado vai depender do sistema a ser desenvolvido, além das características 
específicas da equipe que vai atuar no seu desenvolvimento. As etapas envolvidas serão diferentes se o sistema a 
ser construído é o software que atua no controle e gerenciamento do tráfego aéreo ou se o sistema é um website 
de uma loja que venda produtos eletrônicos na Internet. 
Os produtos de trabalho ou artefatos envolvidos no processo de software são os programas, documentos e dados 
que foram gerados como resultado das sequências de atividades e tarefas envolvidas no processo do software. 
As atividades, ações e tarefas realizadas dentro de um processo devem-se alocar dentro de uma metodologia 
ou modelo que determina como elas vão se relacionar entre si e também com o processo. A Figura 28 ilustra um 
exemplo de um processo de software genérico.
66
Metodologia de Desenvolvimento de Sistemas | Unidade 5 - Processos de MDS
Figura 28 – Um modelo para um processo de software genérico
Fonte: Adaptada de PRESSMAN; MAXIM, 2016.
67
Metodologia de Desenvolvimento de Sistemas | Unidade 5 - Processos de MDS
Na figura acima, é possível identificar uma sequência com n atividades metodológicas. Atividades metodológicas 
são compostas por um conjunto de k ações de engenharia de software. Ações são compostas por um conjunto 
de tarefas que podem indicar as tarefas programadas para entrega e artefatos de software, ou seja, os programas 
que serão implementados, as garantias que serão requeridas no processo e, por fim, os prazos das entregas 
parciais, com o objetivo de avaliar o progresso. De forma geral, uma metodologia de processo precisa definir 
cinco atividades metodológicas: comunicação, planejamento, modelagem, construção e entrega. Além dessas 
atividades, podem ser aplicadas um conjunto de atividades de apoio durante o processo, com o objetivo, por 
exemplo, de avaliar o controle do projeto.
Uma afirmação interessante sobre processo de desenvolvimento de software encontrada em 
Pressman e Maxim e mencionada pelo engenheiro de software americano Tom DeMarco é a 
seguinte: “Achamos que desenvolvedores de software não percebem uma verdade essencial: 
a maioria das organizações não sabe o que faz. Elas acham que sabem, mas não sabem” 
(PRESSMAN; MAXIM, 2016, p. 36).
5.2 Principais fluxos de processos de desenvolvimento de 
software
Tendo em vista as atividades genéricas que se fazem presentes em processos de software, faz-se necessário 
apresentar a definição do conceito de fluxo de processo. Podemos definir o fluxo do processo de desenvolvimento 
de sistemas como a forma como as atividades metodológicas são dispostas. Outra forma de visualizar seu 
significado é compreendê-lo como sendo maneiras de se organizarem ações e tarefas que fazem parte das 
atividades, com relação à ordem de execução e tempo. Fluxos de processo podem ser categorizados em quatro 
tipos: linear, iterativo, evolucionário e paralelo. 
O fluxo de processo de software linear executa cada uma das atividades metodológicas em sequência, uma 
seguida da outra, como se fossem uma série de atividades. Nesse fluxo, inicia-se pela etapa de comunicação e 
finaliza-se com a entrega do sistema ao cliente e a implantação no ambiente do usuário. A Figura 29 exemplifica 
o fluxo de processo linear.
Figura 29 – Fluxo de processo linear
Comunicação Planejamento Modelagem Construção Entrega
Fonte: Adaptada de PRESSMAN; MAXIM, 2016.
68
Metodologia de Desenvolvimento de Sistemas | Unidade 5 - Processos de MDS
Já o fluxo de processo iterativo organiza as atividades em uma sequência, como no fluxo linear, mas possui como 
diferença a característica de poder repetir uma ou mais atividades antes de prosseguir para a seguinte. Um 
exemplo de uma ilustração desse processo é mostrado na Figura 30.
Figura 30 – Fluxo de processo iterativo
Comunicação Planejamento Modelagem Construção Entrega
Fonte: Adaptada de PRESSMAN; MAXIM, 2016.
Um processo de software que segue o fluxo de processo evolutivo organiza as suas atividades de forma circular, 
de modo que a cada volta no círculo, passando pelas cinco atividades, um novo incremento do software seja 
produzido. Assim, o software é entregue por completo ao final de várias voltas. A Figura 31 demonstra esse 
processo.
Figura 31 – Fluxo de processo evolutivo
Liberado
por
Incremento
Planejamento
Comunicação
Entrega Construção
Modelagem
Fonte: Adaptada de PRESSMAN; MAXIM, 2016.
Por fim, o fluxo paralelo dispõe as atividades de modo que seja possível executar uma atividade em paralelo 
com outras. No caso do exemplo da Figura 32, a etapa de modelagem poderia ser realizada em paralelo com a 
construção de um outro aspecto do software.
69
Metodologia de Desenvolvimento de Sistemas | Unidade 5 - Processos de MDS
Figura 32 – Fluxo de processo paralelo
Comunicação Planejamento
Modelagem
Construção
Tempo
Entrega
Fonte: Adaptada de PRESSMAN; MAXIM, 2016.
Existem diversos mecanismos para a avaliação de processos de softwares, que possibilitam garantir com que o 
trabalho tenha sido feito de forma correta. Geralmente, essas métricas conseguem medir a “maturidade” do 
processo de software. Entretanto, a melhor forma de avaliar a qualidade de um processo de software é verificar 
a qualidade do software, o cumprimento de prazos e a viabilidade a longo prazo do sistema a ser desenvolvido. 
Esses quesitos conseguem dar uma ideia de forma precisa sobre a eficáciado processo de software utilizado. 
Sobre esse assunto, veremos mais detalhadamente na próxima seção. 
5.3 Métricas de processo e projeto de desenvolvimento de 
software
A medição do andamento do processo e do projeto de um software nos possibilita ter um mecanismo de avaliação 
objetiva para chegar a uma conclusão precisa sobre se os objetivos estipulados no princípio do desenvolvimento 
estão sendo atingidos. Como expressado em Pressman e Maxim, Lord Kelvin disse, certa vez:
Quando você pode medir o que você está falando e expressar em números, você sabe alguma coisa 
sobre aquilo; mas quando você não pode medir, quando você não pode expressar em números, o 
seu conhecimento é algo escasso e insatisfatório: pode ser o começo do conhecimento, mas você 
avançou muito pouco, em seu raciocínio, para o estágio de uma ciência (PRESSMAN; MAXIM, 
2016, p. 703).
As medições podem ser utilizadas no processo de software com o intuito de obter uma melhoria contínua no 
processo. Sua importância se dá, por exemplo, nas estimativas, na produtividade, controle de qualidade e no 
controle do projeto. Além disso, medições podem ser usadas na avaliação da qualidade dos artefatos produzidos 
a cada atividade executada, bem como podem ajudar na tomada de decisões em relação ao andamento do 
projeto. 
Uma equipe de software que está envolvida em um processo de software se preocupa, primariamente, com métricas 
de produtividade e qualidade. Essas métricas dizem respeito ao resultado do que foi feito em função do esforço 
70
Metodologia de Desenvolvimento de Sistemas | Unidade 5 - Processos de MDS
e tempo aplicados e à adequação para uso dos artefatos produzidos. Se o intuito da medição é planejamento e 
estimativa, o interesse nessas medidas é ao longo do tempo. De acordo com Pressman e Maxim (2016), algumas 
das perguntas que poderiam ser feitas são as seguintes:
• Com que nível de qualidade o software foi produzido? 
• De que maneira a produtividade passada e os dados referentes à qualidade podem beneficiar o presente?
• De que forma utilizar esses dados pode te ajudar a realizar estimativas e planos de maneira mais precisa?
Podemos compreender métricas de projeto e processo de software como medidas quantitativas que permitem 
à equipe de desenvolvimento a avaliação da eficácia do processo de software e os projetos que são executados 
usando o processo. O objetivo desses dados é compará-los com dados do passado, a fim de verificar se ocorreram 
melhorias tanto de qualidade quanto de produtividade. Além disso, métricas podem ser utilizadas para a detecção 
de áreas que possuam problemas para que possam ser corrigidas e o processo de software aprimorado. 
A tarefa de analisar e avaliar as métricas de software é destinada aos gerentes de software. Os dados para realizar 
essa análise geralmente são coletados por engenheiros de software. A importância de se utilizar métricas de 
processo e projeto de software é imensa. Caso esses dados não fossem medidos, a avaliação seria feita somente 
de forma subjetiva, não permitindo a existência de uma avaliação mais eficaz e precisa. Por meio da medição, é 
possível que tendências boas e ruins sejam constatadas e, assim, levar ao aprimoramento das estimativas com o 
passar do tempo. 
Para a medição do processo e projeto de software, é necessário, a princípio, um conjunto restrito de medidas de 
processo, projeto e produto que sejam coletadas com facilidade. Elas podem, por exemplo, ser normalizadas 
utilizando-se de métricas que são orientadas a tamanho ou função. O resultado da normalização é comparado 
com valores anteriores que foram obtidos em projetos similares. Por fim, são detectadas as tendências e obtidas 
as conclusões.
Uma forma de garantir com que o trabalho de medição de processo e projeto de software seja 
empregado de forma correta é utilizar um sistema de medições que seja consistente, porém 
simples, que nunca deve ser usado para avaliar, recompensar ou até mesmo punir indivíduos 
da equipe pelo seu desempenho pessoal.
Fique atento!
No livro de (PARK, 1996), que consiste em um guia para medições de software, são ressaltadas as razões pelas 
quais medimos:
1. Caracterizar, na busca por conhecer processos, produtos, recursos e ambientes, bem como para definir 
embasamento para futuras comparações.
2. Avaliar, a fim de estabelecer o status atual em comparação com o planejado.
3. Prever compreendendo a forma como processos se relacionam e modelando estas relações.
71
Metodologia de Desenvolvimento de Sistemas | Unidade 5 - Processos de MDS
4. Melhorar reconhecendo etapas, origens de problemas, inabilidades, dentre outros recursos que podem 
ser melhorados afim de aumentar a qualidade do processo e do produto.
Utilizada como ferramenta de gerenciamento, a medição proporciona discernimento ao gerente de projeto. Por 
consequência, a equipe de desenvolvimento, como um todo, tomará as melhores decisões que levarão a um 
projeto de sucesso. 
5.3.1 Métricas de processo x Métricas de projeto
Apesar de métricas de processo e projeto por muitas vezes serem as mesmas, é interessante destacar as 
características de cada uma delas. As métricas de processo são obtidas de todos os projetos que foram realizados 
por um longo período de tempo. Seu principal objetivo é o levantamento de indicadores de processo que resultam 
na melhoria do processo de software à longo prazo. Já as métricas de projeto permitem com que o gerente de 
projetos: avalie o andamento do projeto, traçe potenciais riscos, descubra possíveis áreas problemáticas com 
antecedência, realize ajustes no fluxo de tarefas e avalie a habilidade da equipe de projeto no controle de 
qualidade do software final. 
Na maior parte das vezes, as mesmas métricas são utilizadas tanto no domínio do processo quando no domínio 
do projeto. Exemplo disso pode ser visto nas seções 5.3.2 e 5.3.3 onde serão abordados dois tipos de métricas de 
software que podem ser utilizadas tanto como métrica de processo quanto métrica de projeto.
Métricas de processo possuem impacto a longo prazo e seu objetivo consiste em melhorar 
o próprio processo. As métricas de projeto frequentemente acabam contribuindo para o 
desenvolvimento de métricas de processo. 
Saiba mais
Não se deve utilizar métricas para comparar indivíduos ou equipes do desenvolvimento de 
um software, visto que existem muitos fatores que afetam o processo.
Fique atento!
5.3.2 Métricas orientadas a tamanho
Para compreender as métricas orientadas a tamanho, vamos primeiro analisar um exemplo de situação. Suponha 
que os membros de duas equipes de projetos diferentes, equipe X e equipe Y, registrem todos os erros encontrados 
durante o processo de software dos seus respectivos projetos. As medidas dos membros de cada equipe são 
combinadas a fim de obter uma medida por equipe. A equipe X encontrou 330 erros durante o processo de 
72
Metodologia de Desenvolvimento de Sistemas | Unidade 5 - Processos de MDS
software. Já a equipe Y encontrou 170. Sendo iguais em todas as características restantes, qual foi a equipe mais 
eficaz na descoberta de erros no processo? Esta é uma pergunta difícil de se responder, visto que não se sabe o 
tamanho ou a complexidade do projeto de cada equipe. Entretanto, se normalizarmos as medidas, poderíamos 
comparar os valores obtidos por ambas as equipes de maneira mais justa.
Métricas de software orientadas a tamanho são estabelecidas com base em medidas de qualidade ou 
produtividade que são normalizadas considerando o tamanho do software desenvolvido. Dessa forma, se uma 
organização preserva um registro com o histórico dos projetos desenvolvidos, a elaboração de uma tabela de 
medidas orientadas a tamanho se torna possível, como ilustra a Tabela 2 a seguir.
Tabela 2 – Métricas orientadas a tamanho
Projeto Linhas de Código Esforço Custo Pág. Doc. Erros Defeitos Pessoas
Alfa 12100 24 168 365 134 29 3
Beta 27200 62 440 1224 321 86 5
Gama 20200 43 314 1050 256 64 6
... ... ... ... ... ... ... ...
Fonte:Adaptada de PRESSMAN; MAXIM, 2016.
No exemplo da figura acima, temos o registro de cada um dos projetos que foi desenvolvido por determinada 
organização ao longo dos anos e algumas medidas que correspondem a eles. Considere, por exemplo, a linha 
correspondente ao projeto denominado Alfa. Esse projeto resultou em 12.100 linhas de código, tendo a 
contribuição de 24 pessoas/mês e o custo de 168 mil dólares. É importante notar que tanto o trabalho quanto 
o custo na tabela correspondem a todas as atividades de engenharia de software, não contemplando apenas a 
etapa de codificação. Além disso, outras informações a respeito desse projeto é que foram criadas 365 páginas 
de documentação, 134 erros foram encontrados durante o processo de software todo e 29 defeitos foram 
apresentados após a entrega do software para o cliente no primeiro ano do sistema em operação. Por fim, na 
parte de codificação do software, três pessoas estavam envolvidas. 
Partindo da Tabela 2, é possível escolher, por exemplo, o número de linhas de código como um valor de 
normalização. Seguem abaixo alguns exemplos de métricas simples orientadas a tamanho que poderiam ser 
utilizadas normalizando pelo número de linhas de código:
• Erros por MLDC (1.000 linhas de código).
• Defeitos por MLDC.
• Custo por MLDC.
• Páginas de documentação por MLDC.
Além disso, outras métricas interessantes seriam:
• Erros por pessoa-mês.
• MLDC por pessoa-mês.
• Custo por página de documentação.
73
Metodologia de Desenvolvimento de Sistemas | Unidade 5 - Processos de MDS
Apesar da ampla utilização das métricas orientadas a tamanho, ainda existe um grande 
debate sobre sua validade e aplicabilidade.
Saiba mais
Métricas orientadas por tamanho são simples e rápidas. Entretanto, nem sempre são aceitas como a melhor 
forma de medir processos de software. A maior razão para isso é o fato de elas utilizarem as linhas de código 
como principal medida. Os defensores da utilização da medida LDC (linhas de código) alegam que LDC é uma 
característica que qualquer projeto de desenvolvimento de software possui e, por isso, pode ser facilmente obtida. 
Além disso, diversos modelos para estimativa de software existentes recebem como entrada LDC e diversos 
métodos da literatura e dados já utilizam LDC. 
Em contrapartida, oponentes da medida afirmam que LDC é bastante dependente da linguagem de programação 
e, na avaliação de produtividade, programas bem projetados e menores seriam penalizados, linguagens 
procedurais não poderiam ser utilizadas com essas métricas. Também defendem que a estimativa de LDC é algo 
difícil de planejar, visto que no princípio do projeto é difícil ter uma noção do número de linhas que o código 
conterá.
5.3.3 Métricas orientadas a função
Outra métrica que utiliza a normalização de medidas é a métrica de software orientada a função. A diferença em 
relação à métrica orientada a tamanho é o fato de que a normalização na métrica orientada a função acontece 
usando uma medida da funcionalidade fornecida pelo sistema como valor de normalização. A métrica orientada 
a função mais utilizada atualmente é a Pontos de Função (Function Point – FP). O cálculo de pontos de função 
tem como base as características de domínio de informação e a complexidade do software. 
Assim como LDC, a utilização do ponto de função como métrica é, por vezes, bastante controverso. Os defensores 
da métrica afirmam que essa função é independente da linguagem de programação, o que faz ela ser ideal para 
aplicações com diferentes linguagens. É ideal que elas sejam convencionais ou não procedurais e que a métrica 
é baseada em dados com grandes chances de serem conhecidos na evolução de um projeto. Sendo assim, FP 
se torna mais atraente na elaboração de estimativas. Já os oponentes à métrica alegam que é necessário um 
pouco de “jeitinho” no método, visto que ele é baseado em dados subjetivos em vez de objetivos, as contagens 
do domínio de informações podem ser algo difícil de ser computado. Também alegam que a FP é apenas um 
número, não tendo significado físico claro.
Existem diversos tipos de métricas aqui não abordados. Para determinar a melhor métrica 
para um processo de software específico, é necessário analisar o contexto em que o software 
está sendo desenvolvido e sua aplicação final. 
Saiba mais
74
Metodologia de Desenvolvimento de Sistemas | Unidade 5 - Processos de MDS
5.4 O processo unificado
De acordo com o livro que deu origem ao processo unificado (JACOBSON, 1999), o mesmo foi fruto de uma busca 
por um processo de software que fosse “dirigido a casos de uso, centrado na arquitetura, iterativo e incremental”. 
Entre as características do processo unificado, está o fato de ele buscar o aproveitamento dos melhores recursos 
e características dos modelos tradicionais de desenvolvimento de software, enquanto os adapta de modo a 
implementar muitos dos princípios do desenvolvimento ágil de software. Além disso, o processo unificado tem 
por característica o reconhecimento da importância da comunicação com o cliente e de métodos racionalizados 
que possam descrever a visão do cliente sobre o sistema desejado (ex.: casos de uso). Por fim, enfatiza o papel 
da arquitetura de software, o que ajuda o arquiteto a ter foco nas metas corretas, e sugere um fluxo de processo 
iterativo e incremental, de forma que dá uma sensação evolucionária necessária no desenvolvimento moderno. 
Em meados de 1990, James Rumbaugh, Grady Booch e Ivar Jacobson começaram a trabalhar em um método 
unificado que combinasse as melhores características de cada um dos métodos individuais de análise e 
projeto orientados a objetos. O resultado foi a Linguagem de Modelagem Unificada (UML), que é utilizada até 
os dias atuais para modelar sistemas. Em 1997, a UML se tornou de fato um padrão no desenvolvimento de 
softwares orientados a objetos. Durante os anos que se seguiram, os três autores da UML desenvolveram o 
Processo Unificado (UP), um método de engenharia de software orientada a objetos utilizando UML. Atualmente, 
tanto o processo unificado quanto a UML são amplamente utilizados.
5.4.1 Fases do processo unificado
O processo unificado pode ser descrito utilizando as atividades genéricas abordadas na Seção 5.1, que são úteis em 
quaisquer processos. A fase de concepção envolve as atividades de comunicação com o cliente e planejamento. 
Nessa fase, com a colaboração de clientes, as necessidades de negócio do software são identificadas e propõe-se 
uma arquitetura simples para os sistemas, além de se desenvolver um planejamento para a natureza iterativa e 
incremental do projeto. A fase de elaboração envolve as atividades de comunicação e modelagem do modelo 
de processo genérico. Nessa fase, são refinados e expandidos os casos práticos preliminares desenvolvidos na 
concepção. Divide-se a visão da arquitetura em cinco modelos: modelo de caso prático, modelo de requisitos, 
modelo de projeto, modelo de implementação e modelo de emprego. Na elaboração, há também uma revisão 
do plano de forma bastante cuidadosa para ver se não é necessária alguma alteração. 
A fase de construção é idêntica à atividade genérica de construção definida para um processo de software 
qualquer. Sua entrada é o modelo de arquitetura. Essa fase desenvolve ou agrega componentes de software, 
de forma que cada caso prático se torne uma funcionalidade no sistema. Modelos de requisitos e projeto são 
finalizados e implementam-se no código-fonte todas as funções exigidas para o incremento de software. 
A fase de transição engloba os últimos estágios da atividade de construção e a primeira parte da atividade de 
emprego/entrega, consistindo na entrega e no feedback do usuário. Testes beta com usuário são realizados na 
busca de encontrar defeitos ou mudanças necessárias no software. Manuais técnicos e de usuários são elaborados, 
e nessa fase o resultado é uma versão utilizável do software. Por fim, a fase de produção consiste na fase final 
do emprego/entrega do software.Essa fase engloba o monitoramento da utilização do software pelo usuário, 
enquanto disponibiliza-se suporte ao mesmo, implementando e analisando relatórios de defeitos ou mudanças. 
A Figura 33 ilustra as fases do processo unificado, bem como as atividades genéricas existentes nos processos de 
software.
75
Metodologia de Desenvolvimento de Sistemas | Unidade 5 - Processos de MDS
Figura 33 – O processo unificado
Planejamento
Comunicação
Modelagem
ConstruçãoEntrega/
Emprego
Incremento de
Software
Produção
Transição
Versão
Concepção
Elaboração
Construção
Fonte: Adaptada de PRESSMAN; MAXIM, 2016.
Síntese da unidade
Esta unidade abordou o conceito de processo de desenvolvimento de softwares e conceitos relacionados, tais 
como: principais fluxos de processo, métricas de processo e projeto de software e o processo unificado.
76
Considerações finais
A compreensão do processo de desenvolvimento de software é essencial 
para sua utilização de forma eficaz e eficiente, porque possibilita 
que decisões sejam tomadas de forma mais precisa. Desse modo, 
evitam-se prejuízos, tanto em termos de tempo quanto em termos 
financeiros, levando o software desenvolvido a atender às expectativas de 
negócio da organização. 
77
 6Unidade 66. Tipos MDS 
Para iniciar seus estudos
Nesta unidade, você compreenderá duas implementações de processos 
bastante utilizadas nas organizações que desenvolvem softwares em 
grande escala: o RUP e o Scrum. A decisão sobre qual será o melhor 
para determinado contexto só é possível após uma análise clara das 
características de cada um deles em conjunto com as características do 
projeto e da organização. Conhecê-los permitirá a você realizar escolhas 
bem mais assertivas em projetos futuros.
Objetivos de Aprendizagem
• Definir duas das implementações de processo mais utilizadas 
atualmente, o RUP, representando um processo unificado, e o 
Scrum, ilustrando um processo ágil. 
78
Metodologia de Desenvolvimento de Sistemas | Unidade 6 - Tipos MDS 
Introdução da unidade
Apesar de existirem atividades genéricas que são comuns à maioria dos processos de desenvolvimento de 
software, a implementação de um processo pode se dar de diferentes formas. Esta unidade visa apresentar dois 
exemplos de implementações de processo: o RUP, representando processos unificados, e o SCRUM, representando 
processos ágeis. A principal característica de um processo unificado é o fato de ele combinar características 
que estão presentes em diferentes modelos. Já os métodos ágeis têm por característica principal a agilidade na 
entrega de uma versão em funcionamento ao cliente. Com o conhecimento de ambas abordagens, será possível 
que você compreenda as principais características, vantagens, desvantagens e descubra onde e como aplicá-las.
6.1 Tipos MDS
Esta unidade possui como foco apresentar dois tipos de implementação de processos, o Rational Unified Process 
(RUP), um processo unificado, e o Scrum, representando um processo ágil. Primeiramente, serão apresentadas 
as definições do RUP, bem como suas vantagens e desvantagens. Em seguida, serão abordados os conceitos 
incorporados ao Scrum, bem como os papéis, responsabilidades e artefatos presentes nele.
6.1.1 Rational Unified Process (RUP)
O Rational Unified Process (RUP) pode ser visto como uma instância específica e detalhada do processo unificado 
(KRUCHTEN, 2003). Consistindo em um processo moderno, suas origens estão na Unified Modeling Language 
(UML) e no processo unificado (JACOBSON, 1999). Sua criação foi idealizada pela Rational Software Corporation. 
Entretanto, em fevereiro de 2003, foi adquirido pela IBM. Pode-se dizer que o RUP é um processo híbrido, visto 
que reúne diversas características de modelos genéricos. A Figura 34 mostra uma fotografia de Philippe Kruchten, 
autor do RUP, durante um evento de engenharia de software.
Figura 34 – Philippe Kruchten (à direita), o engenheiro de software canadense precursor do RUP
Fonte: Foto de Artem Marchenko, 2008.
79
Metodologia de Desenvolvimento de Sistemas | Unidade 6 - Tipos MDS 
O RUP normalmente enxerga o processo em três perspectivas:
1. Perspectiva dinâmica: mostra as fases do modelo no decorrer do tempo.
2. Perspectiva estática: mostra as atividades realizadas durante o processo.
3. Perspectiva prática: sugere práticas que sejam boas para o processo.
São quatro as fases do modelo RUP para um processo de software. Diferentemente de um modelo cascata, por 
exemplo, as fases no RUP são relacionadas ao negócio, e não a assuntos técnicos. A Figura 35 exemplifica as fases 
existentes no modelo de processo RUP.
Figura 35 – Fases que constituem o Rational Unified Process
Iteração de Fase
Concepção Elaboração Construção Transição
Fonte: Adaptada de SOMMERVILLE, 2007.
A fase concepção tem como principal objetivo o estabelecimento de um caso de negócio para o projeto. Casos de 
negócio consistem nas ideias de um projeto ou tarefa. Nessa fase, é necessária a identificação do que chamamos 
de entidades externas, que são pessoas ou sistemas que vão interagir com o software. Tendo essa informação, 
avalia-se o quanto o software a ser construído vai contribuir para o negócio. Caso conclua-se que sua importância 
é pequena, sua construção pode ser abortada. 
A fase elaboração tem como finalidade a compreensão do problema a ser solucionado através do software, bem 
como o estabelecimento da arquitetura do sistema, do plano do projeto e da identificação dos principais riscos 
do projeto. O resultado dessa fase é um modelo de requisitos para o sistema. Esse modelo pode ser representado 
com diagramas de casos de uso UML, uma descrição da arquitetura ou até mesmo um plano de desenvolvimento 
do software. 
Na fase de construção, o sistema é projetado, codificado e testado. As partes do sistema são desenvolvidas em 
paralelo e, ao final, integradas. O resultado da fase de construção é um software já em estado de funcionamento, 
contendo uma documentação que pode ser entregue aos usuários para que já consigam fazer uso do sistema. 
A fase final do RUP denomina-se transição. Nessa fase, é realizada a transferência do sistema do ambiente 
de desenvolvimento para o ambiente em que o sistema atuará de fato, ou seja, o ambiente do usuário ou de 
produção. Diversos modelos de processo de software ignoram essa etapa, visto que é uma atividade cara, que 
costuma gerar problemas. Entretanto, possui grande importância na construção de um software de sucesso. O 
resultado dessa fase é um sistema documentado já funcionando de forma correta no ambiente do usuário ou de 
produção. 
Conforme ilustrou a Figura 35, a característica iterativa do modelo RUP se dá de duas maneiras. A primeira é que 
cada fase pode ser executada em iterações, sendo aplicada a um novo incremento a cada iteração. A segunda 
é a execução do conjunto de fases de forma incremental, na qual o conjunto de fases atua sob um mesmo 
incremento a cada iteração. 
80
Metodologia de Desenvolvimento de Sistemas | Unidade 6 - Tipos MDS 
A perspectiva estática, anteriormente mencionada, dá visibilidade às atividades que ocorrem ao longo do 
processo. Essas atividades no RUP são denominadas workflows. No total, são seis workflows centrais, identificados 
no processo, e três workflows de apoio. Como RUP foi pensado baseado na UML, a descrição do workflow é em 
torno de modelos UML. O Quadro 5 descreve os workflows.
Quadro 5 – Workflows estáticos no RUP
Workflow Descrição
Modelagem de negócios Utilização dos casos de uso de negócios para 
modelagem dos processos de negócios. 
Requisitos Identificação dos atores que interagem com o 
sistema e desenvolvimento dos casos de uso que 
modelam os requisitos do sistema. 
Análise e Projeto Modelos de arquitetura, modelos de componentes, 
modelos de objetos e modelos de sequência são 
utilizados para a criação e documentação do 
modelo de projeto. 
Implementação A implementação dos componentes é realizada 
bem como a estruturação destes componentes 
em subsistemasde implementação. Esse processo 
pode ser acelerado através da geração de código 
automático usando modelos de projeto. 
Teste Realizado à cada iteração, é executado em conjunto 
com a implementação. O teste segue a conclusão 
da implementação. 
Implantação Uma versão do sistema é criada, entregue ao 
usuário para instalação no seu ambiente de 
utilização. 
Gerenciamento de configuração e mudanças 
(apoio)
Apoia o gerenciamento das mudanças no sistema. 
Gerenciamento de projeto (apoio) Apoia o gerenciamento do desenvolvimento de 
software. 
Meio ambiente (apoio) Está associado à disponibilização dos recursos 
necessários à equipe de desenvolvimento. 
Fonte: Adaptado de SOMMERVILLE, 2007.
A vantagem da visualização de perspectivas estáticas e dinâmicas é que as fases do RUP não estão diretamente 
associadas a workflows (atividades) específicos. Sendo assim, diversos workflows podem estar ativos em todas as 
fases do processo. Em fases iniciais, será comum um esforço maior dos workflows relacionados à modelagem e 
requisitos do software. Já nas fases finais, serão comuns os workflows relacionados à teste e implantação. 
81
Metodologia de Desenvolvimento de Sistemas | Unidade 6 - Tipos MDS 
A perspectiva prática do RUP sugere e descreve uma sequência de boas práticas de engenharia de software para 
utilização durante o processo de desenvolvimento de software. De acordo com Sommerville (2007), seis boas 
práticas são recomendadas:
Quadro 6 – Boas práticas recomendadas no RUP
Prática Descrição
Desenvolver software iterativamente Analisar as prioridades do cliente para planejar 
incrementos do sistema. Desenvolver recursos com 
alta prioridade primeiro. 
Gerenciar requisitos Realizar a documentação dos requisitos e 
acompanhamento das suas mudanças. Somente 
aceitar mudanças após analisar seus impactos. 
Usar arquiteturas baseadas em componentes Utilizar componentes na estruturação da 
arquitetura do sistema. 
Modelar o software visualmente Representar as perspectivas estáticas e dinâmicas 
do sistema usando modelos gráficos da UML. 
Verificar a qualidade do software Garantir que o software atenda aos padrões de 
qualidade da empresa. 
Controlar as mudanças do software Utilizar um sistema de gerenciamento de mudanças 
e ferramentas de gerenciamento de configuração. 
Fonte: Adaptado de SOMMERVILLE, 2007.
Nem todos os tipos de desenvolvimento podem se adequar ao RUP, como o desenvolvimento de software embutido. 
No entanto, ele pode se adequar a diversas situações, porque combina três modelos de processo genéricos: cascata, 
iterativo e incremental. O que o RUP traz de mais novo entre os processos existentes é a separação de fases e 
workflows (atividades) e o fato de incluir a implantação do sistema no ambiente do usuário como parte do processo.
Fases são dinâmicas e possuem metas. Workflows são estáticos e são atividades técnicas, que podem estar 
associados a mais de uma fase e ser utilizados ao longo de todo o processo de desenvolvimento, com o objetivo 
de atingir metas específicas. A Figura 36 ilustra o andamento das atividades (workflows) ao longo do processo. É 
possível perceber na figura em quais fases do RUP existem maiores demandas/esforços de cada workflow.
82
Metodologia de Desenvolvimento de Sistemas | Unidade 6 - Tipos MDS 
Figura 36 – Fases (colunas) e workflows (linhas) que constituem o RUP
Modelagem de Negócio
Iniciação
I2 E1 E2 C1 C2 C3 C4 T1 T2
Elaboração Construção Transição
Requisitos
Análise e Design
Implementação
Teste
Implantação
Fonte: Adaptada de SOMMERVILLE, 2007.
6.1.2 Vantagens x Desvantagens da implementação do RUP
Entre as diversas vantagens dos modelos RUP, podemos citar o fato de que sua natureza iterativa e incremental 
ajuda a suavizar riscos precoces, fazendo com que erros sejam corrigidos assim que detectados (PRESSMAN; 
MAXIM, 2016). A visibilidade do progresso também fica mais clara, visto que se tem um sistema em funcionamento 
muito cedo. Outra vantagem é seu foco no comprometimento com o usuário, pelas constantes verificações sobre 
se o sistema está atendendo às suas expectativas. Podemos também citar a questão do aumento da produtividade 
e a diminuição do número de defeitos encontrados.
É importante destacar a diferença entre erros e defeitos. Erros são problemas encontrados 
ao longo do processo de desenvolvimento de software. Defeitos são problemas encontrados 
pelo usuário durante o real funcionamento do sistema em seu ambiente.
Fique atento!
Por fim, podemos também citar como um benefício da utilização do RUP a possibilidade de um maior controle 
da complexidade do sistema. Em sistemas grandes, por vezes, se torna difícil um controle maior sobre sua 
complexidade. Como o RUP constrói o sistema de forma incremental, é possível ir verificando ao longo das iterações 
se o sistema não está se tornando complexo demais. Se for o caso, simplificações podem ser implementadas.
Existem também algumas limitações trazidas pela utilização do RUP. Em projetos de pequeno porte, pode não 
ser viável a sua aplicação, visto que ele se torna complexo e trabalhoso, além da possibilidade de realizar um 
investimento em suporte. Outra questão é que a utilização do RUP de maneira eficaz exige uma certa experiência 
da equipe, o que só é possível de se obter após anos de utilização. Os benefícios com o RUP geralmente não vêm 
de forma imediata. A equipe deve ser bem treinada, a metodologia deve ser adaptada ao contexto no qual será 
utilizada e leva certo tempo até que a metodologia seja absorvida de maneira ideal pela equipe.
83
Metodologia de Desenvolvimento de Sistemas | Unidade 6 - Tipos MDS 
6.2 Scrum
O Scrum foi desenvolvido primariamente como uma forma de gerenciar projetos para organizações que fabricavam 
carros e produtos de consumo. Sua proposta foi realizada no artigo “The new product development game”, escrito 
por Hirotaka Takeuchi e Ikujiro Nonaka e publicado no ano de 1986 (TAKEUCHI; NONAKA, 1986). Eles perceberam 
que os projetos nos quais havia pequenas equipes com indivíduos com capacidades multidisciplinares obtinham 
maior sucesso. Então acabaram associando essas equipes à formação Scrum em jogos de rugby, esporte bastante 
popular nos Estados Unidos, devido a algumas semelhanças encontradas com o jogo. 
Figura 37 – Exemplo da jogada Scrum do rugby
Fonte: SHUTTERSTOCK, 2018.
No esporte denominado rugby, a palavra “Scrum” é o nome de uma jogada que tem por 
objetivo a reposição de bola em disputa. Ela é utilizada para o reinício do jogo em alguns 
casos.
Saiba mais
Passado algum tempo, no ano de 1993, Jeff Sutherland, John Scumniotales e Jeff McKenna, da empresa Easel 
Corporation projetaram, documentaram e implementaram o Scrum da forma como ele é hoje, baseando-se nas 
ideias do artigo de Takeuchi e Nonaka. Ken Schwaber, em 1995, era CEO da Advanced Development Methods 
e formalizou a definição do Scrum para apresentação em uma conferência de orientação a objetos, a Ospsla, 
em Austin, no Texas, e ajudou na implantação desse método no desenvolvimento de softwares em diversas 
organizações. Suas definições podem ser encontradas no artigo “Scrum development process” (SCHWABER, 1997). 
O Scrum pode ser compreendido como uma metodologia ágil que tem como principal finalidade o gerenciamento 
de projetos de software, tarefa que vem realizando com sucesso. Apesar de hoje sua aplicação se dar em maior 
escala no âmbito do desenvolvimento de software, teoricamente, o Scrum pode ser aplicado em diversos contextos 
em que um conjunto de pessoas necessitem trabalhar juntas a fim de atingir determinado objetivo. 
84
Metodologia de Desenvolvimento de Sistemas | Unidade 6 - Tipos MDS 
O foco da abordagem Scrum é controlar processos empíricos priorizando a entrega de valor do negócio no menor 
prazo possível. Projetos dentro do Scrum se dividem em ciclos curtos que se repetem (iteração) para que seja 
possível realizar modificações e adaptações, de forma a corrigir possíveis desvios (incremental). Osciclos, que 
podem durar entre duas e quatro semanas, são denominados sprints.
Processos empíricos são baseados a partir de experiência obtida e da utilização do que é 
conhecido para realizar tomada de decisões.
Saiba mais
Visto como uma abordagem ágil, o fato de o Scrum carregar características de natureza incremental e iterativa 
permite que sejam otimizadas a previsibilidade e a gestão de riscos do projeto. O controle de um processo 
empírico, como no Scrum, é baseado em três pilares de sustentação, como mostra o Quadro 7.
Quadro 7 – Pilares de sustentação do controle de processos empíricos
Pilar Descrição
Transparência
Define que aspectos relacionados ao processo, que afetam o resultado, devem 
ser visíveis aos que controlam os resultados. Em outras palavras, deve existir 
um padrão comum entre quem construiu um sistema e quem inspecionou o 
resultado para que a definição de pronto seja a mesma para ambos. 
Inspeção
Define que processos devem estar em constante inspeção para que variações 
sejam detectadas. Essas variações no processo podem ser causadas até mesmo 
pelo ato de inspeção. É importante ressaltar que a inspeção não deve ser tão 
frequente a ponto de prejudicar o andamento do projeto. A inspeção deve ser 
aplicada por inspetores especializados. 
Adaptação
Se a inspeção detectar que existe uma variação que está fora dos limites aceitáveis, 
o processo ou o material produzido deve ser ajustado assim que possível. Para 
contribuir com a inspeção e adaptação, o Scrum possui quatro eventos formais: 
reunião de planejamento da sprint, reunião diária, reunião de revisão da sprint e 
retrospectiva da sprint.
Fonte: Adaptado de CRUZ, 2015.
Entre as principais vantagens do Scrum, podemos citar a grande motivação partindo dos membros da equipe, 
devido ao interesse em realizar a entrega das sprints (entregas incrementais) no prazo. Como o projeto fica descrito 
em um quadro, sua visualização é facilmente realizada, deixando mais claros os objetivos a todos os membros 
da equipe. Além disso, no Scrum a qualidade é mais importante que o prazo de entrega. Geralmente, o produto 
resultante das sprints possuem poucos erros. Por fim, também é possível alterar as prioridades das entregas, caso 
alguma mudança no contexto tenha gerado isso. 
Existem também algumas limitações associadas à utilização do Scrum. Como o Scrum visa bastante à qualidade 
do produto, isso pode acabar resultando no não cumprimento de prazos estipulados no começo do projeto. Outra 
questão é o fato de que no Scrum pode haver uma espécie de desordem nas funções, visto que elas não estão 
bem definidas no projeto, deixando, por exemplo, programadores confusos quanto à realização de suas tarefas. 
85
Metodologia de Desenvolvimento de Sistemas | Unidade 6 - Tipos MDS 
Por fim, no Scrum há uma certa ausência em termos de documentação, quando comparado às metodologias 
tradicionais. Isso pode causar problemas quando é necessário voltar a um determinado ponto do projeto e esse 
ponto não está documentado.
6.2.1 Papeis e responsabilidades no Scrum
A equipe que está envolvida no Scrum é chamada de time. Geralmente, é bem pequena e realiza eventos (tarefas) 
que possuem curta duração a cada ciclo, a fim de construir o produto final. A definição clara dos papéis de cada 
um no time do Scrum é fundamental para o sucesso de sua aplicação. O time do Scrum é constituído por três 
papéis: Scrummaster, Product Owner e o time de desenvolvimento.
Scrummaster
O Scrummaster tem a responsabilidade de garantir que a ideia do Scrum seja compreendia e aplicada por todos 
da equipe, de forma que o time adira aos valores, práticas e regras do Scrum. A função do Scrummaster também 
é treinar o time, de modo a levá-lo a ser mais produtivo e a desenvolver produtos de maior qualidade. Entre os 
praticantes, o Scrummaster é chamado de servo-líder do time. A Figura 38 apresenta um ilustração do Scrummaster. 
Figura 38 – Scrummaster no Scrum
Fonte: SHUTTERSTOCK, 2018.
É também papel do Scrummaster ajudar o time de desenvolvimento a compreender e utilizar o conceito 
de autoorganização e interdisciplinaridade. Entretanto, não é função do Scrummaster gerenciar o time de 
desenvolvimento. O que o Scrummaster faz, em suma, é treinar o time de desenvolvimento quando ele ainda não 
é bem compreendido, removendo quaisquer impedimentos que atinjam os objetivos estabelecidos.
86
Metodologia de Desenvolvimento de Sistemas | Unidade 6 - Tipos MDS 
Apesar de ser possível que o Scrummaster seja um membro do time de desenvolvimento, isso 
não é adequado, porque pode levar à confusão devido a ele ter de desempenhar tarefas em 
ambos os papéis.
O Scrummaster nunca deve ser o Product Owner, visto que os conflitos gerados devido a isso 
seriam muito grandes.
Fique atento!
Em processos controlados pelo Scrum, não existe um gerente ou um coordenador para liderar o projeto. Existe o 
Scrummaster, que é uma espécie de coach, ou seja, uma pessoa que apesar de não gerenciar o time, dá orientações, 
de forma a guiá-lo para direções assertivas. Um técnico de futebol, apesar de dar as instruções para os jogadores 
e poder interferir quando necessário, após o início do jogo os jogadores são os responsáveis por colocar as 
instruções em prática. O Scrummaster possui papel semelhante. As interferências podem ser, por exemplo, sobre 
regras não cumpridas, fuga do time das técnicas ágeis e até mesmo de etapas que não foram realizadas. Apesar 
do sucesso da aplicação do Scrum não ser totalmente dependente do Scrummaster, pode-se dizer que ele é o 
papel mais importante do Scrum. 
Product Owner
O Product Owner é o único responsável por gerenciar o backlog do produto (artefato que será definido na Seção 
6.2.2) e por garantir com que o trabalho desenvolvido pelo time tenha valor agregado. Ele também faz com 
que o backlog esteja visível a todos. Sendo o dono do produto, é ele quem tenta entender o negócio do produto 
e fazer com que o time também compreenda de forma que o produto esteja de acordo com o que o cliente 
deseja. Ele defende e prioriza os valores descritos no backlog de produtos. Dentre as responsabilidades do Product 
Owner, podemos citar as seguintes: a maximização do valor do produto e do trabalho do time desenvolvimento; 
a expressão clara dos itens que compõem o backlog em ordem de prioridade que defina as expectativas do 
cliente; assegurar que o trabalho realizado pelo time de desenvolvimento seja de valor; assegurar que o backlog 
do produto seja claro e transparente a todos os interessados; e garantir a compreensão do backlog pelo time 
desenvolvimento para que o que esteja sendo construído seja o que realmente o cliente espera. 
O Product Owner desempenha o papel mais importante para a compreensão das expectativas do cliente sobre 
o produto final. Um excelente time de desenvolvimento pode acabar construindo um sistema erroneamente 
que não atende às expectativas do negócio do cliente se o Product Owner não desempenhar seu papel de forma 
correta. A Figura 39 ilustra as tarefas de um Product Owner.
87
Metodologia de Desenvolvimento de Sistemas | Unidade 6 - Tipos MDS 
Figura 39 – Product Owner no Scrum
Fonte: SHUTTERSTOCK, 2018.
O Product Owner deve ser uma pessoa, e não um grupo de pessoas que tomam as decisões.
Fique atento!
Time de Desenvolvimento
É responsável por realizar o desenvolvimento e fazer com que o backlog do produto (com seus requisitos) se 
transforme em incrementos de funcionalidades, que, juntos formam o sistema que será entregue ao cliente. Todos 
os trabalhos técnicos que estão envolvidos no desenvolvimento são realizados pelo time de desenvolvimento, 
que deve ser multidisciplinar. Apesar de os integrantes do time possuírem habilidades específicas, todos são 
denominados desenvolvedores e a responsabilidade de uma entrega continua sendo de todos. E, para tanto, o 
time, por si só, deve se organizar para decidir como fará isso. As decisões dos desenvolvedores são em relação a 
tecnologias, arquiteturasde softwares, designers, melhores padrões de código e tudo o que envolva a construção 
de um sistema com maior qualidade e de forma que sempre seja possível ter uma versão do sistema já em 
funcionamento. 
O time de desenvolvimento desempenha o papel que mais afeta na qualidade técnica e funcional do produto 
final. O número de pessoas no time não deve ser muito grande, mas deve ter o tamanho suficiente para ser 
ágil e conseguir completar uma parcela significativa do trabalho sem estender os limites da sprint. Geralmente, 
o número de pessoas varia entre três e nove integrantes. Um número grande de pessoas dificulta que todos 
tenham conhecimento real em relação ao que está sendo construído, além de ser mais difícil de coordenar. A 
Figura 40 ilustra um time Scrum e seus membros. Na parte inferior, há destaque para o time de desenvolvimento.
88
Metodologia de Desenvolvimento de Sistemas | Unidade 6 - Tipos MDS 
Figura 40 – Time do Scrum
Fonte: SHUTTERSTOCK, 2018.
6.2.2 Artefatos do Scrum
Artefatos são os objetos utilizados e manipulados pelos diferentes papéis no Scrum ao longo do processo. Os 
artefatos só Scrum incluem o backlog, o burndown e o taskboard. 
Backlog
No Scrum, o backlog compreende os requisitos que o sistema deverá ter, bem como o entendimento necessário 
para que os requisitos sejam atendidos, funcionalidades, desenvolvidas, e o produto, entregue. Em suma, ele 
pode ser visto como uma lista com todas as funções, características, melhorias, tecnologias e correções que 
constituem as próximas versões de um produto. O backlog pode ser classificado em três conjuntos:
• Backlog do produto: backlog completo que será trabalhado ao longo do projeto.
• Backlog da versão de entrega: fragmento do backlog que deverá ser entregue na próxima versão do 
sistema.
• Backlog da sprint: fragmento do backlog que será considerado para trabalhar em determinada sprint (ou 
ciclo de desenvolvimento). 
Burndown
O burndown é um gráfico que ilustra de forma visual o somatório das estimativas de esforços restantes do backlog. 
Dessa forma, é possível fazer uma comparação com o que se estimou e o esforço que de fato foi dispensado. O 
burndown pode ser esboçado tanto para o backlog do produto quanto para o backlog da sprint. 
Taskboard
O taskboard é um quadro de tarefas colocado na parede, em que: na primeira coluna, o time coloca as estórias 
– descrição resumida de uma funcionalidade requerida pelo cliente –; na segunda coluna, as tarefas contidas 
89
Metodologia de Desenvolvimento de Sistemas | Unidade 6 - Tipos MDS 
na estória que ainda devem ser feitas; na terceira coluna, as tarefas que estão sendo feitas; na quarta coluna as 
tarefas que necessitam ser testadas; na última, as tarefas finalizadas. A ideia de usar algo visual para representar 
o andamento do projeto é bastante eficiente para deixar clara sua situação. A Figura 41 ilustra um exemplo de 
taskboard.
Figura 41 – Exemplo de taskboard
Fonte: SHUTTERSTOCK, 2018.
Síntese da unidade
Esta unidade abordou implementações de dois tipos de processo, o RUP, ilustrando um processo unificado, e o 
Scrum, ilustrando um processo ágil. As principais características de ambas as implementações foram destacadas 
ao longo da unidade. 
90
Considerações finais
Scrum e RUP são duas das implementações de processo mais utilizadas 
atualmente. Compreendendo suas definições, você estará, sem dúvidas, 
mais preparado para o mercado.
91
 7Unidade 77. Qualidade em MDS
Para iniciar seus estudos
Nesta unidade, você conseguirá compreender conceitos relacionados à 
qualidade em metodologias de desenvolvimento de software. Eles são 
aplicados em grande parte nas organizações que desenvolvem softwares 
nos dias dia hoje. Por isso, conhecê-los é algo extremamente importante. 
Objetivos de Aprendizagem
• Definir conceitos relacionados à qualidade em metodologias de 
desenvolvimento de software.
• Verificar a qualidade do processo e testes de software e validação 
de requisitos.
• Aprender a analisar se a qualidade do processo e testes de software 
e validação de requisitos é adequada ou não para a empresa.
92
Metodologia de Desenvolvimento de Sistemas | Unidade 7 - Qualidade em MDS
Introdução da unidade
A qualidade de software é um ponto do processo de desenvolvimento, o qual deve-se dar bastante atenção. 
Apesar de muitas organizações visarem apenas ao lucro, um processo de desenvolvimento com qualidade acaba 
resultando em ótimos softwares, o que também impacta em questões financeiras. Sendo assim, a qualidade do 
software produzido pode impactar diretamente nos lucros de uma empresa. Nesta unidade, serão evidenciados 
os termos de processos de desenvolvimento, destacando modelos de maturidade que visam avaliar a qualidade 
de um processo com parâmetros internacionais e nacionais, o CMMI e o MPS-BR, respectivamente. Ambos são 
bastante utilizados nas principais organizações da atualidade. Além disso, serão apresentadas também as formas 
de realização de teste de software e validação de requisitos. Essas tarefas possuem como objetivo evitar que erros 
sejam encontrados por clientes após a entrega. Conhecê-los é fundamental para que você compreenda sua 
importância e contexto de aplicação.
7.1 Qualidade em MDS
A qualidade em metodologias de desenvolvimento de software se faz extremamente importante. As principais 
organizações que produzem softwares na atualidade atingiram determinados patamares devido principalmente 
à qualidade de seus produtos. Por esse motivo, qualidade é fundamental para qualquer situação. Nesta unidade, 
serão abordados o conceito de qualidade do processo de software, focando nos modelos de referência CMMI e 
MPS-BR, bem como a apresentação de formas de teste de software, além dos conceitos relacionados à validação 
de requisitos.
7.1.1 Qualidade do processo de software
A garantia da definição e normatização de processos de desenvolvimento é o propósito da área de engenharia de 
software denominada qualidade de software. Apesar do fato de que a maioria das abordagens para melhoria do 
software atuarem especificamente no processo, a finalidade ainda sim é a garantia de que o sistema desenvolvido 
terá as características que o cliente deseja e que foram estabelecidas no princípio do projeto.
A definição de processo é dada pelo padrão IEEE 610.12-1990 da seguinte forma: “Processo é uma sequência de 
passos realizados para um determinado propósito”.
Entretanto, aqui, estamos interessados em processos de softwares. A definição de processo de softwares é dada 
pelo modelo de referência CMMI (Capability Maturity Model Integration) como o seguinte: “Um processo de software 
é um conjunto de atividades, métodos, práticas e tecnologias que as pessoas utilizam para desenvolver e manter 
software e produtos relacionados”.
Em outras palavras, podemos definir um processo de software como sendo uma sequência de atividades, 
métodos, práticas e tecnologias, a fim de garantir que o software possa ser desenvolvido de forma organizada e 
previsível. A Figura 42 exemplifica um processo de desenvolvimento de software que parte dos requisitos escritos, 
baseando-se nas necessidades do usuário e, ao longo do desenvolvimento, produtos intermediários vão sendo 
produzidos. Por fim, o produto final é entregue ao cliente.
93
Metodologia de Desenvolvimento de Sistemas | Unidade 7 - Qualidade em MDS
Figura 42 – Processo de desenvolvimento de software
Requisitos do
Usuário
Processo de
desenvolvimento
Entrega do
Produto Final
Produtos
Intermediários
Produto Final
Fonte: Elaborada pelo autor.
A qualidade também é descrita pela norma ISO 9000, do ano de 2000, em que se cumprem requisitos que 
foram estabelecidos no princípio, o que pode se dar para um produto, um processo ou até mesmo um sistema. A 
qualidade do software e do seu processo de desenvolvimento estão intimamente relacionadas, visto que a busca 
por um software de mais qualidade tipicamente passa pela melhoria do processo de desenvolvimento. 
Existe umademanda cada vez maior para que empresas produzam softwares com mais qualidade em um curto 
prazo de tempo. Por esse motivo, existem diversas tentativas de proposição de abordagens para melhoria no 
processo de desenvolvimento de software, de forma a levar a uma maior produtividade e agilidade sem perder 
a qualidade. Os modelos que foram desenvolvidos possuem o propósito de apoiar a melhoria dos processos de 
software (MPS) e permitem a superação dos fatores críticos de forma mais rápida. 
Alguns dos modelos mais utilizados são baseados no que chamamos de maturidade. Esse conceito pode ser 
entendido como a capacidade de se repetir uma série de resultados de uma maneira previsível (PRESSMAN, 
2016). Um dos principais modelos baseados em maturidade atualmente é o Capability Maturity Model Integration 
(CMMI) que atua não só na esfera brasileira, mas também mundial. Já considerando apenas a esfera nacional, o 
modelo MPS-BR (Melhoria de Processo de Software Brasileiro) possui grande adesão por uma considerável parte 
de empresas brasileiras que objetivam a melhoria de seus processos e o destaque em competência, para só então 
buscar a utilização de um modelo reconhecido internacionalmente para competir com o mercado externo.
É importante destacar que os modelos CMMI e MPS-BR são constituídos por diferentes níveis 
de maturidade, apesar de ambos disponibilizarem formas para medir o grau de progresso 
atingido na implementação de projetos de software.
Saiba mais
A seguir, abordaremos algumas definições referentes aos modelos de melhoria de processo de software CMMI e 
MPS-BR, respectivamente.
94
Metodologia de Desenvolvimento de Sistemas | Unidade 7 - Qualidade em MDS
7.1.2 CMMI
O Software Engineering Institute (SEI), órgão integrante da universidade norte-americana Carnegie Mellon, é um 
instituto que foi criado com o objetivo de melhorar a capacidade da indústria de software na América do Norte. 
Estudos, em 1980, pelo SEI, visavam analisar a capacidade dos serviços de software prestados. Como resultado 
dessa análise, foi criado o Modelo de Maturidade e Capacidade (CMM - Capability Maturity Model) pelo instituto, 
modelo este que tem influenciado bastante a comunidade de engenharia de software a ter uma preocupação 
maior com a melhoria do processo. A partir desse modelo, outros, que se preocupam com a maturidade e 
capacidade, foram desenvolvidos ao longo do tempo. Exemplos disso seriam o Modelo de Maturidade e de 
Capacidade de Pessoas (CMM-P) e o Modelo de Capacidade de Engenharia de Sistemas.
Mais tarde, o SEI embarcou em uma tentativa de integrar diferentes modelos de capacidade baseados na 
maturidade do processo, incluindo seus próprios modelos. O modelo resultante disso foi o Modelo de Capacidade 
Integrado (CMMI). O objetivo com o CMMI era a substituição dos CMMs e a integração de outros modelos de 
maturidade e de capacidade. O CMMI conta com duas versões: por estágio e contínua. Além disso, ele trata 
alguns dos pontos fracos do CMM corrigindo-os. 
Pode-se entender o modelo CMMI como um framework para a melhoria de processos de software. A versão 
do CMMI por estágios é similar ao CMM para o desenvolvimento e permite com que os procedimentos para a 
produção de softwares sejam avaliados, e a eles seja dado um nível de maturidade, indo de 1 a 5. Já sua versão 
contínua permite a classificação de 22 áreas de processo com valores indo de 0 a 5. 
O modelo CMMI é bastante complexo, estando contido em um documento com mais de mil páginas que 
o descreve. Dessa forma, aqui faremos uma simplificação da sua composição. Os principais elementos deste 
modelo são:
1. Um conjunto de 22 áreas que está associado às atividades de software e que é importante para a melhoria 
e capacidade de processo. Essas áreas são divididas em 4 categorias no modelo contínuo. O Quadro 8 
exibe essa relação.
Quadro 8 – Categorias e áreas de processo do CMMI contínuo
Categoria Área de Processo
Gerenciamento de Processos Definição do processo organizacional.
Foco de processo organizacional.
Treinamento organizacional.
Desempenho de processo organizacional.
Inovação e implantação organizacional.
95
Metodologia de Desenvolvimento de Sistemas | Unidade 7 - Qualidade em MDS
Categoria Área de Processo
Gerenciamento de Projetos Planejamento de projeto.
Monitoração e controle de projeto.
Gerenciamento de acordo com fornecedores.
Gerenciamento de projeto integrado.
Gerenciamento de riscos.
Gerenciamento quantitativo de projeto.
Engenharia Gerenciamento de requisitos.
Desenvolvimento de requisitos.
Solução técnica.
Integração de produto.
Verificação.
Validação.
Suporte Gerenciamento de configuração.
Garantia de qualidade de processo e produto.
Medição e análise.
Análise de decisão e resolução.
Análise causal e resolução.
Fonte: Baseado em PRESSMAN, 2016.
2. Um conjunto de metas que descrevem, de forma abstrata, uma condição desejável para ser obtida por 
organizações. Elas podem ser divididas em metas específicas e metas genéricas. Metas específicas para 
uma área de processo aborda um estado ou condição desejável pra ela. Já as metas genéricas estão 
associadas ao emprego de boas práticas. O Quadro 9 mostra exemplos de metas específicas e genéricas 
do CMMI.
Quadro 9 – Metas específicas e genéricas no modelo CMMI
Meta Área de processo Tipo
Ações corretivas são gerenciadas até a conclusão, 
quando o desempenho ou os resultados se desviam 
significativamente do plano.
Monitoração e controle 
de projeto
Meta específica
O desempenho real e o progresso do projeto são 
monitorados contra o plano de projeto. 
Monitoração e controle 
de projeto
Meta específica
96
Metodologia de Desenvolvimento de Sistemas | Unidade 7 - Qualidade em MDS
Meta Área de processo Tipo
Os requisitos são analisados e validados, e 
uma definição da funcionalidade requerida é 
desenvolvida.
Desenvolvimento de 
requisitos
Meta específica
Causa raiz de defeitos e outros problemas são 
sistematicamente determinados.
Análise causal e 
resolução 
Meta específica
O processo é institucionalizado como um processo 
definido. 
- Meta genérica
O processo permite e dá apoio à realização de 
metas específicas da área de processo de forma 
a transformar produtos de trabalho de entrada 
identificável para gerar produtos de trabalho de 
saída identificável.
- Meta genérica 
Fonte: Baseado em PRESSMAN, 2016.
3. Uma série de boas práticas que descrevem o que deve ser feito para alcançar uma meta. Diversas práticas, 
específicas ou genéricas, podem estar associadas a uma mesma meta, dentro de uma área de processo. 
O Quadro 10 ilustra alguns exemplos de boas práticas. 
Quadro 10 – Metas e práticas associadas ao CMMI
Meta Práticas associadas
Os requisitos são analisados e validados, 
e uma definição da funcionalidade 
requerida é desenvolvida. 
Analisar sistematicamente os requisitos derivados para 
garantir que eles são necessários e suficientes. 
Validar os requisitos para garantir que o produto resultante 
executará conforme o pretendido no ambiente do usuário, 
usando várias técnicas.
Causa raiz de defeitos e outros problemas 
são sistematicamente determinados.
Selecionar os defeitos críticos e outros problemas para 
análise.
Realizar uma análise causal de defeitos selecionados e outros 
problemas e propor ações para solucioná-los.
O processo é institucionalizado como um 
processo definido.
Estabelecer e manter uma política organizacional para 
planejar e executar o processo de desenvolvimento de 
requisitos.
Atribuir responsabilidades e autoridade para executar o 
processo, desenvolver os produtos de trabalho e prestar os 
serviços do processo de desenvolvimento de requisitos.
Fonte: Baseado em PRESSMAN, 2016.
97
Metodologia de Desenvolvimento de Sistemas | Unidade 7 - Qualidade em MDS
Apesar de existirem práticas associadas sugeridas para se conseguir atingir uma meta, o 
CMMI ressalta que o mais importante é a meta. Portanto, qualquer caminho é válido para se 
atingir essa meta.
Fiqueatento!
Utilizar o CMMI para avaliação consiste em examinar os processos (ou áreas de processos) em uma organização 
e classificá-los em uma escala com seis níveis de maturidade. Quanto mais maduro um processo melhor. Essa 
escala é definida da seguinte forma (PRESSMAN, 2016):
Quadro 11 – Escala dos níveis de maturidade no CMMI
Nível de Maturidade Descrição
Incompleto Ao menos 1 das metas específicas associadas à área do processo não 
está satisfeita e não existem metas genéricas. 
Executado Metas associadas com a área de processos são satisfeitas, e o escopo de 
trabalho de todos os processos é comunicado a todos os membros da 
equipe de forma explícita.
Gerenciado Metas associadas com a área de processo são satisfeitas, políticas 
organizacionais devem ser utilizadas, planos de projeto são 
documentados (definindo metas de projeto) e o gerenciamento de 
recursos e controle de processos devem estar em ordem. 
Definido Padronização e implantação de processos organizacionais. 
Gerenciado quantitativamente Há uma responsabilidade organizacional de utilizar métodos estatísticos/
quantitativos para controlar os subprocessos. 
Otimizando Deve-se utilizar medições de processo e produto para dirigir a melhoria 
de processos. Processo devem ser adaptados às necessidades do 
negócio. 
Fonte: Baseado em PRESSMAN, 2016.
98
Metodologia de Desenvolvimento de Sistemas | Unidade 7 - Qualidade em MDS
A Figura 43 ilustra a disposição dos níveis de maturidade de processos no CMMI.
Figura 43 – Níveis de maturidade do CMMI
Nível 1 - Inicial
Nível 2 - Gerenciado
Nível 3 - Definido
Nível 4 - Gerenciado
Quantitativamente
Nível 5 - Otimizado
Fonte: Elaborada pelo autor.
As descrições aqui apresentadas são bastante simples. Para a utilização do CMMI, é necessário trabalhar com 
uma descrição mais detalhada. Com esse propósito, existem diversos manuais do CMMI disponibilizados de 
forma gratuita na internet.
7.1.3 MPS-BR
Criado pela reunião de organizações ligadas ao desenvolvimento de software, como a Softex (SP), RioSoft (RJ), 
o COPPE/UFRJ (RJ) e o CESAR (PE), o MPS-BR (Melhoria do Processo de Software Brasileiro) pode ser visto como 
um modelo para melhorar a capacidade de desenvolvimento de softwares nas empresas do Brasil (BR, 2011). 
Desenvolvido em 2003, e também baseado na maturidade de processos, o MPS-BR levou em consideração 
algumas normas e modelos que são internacionalmente conhecidos, tais como CMMI, norma ISO/IEC 12207 e 
norma ISO/IEC 15504, adaptando-os para as características específicas do mercado brasileiro.
No modelo MPS-BR, os níveis de maturidade definem patamares de forma a indicar a evolução dos processos. 
Conhecer o nível de maturidade em que se encontra uma organização permite com que seja possível a predição 
do seu desempenho futuro ao realizar a execução de um ou mais processos. São 7 os níveis de maturidade, como 
indica a Figura 44.
99
Metodologia de Desenvolvimento de Sistemas | Unidade 7 - Qualidade em MDS
Figura 44 – Níveis de maturidade do MPS-BR
Em otimizaçãoA
B
C
D
E
F
G
Gerenciado Quantitativamente
Definido
Largamente definido
Parcialmente definido
Gerenciado
Parcialmente gerenciado
Fonte: Elaborada pelo autor.
O Quadro 12, a seguir, apresenta uma descrição para os 7 níveis de maturidade do modelo MPS-BR.
Quadro 12 – Escala de níveis de maturidade do MPS-BR
Nível de Maturidade Descrição
Em otimização Inovação e análise de causas são algumas das 
preocupações.
Gerenciado quantitativamente O desempenho e a gerência quantitativa dos 
processos são avaliados.
Definido O gerenciamento de riscos ocorre. 
Largamente definido Além de outras atividades, abrange verificação, 
validação, instalação e integração de componentes.
Parcialmente definido Envolve treinamento, adaptação de processos 
para gerência de projetos, melhoria e controle do 
processo organizacional.
Gerenciado Inclui medição, gerência de configuração, aquisição 
e garantia de qualidade. 
Parcialmente gerenciado Inicia-se o gerenciamento de requisitos e projetos.
Fonte: Baseado em MPS.BR, 2011.
100
Metodologia de Desenvolvimento de Sistemas | Unidade 7 - Qualidade em MDS
A obtenção da certificação MPS-BR por organizações abre portas para as empresas concorrerem em licitações 
do governo, visto que em muitas delas a certificação é uma exigência. O modelo MPS-BR também pode ser 
considerado, em detrimento ao CMMI em organizações de médio e pequeno porte, visto que sua implementação 
custa consideravelmente menos que a aplicação do modelo CMMI, por exemplo.
7.2 Modelos de teste de software
O teste de software tem como finalidade mostrar que um sistema faz o que é suposto que ele faça e expor 
defeitos antes que o usuário faça uso do software (SOMMERVILLE, 2007). Durante esta etapa, dados hipotéticos 
são apresentados ao sistema, a fim de verificar sua saída que é analisada com o objetivo de encontrar erros, 
anomalias ou quaisquer informações sobre características que estão funcionando mal no programa. 
Entre os objetivos do teste software, podemos citar dois como principais:
1. Mostrar tanto ao desenvolvedor quanto ao cliente que o sistema atende aos requisitos, ou seja, que 
ele faz aquilo que foi solicitado. Em softwares customizados, isso significa que deve existir, ao menos, 
um teste por requisitos. Já nos softwares genéricos, devem haver testes para todas as características do 
sistema além da sua integração.
2. Encontrar situações/entradas que fazem com que o sistema se comporte de forma incorreta, indesejável 
ou diferente do que foi especificado. Os defeitos de software é o que causam essas situações. Como 
exemplos, há panes, processamentos incorretos, dados corrompidos, entre outros. 
A Figura 45 ilustra um modelo para teste de programas, contendo entradas que geram saídas anômalas.
Figura 45 – Um modelo para teste de programas
Sistema
Saídas
e resultados
de teste
Entradas
de
dados
de teste
Entradas que
causam
comportamentos
anômalos
Saídas que
revelam
defeitos
Fonte: Baseado em SOMMERVILLE, 2007.
De forma geral, podemos categorizar os testes de acordo com suas características e objetivos em dois tipos: 
testes caixa-branca e testes caixa-preta. Testes caixa-branca buscam avaliar o comportamento interno dos 
componentes de software. Esse tipo de teste avalia o código-fonte do sistema para verificar ciclos, condições, 
caminhos lógicos, etc. Já os testes caixa-preta avaliam um software como se ele fosse uma caixa-preta, ou seja, o 
comportamento interno do software não é levado em consideração. Basicamente, entradas são apresentadas a 
um sistema, e as respostas obtidas são comparadas às respostas esperadas. O objeto a ser testado pode ser um 
método, uma função, um programa, um componente, conjuntos de programas ou até mesmo funcionalidades. 
101
Metodologia de Desenvolvimento de Sistemas | Unidade 7 - Qualidade em MDS
Ao longo do processo de desenvolvimento, o software geralmente passa por três tipos de teste: testes em 
desenvolvimento, testes de release e testes de usuário. Vejamos a seguir um pouco mais sobre cada um desses 
testes.
7.2.1 Testes em desenvolvimento
Os testes em desenvolvimento são constituídos por todas as atividades de testes que são realizadas pela equipe 
de desenvolvimento ao longo do projeto. O objetivo é a descoberta de bugs e defeitos. Geralmente, os projetistas 
do sistema ou até mesmo os programadores são os responsáveis por realizar esse tipo de teste. 
Testes em desenvolvimento podem ser divididos em três categorias de acordo com a abrangência do que está 
sendo testado:
1. Testes unitários: neste tipo de teste, as unidades individuais de programas são testadas separadamente. 
Essas unidades consistem em classes, objetos e métodos.
2. Teste de componentes: neste tipo de teste, há uma integração de unidades individuais, a fim de 
criar componentes compostos. Geralmente, teste de componentes buscam testar as interfaces dos 
componentes. 
3. Teste de sistema: neste tipo de teste, uma parte ou todoscomponentes do sistema são combinados, a 
fim de testar o sistema como um todo. O objetivo é o teste das interações entre componentes.
7.2.2 Testes de release
O teste de release possui o objetivo de testar o sistema, a fim de verificar se ele atende aos requisitos buscados 
pelos interessados no sistema. Este teste é realizado por uma equipe especializada para isso, e o sistema a ser 
testado já deve ser uma versão completa que será disponibilizada aos usuários posteriormente. Desse modo, 
testes de release devem demonstrar que o sistema é funcional, possui desempenho e funcionalidade e que não 
apresentará falhas na sua utilização. Geralmente, são testes caixa-preta, visto que sua elaboração é baseada 
somente nas especificações previamente acordadas, ou seja, não se olha o código para desenvolver os testes.
7.2.3 Testes de usuário
Testes de usuário, assim como o próprio nome diz, possuem a participação do usuário, utilizando o sistema em 
seu próprio ambiente. Em algumas situações, esse usuário pode ser, por exemplo, o grupo de marketing interno 
de uma empresa que verificará se o teste pode ser comercializado ou não. 
Na prática, os testes de usuário podem ser divididos em três tipos:
1. Teste Alfa: usuários do software colaboram com a equipe de desenvolvimento, a fim de testar o software 
dentro da organização de desenvolvimento. 
2. Teste Beta: um release do sistema é disponibilizado aos usuários para que estes possam explorar o sistema 
com a finalidade de descobrir problemas que os desenvolvedores não conseguiram encontrar. 
102
Metodologia de Desenvolvimento de Sistemas | Unidade 7 - Qualidade em MDS
3. Teste de Aceitação: clientes testam um sistema, a fim de decidir se o sistema está pronto para ser aceito 
e, em seguida, implantado no ambiente do cliente. 
7.3 Validação de requisitos
De acordo com Sommerville (2007), a validação “é o processo pelo qual se verifica se os requisitos definem o 
sistema que o cliente realmente quer”. Em outras palavras, confirma se o que o cliente tem em mente para o 
sistema requerido realmente está escrito no documento de requisitos. A validação acontece em concomitância 
com a análise, no intuito de encontrar problemas nos requisitos. 
A validação de requisitos se faz extremamente importante, visto que erros na especificação dos requisitos que 
forem encontrados somente na etapa de desenvolvimento ou até mesmo quando o sistema já está em uso podem 
gerar altos custos em sua solução. Consertar erros na especificação pode ser algo simples a se fazer, quando o 
sistema ainda não foi implementado. Caso isso já tenha ocorrido, envolve alterações não só no documento, mas 
na codificação do sistema o que exige também que o sistema deva ser retestado. 
Ao longo do processo de validação de requisitos, existe uma série de verificações que deve ser realizada, utilizando 
o documento de requisitos. Algumas dessas verificações são:
1. Verificações de validade: A princípio, requisitos iniciais podem ser levantados. Entretanto, uma análise 
mais aprofundada pode fazer com que requisitos adicionais sejam especificados, devido à descoberta de 
novas funcionalidades exigidas pelo cliente. 
2. Verificações de consistência: Não deve haver conflito entre requisitos especificados. Em outras palavras, 
não devem existir restrições contraditórias, por exemplo. 
3. Verificações de completude: O documento de requisitos deve conter todas as funcionalidades e 
restrições pretendidas pelo usuário com o sistema. 
4. Verificações de realismo: Requisitos devem ser verificados para ver a possibilidade de serem 
implementados, considerando a tecnologia, orçamento e cronograma existentes. 
5. Verificabilidade: Requisitos devem ser passíveis de verificação. Em outras palavras, deve-se escrever um 
conjunto de teste para testar cada um dos requisitos especificados.
Existem também diferentes tipos de técnicas que podem ser utilizadas individualmente ou em conjunto para 
validar os requisitos:
1. Revisões de requisitos: uma equipe de revisores verifica se os requisitos possuem erros ou inconsistências 
de forma sistemática.
2. Prototipação: um modelo executável do software é apresentado a usuários e clientes, a fim de verificarem 
se o sistema está atendendo às suas necessidades.
3. Geração de casos de teste: requisitos necessitam ser testáveis. Se testes já forem executados na etapa 
de validação de requisitos, problemas serão evitados em etapas seguintes. Se é difícil projetar um caso de 
teste para um requisito, o mesmo deve ser reconsiderado. O desenvolvimento de testes antes mesmo da 
implementação dos requisitos é parte integrante de diversos métodos de desenvolvimento de software.
103
Metodologia de Desenvolvimento de Sistemas | Unidade 7 - Qualidade em MDS
Os problemas encontrados na validação de requisitos são de extrema importância. Entretanto, a validação ainda 
é uma etapa difícil de ser executada, visto que mostrar que os requisitos atendem às necessidades de um cliente, 
sem de fato implementá-los, podem acabar sendo uma tarefa trabalhosa. Por esse motivo, nem sempre é possível 
encontrar todos os problemas nesta fase. Sendo assim, mesmo após o ajuste do documento de requisitos, ainda 
sim podem ocorrer mudanças futuras decorrentes de problemas encontrados neste documento. 
Síntese da unidade
Esta unidade abordou o conceito de qualidade do processo de software, destacando dois modelos destinados para 
realizar esse tipo de avaliação, o CMMI e o MPS-BR. Além disso, apresentamos modelos de teste de software que 
podem ser divididos em teste de desenvolvimento, teste de release e teste de usuário. Por fim, foram discutidas 
questões referentes à validação de requisitos.
104
Considerações finais
A qualidade em metodologias de desenvolvimento de software acaba 
resultando na qualidade do sistema desenvolvido, o que geralmente é 
uma das principais metas de quaisquer organizações. Portanto, deve ser 
tratada com bastante seriedade, e esforços devem ser levantados para que 
sua manutenção seja efetuada de forma correta.
105
 8Unidade 88. Estudos de Casos com Uso de 
Software CASE 
Para iniciar seus estudos
Nesta unidade, você compreenderá diferentes conceitos relacionados 
às ferramentas CASE que auxiliam o processo de desenvolvimento de 
software. Conhecer estas ferramentas possibilita compreender quando 
e onde utilizá-las e, assim, usufruir de seus benefícios da melhor forma 
possível em seus projetos futuros.
Objetivos de Aprendizagem
• Definir os diferentes conceitos relacionados às ferramentas CASE 
e sua aplicação. 
106
Metodologia de Desenvolvimento de Sistemas | Unidade 8 - Estudos de Casos com Uso de Software CASE 
Introdução da unidade
A produção de softwares tem crescido amplamente nos dias atuais, principalmente devido à evolução constante 
dos hardwares que os suportam. Nesse sentido, cada vez mais, organizações têm utilizado metodologias e 
ferramentas auxiliares a fim de aumentarem a produtividade e melhorarem a qualidade de seu produto final. 
Ferramentas CASE podem ser vistas como softwares que suportam as atividades que estão envolvidas em um 
processo de desenvolvimento de sistemas. Sua utilização é fundamental para que se desenvolva um software 
de qualidade, entre outras vantagens. Nesta unidade, serão abordados seus principais conceitos, categorias e 
exemplos, bem como um estudo de caso com sua aplicação. O estudo das ferramentas CASE possibilita sua 
utilização e a capacidade de extrair o máximo de benefícios que elas possam trazer para seus projetos.
8.1 Estudos de casos com uso de software CASE
Ferramentas CASE são utilizadas para apoiar as diversas atividades do processo de desenvolvimento de software 
(VAVASSORI, 2001). Sua utilização e compreensão se fazem extremamente importantes, principalmente em 
sistemas de grande porte. Nesta unidade, serão abordados conceitos relacionados a ferramentas CASE, seu 
histórico, workbenches e a importância de sua utilização. Além disso, as principais categoriasem que as ferramentas 
se agrupam e exemplos de ferramenta também serão apresentados. Por fim, apresentaremos também um estudo 
de caso pra esse tipo de ferramenta.
8.1.1 Ferramentas CASE
O papel dos sistemas de softwares é fundamental nos dias atuais. Com diferentes funções, os sistemas estão cada 
vez mais adaptados para atenderem às necessidades de diferentes usuários. Entretanto, independentemente da 
atuação de um sistema de software, seja ela científica, militar, industrial ou comercial, o principal objetivo em um 
sistema de software é sempre a qualidade. 
A engenharia de software vem cumprindo um papel importante na garantia do desenvolvimento de softwares 
de qualidade. Desde o levantamento dos requisitos até o teste de software, o estabelecimento do processo de 
desenvolvimento de software vem recebendo aprimoramentos e acabou por se tornar algo essencial no projeto 
de qualquer sistema de computador. Modelos, metodologias e formalismos foram propostos a fim de dar suporte 
ao processo, de forma que custos sejam minimizados, a produtividade seja aumentada e a qualidade do software 
final seja ampliada. 
A incorporação de métodos formais tem sido útil, visto que sua utilização agrega o rigor matemático ao processo, 
o que promove diversos benefícios. Notações, por exemplo, permitem que ambiguidades sejam removidas. Já 
técnicas de verificação permitem que o sistema seja definido como correto antes mesmo da sua implementação. 
Regras de transformação possibilitam que o sistema seja especificado em uma linguagem abstrata. Assim, 
permite que uma especificação mais concreta e semanticamente idêntica seja construída, utilizando até mesmo 
ferramentas que o fazem de forma automática. 
Entretanto, apesar de tanta sofisticação dos métodos de desenvolvimento de software, um efeito colateral 
é gerado: a alta complexidade do processo de gerenciamento do processo. Assim como em uma fábrica, o 
107
Metodologia de Desenvolvimento de Sistemas | Unidade 8 - Estudos de Casos com Uso de Software CASE 
desenvolvimento de software exige a utilização de ferramentas de apoio que visam minimizar os problemas 
resultantes das limitações existentes na natureza humana. 
Nesse contexto, surgiram as diversas ferramentas Computer-Aided Software Engineering (CASE), com o objetivo de 
dar suporte às inúmeras fases do processo de software. De acordo com Sommerville (2007), CASE é uma forma da 
engenharia de software ser auxiliada pelo computador. Em outras palavras, é “o processo de desenvolvimento de 
software com uso de suporte automatizado”.
A palavra “CASE” é, por vezes, utilizada para designar as ferramentas que dão suporte aos processos de software. 
Contudo, o termo “CASE” denota a tecnologia que existe no uso de ferramentas computacionais para o 
desenvolvimento de programas. Em outras palavras, é a combinação de ferramentas de apoio e engenharia de 
software. O ideal é denominar “ferramentas CASE” para os softwares de apoio, e “CASE”, a tecnologia em si. A 
Figura 46 exemplifica um diagrama de casos de uso para uma ferramenta CASE.
Figura 46 – Exemplo de diagrama de casos de uso para uma ferramenta CASE
criar projeto
adicionar modelo
ao projeto
verificar modelo
adicionar diagrama
ao modelo
adicionar diagrama de
casos de uso
adicionar diagrama
de classe
gerar código
salvar projeto
abrir projeto
Servidor de Arquivos
Desenvolvedor
Fonte: Elaborada pelo autor.
8.1.2 Breve histórico das ferramentas CASE
Em 1982, surgiram as primeiras ferramentas CASE comerciais. Entretanto, somente a partir de 1985 a utilização 
desse tipo de ferramenta começou a ficar mais frequente, visto que, naquela época, houve um grande interesse 
da comunidade de engenharia de software no desenvolvimento de ferramentas mais sofisticadas. Em uma 
pesquisa realizada por Aubrey Moore, em 1990, levantaram-se os seguintes dados (MOORE, 1996):
• Foram identificados mais de 470 vendedores de ferramentas CASE, e novas ferramentas surgem a cada 
mês.
108
Metodologia de Desenvolvimento de Sistemas | Unidade 8 - Estudos de Casos com Uso de Software CASE 
• Em 1990, o mercado de ferramentas CASE movimentou 4,8 bilhões de dólares. 
• Em 1995, o crescimento estimado no mercado de ferramentas CASE subiu para 12,11 bilhões de dólares.
A sofisticação das ferramentas CASE foi possível devido a dois importantes eventos:
• O rápido progresso dos computadores pessoais e workstations no início dos anos 1980. O aumento na 
capacidade de memória e processador, bem como o surgimento de uma interface gráfica facilitaram a 
interação humano-computador. 
• Uma série de modelos que poderiam ser suportados por ferramentas surgiram como resultado de diversas 
pesquisas sobre o desenvolvimento de software.
No meio acadêmico, em instituições governamentais e órgãos de defesa, os investimentos em pesquisas no 
desenvolvimento de ferramentas CASE vêm aumentando consideravelmente.
8.1.3 Workbenches
Sommerville (2007) define um “CASE workbench” como um conjunto integrado de ferramentas CASE que 
trabalham juntas no apoio a uma grande atividade do processo, por exemplo, projeto de software ou gerenciamento 
de configuração. Em outras palavras, podemos compreender um workbench como um conjunto de ferramentas 
CASE que objetivam o fornecimento de suporte a uma fase em particular do processo de software. 
A vantagem no agrupamento de ferramentas em um workbench é o fato de que, juntas, elas podem promover um 
suporte maior do que trabalhando individualmente. Outras ferramentas podem implementar e solicitar serviços 
comuns, por exemplo. Entre as diversas fases do processo, as fases de análise e design, programação e teste são 
as que mais se beneficiam com a utilização de workbenches. Isso pode ser explicado pelo fato de que estas são as 
fases melhor compreendidas dentro do processo. Sendo assim, ferramentas eficientes para suporte dessas fases 
se unificam, a fim de aumentar ainda mais a produtividade. 
Conforme a integração vai se consolidando, workbenches acabam se assemelhando a um sistema aberto. Essa 
postura resulta em algumas vantagens:
• Facilidade na adição de novas ferramentas que atendem a necessidades particulares de uma organização 
ou substituição de ferramentas antigas por ferramentas mais adequadas. 
• As ferramentas possuem como saída arquivos que podem ser utilizados por sistemas de gerenciamento 
de configuração. 
• Workbenches são fáceis de escalar.
• As necessidades da organização não são reprimidas durante a utilização de workbenches. Exemplo disso 
seria o fato de que a troca de uma ferramenta obsoleta por outra mais recente não afeta o funcionamento 
da empresa. Basta desligar apenas a ferramenta a ser removida.
109
Metodologia de Desenvolvimento de Sistemas | Unidade 8 - Estudos de Casos com Uso de Software CASE 
8.1.4 Importância das ferramentas CASE
As ferramentas CASE envolvem recursos para a gerência, análise de requisitos, modelagem, codificação, execução 
de testes e manutenção do software. De forma geral, seu apoio representa um enorme diferencial na execução de 
um processo de software. Entretanto, a integração provida por elas resulta nos maiores benefícios. 
Exemplo disso seria o desenvolvimento de projetos em larga escala com a utilização de uma ferramenta (ou 
um conjunto delas) para cada fase do processo. Processos e fluxos de dados são definidos por uma ferramenta 
de análise estruturada. Outra ferramenta é utilizada para desenvolver o modelo entidade-relacionamento. 
Engenheiros possuem a responsabilidade de garantir com que os documentos que transitam entre as fases do 
processo possuam uma correspondência, o que nem sempre é atingido. Pela integração de sistemas, problemas 
como esse seriam automaticamente solucionados pelas ferramentas, de forma que erros seriam eliminados, e o 
trabalho de desenvolvedores, diminuído. 
Diversas outras vantagens podem ser mencionadas ao trabalhar com ferramentas CASE. A primeira delas 
é a redução de custos, visto que muitas tarefas manuais acabamsendo automatizadas com a utilização da 
ferramenta. O tempo dedicado ao desenvolvimento também é reduzido, uma vez que ferramentas CASE apoiam 
a padronização e evitam repetição e reuso. A qualidade de projetos de alta complexidade consegue ser mantida, 
já que sua utilização favorece a consistência e a coordenação. Por fim, o uso das ferramentas CASE promove uma 
documentação de alta qualidade e cria sistemas de fácil manutenção, devido à rastreabilidade dos requisitos.
8.2 Tipos de Ferramentas CASE
A tecnologia CASE pode ser categorizada em três classes: tecnologia de suporte ao processo de produção; 
Tecnologia de gerenciamento de processo; tecnologia meta-CASE. O Quadro 13 apresenta a definição de cada 
uma dessas classes.
Quadro 13 – Categorias da tecnologia CASE
Categoria Descrição
Tecnologia de suporte ao processo de 
produção
Ferramentas que apoiam as atividades do processo, como 
especificação, design, implementação e teste. 
Tecnologia de gerenciamento de 
processo
Ferramentas que apoiam a modelagem e o gerenciamento de 
processo. São ferramentas que interagem com as de suporte ao 
processo de produção, com o objetivo de direcionar/gerenciar 
suas tarefas em uma atividade específica. Essas ferramentas 
necessitam de bastante pesquisa, visto que ainda são imaturas. 
Tecnologia meta-CASE Ferramentas utilizadas para criação de ferramentas de suporte ao 
gerenciamento de processo e processo de produção. Existe pouca 
utilização deste tipo, visto que são difíceis de se empregar. 
Fonte: Elaborado pelo autor.
110
Metodologia de Desenvolvimento de Sistemas | Unidade 8 - Estudos de Casos com Uso de Software CASE 
A classificação das ferramentas CASE pode se dar por meio de diversos critérios. Nesta unidade, serão abordadas 
a classificação por funcionalidade e por fase do processo de software.
8.2.1 Classificação por funcionalidade
A classificação das ferramentas CASE por funcionalidade é definida de acordo com a funcionalidade das 
ferramentas. O Quadro 14 exibe os tipos de ferramentas, sua descrição e exemplos.
Quadro 14 – Classificação de ferramentas CASE por funcionalidade
Tipo Descrição Exemplos
Gerenciamento Úteis na representação dos 
elementos de um processo e 
seus relacionamentos. Permitem 
a compreensão do processo, 
bem como das atividades 
envolvidas na sua execução. 
Ferramentas para estimativa de 
custos.
Edição Auxiliam na codificação, 
modelagem gráfica e 
documentação.
Editores de texto e editores de 
diagrama.
Gerenciamento de configuração Suporte às tarefas de controle de 
versão, controle de mudanças, 
identificação, auditoria, entre 
outras. 
Sistemas para o controle de 
versão e para o gerenciamento 
de mudanças. 
Prototipagem Auxiliam na criação rápida 
de protótipos. Apoiam a 
definição de layouts de tela e 
sua integração com o design de 
dados, bem como a geração de 
código-fonte. 
Linguagens de alto nível e 
geradores de interface gráfica. 
Suporte à programação Faz com que seja possível o 
desenvolvimento de softwares 
em linguagens mais próximas 
das que o ser humano pode 
compreender. 
Editores, interpretadores, 
compiladores. 
Análise de programas Realizam uma análise do código 
e interagem com o sistema em 
execução. Servem para geração 
de casos de teste e inspeção do 
fluxo do programa.
Analisadores dinâmicos e 
estáticos. 
111
Metodologia de Desenvolvimento de Sistemas | Unidade 8 - Estudos de Casos com Uso de Software CASE 
Tipo Descrição Exemplos
Teste Úteis para controle e 
coordenação dos testes de 
software. 
Comparadores de arquivos, 
geradores de dados de teste, etc. 
Depuração Realizam inspeção do código-
fonte em execução.
Sistemas de depuração.
Documentação Suportam a produção e 
publicação de documentação.
Processadores de texto e editores 
de imagens. 
Reengenharia Auxiliam na engenharia reversa e 
na reestruturação de código. 
Sistemas de reestruturação de 
programas. 
Fonte: Adaptado de VAVASSORI, 2001.
8.2.2 Classificação por fase do processo
As ferramentas CASE também podem ser classificadas conforme as fases do processo de desenvolvimento de 
software nas quais são empregadas. O Quadro 15, apresentada a seguir, indica, em suas colunas, as diferentes 
fases do processo e, em suas linhas, ferramentas que podem ser utilizadas em cada uma das fases. A indicação 
de que uma ferramenta é utilizada em uma fase é dada pelo sombreado cinza.
Quadro 15 – Classificação de ferramentas CASE por fase do processo
Especificação Design Implementação Verificação/Validação
Geração de dados de 
teste
Modelagem e 
simulação
Transformação de 
programas
Depuração interativa
Análise de programas
Processamento de 
linguagem
Suporte a método
Gerenciamento de 
interface de usuário
112
Metodologia de Desenvolvimento de Sistemas | Unidade 8 - Estudos de Casos com Uso de Software CASE 
Dicionário de dados
Edição de diagramas
Prototipagem
Gerenciamento de 
configuração
Preparação de 
documentos
Edição de texto
Estimação e 
planejamento
Fonte: Adaptado de VAVASSORI, 2001.
Apesar de haver ferramentas CASE em todas as atividades do processo, ainda existe alguma defasagem em 
termos da qualidade do suporte que essas ferramentas oferecem para alguns tipos de atividades. Isso mostra 
que tais atividades que não são plenamente apoiadas ainda não são completamente compreendidas. Ao longo 
do tempo, conforme as ferramentas se amadurecerem, possivelmente essa situação se tornará melhor. 
8.2.3 Exemplos de ferramentas CASE
Atualmente, existem inúmeras ferramentas CASE no mercado. Elas contribuem bastante para a qualidade do 
processo e, como resultado, do produto final. Entretanto, elas não resolvem todos os problemas. É necessário 
compreender a real contribuição, deficiências, possibilidades e capacidades que envolvem as ferramentas CASE 
para só então aplicá-las às atividades de processos. Serão abordados a seguir três exemplos de ferramentas CASE 
existentes no mercado: Pencil Project; Edraw Professional Diagram Solution; Bizagi Modeler. 
Pencil Project
O Pencil Project consiste em uma ferramenta utilizada na construção de wireframes para interfaces. Wireframes são 
espécies de protótipos para interfaces gráficas que permitem visualizar como será a interação do usuário antes 
que a finalização esteja pronta. O software, que é open source, fornece uma coleção de modelos que permitem 
que rapidamente se desenvolva, por meio de um desenho ou até mesmo de um diagrama, um rascunho do que 
se deseja produzir. A Figura 47 exemplifica a interface do Pencil Project e o rascunho de uma tela de um aplicativo 
para smartphone.
113
Metodologia de Desenvolvimento de Sistemas | Unidade 8 - Estudos de Casos com Uso de Software CASE 
Figura 47 – Interface do Pencil Project na construção de um protótipo
Fonte: Elaborada pelo autor.
Além de fornecer recursos para implementações de telas para interface gráfica, o Pincel Project também permite 
que sejam criados diagramas que podem incorporar diferentes recursos, dependendo do modelo selecionado. A 
Figura 48 ilustra um projeto simples com Pencil Project representado por meio de um diagrama. 
Figura 48 – Interface do Pencil Project na construção de um diagrama
Fonte: Elaborada pelo autor.
114
Metodologia de Desenvolvimento de Sistemas | Unidade 8 - Estudos de Casos com Uso de Software CASE 
O Pencil Project é um software open source que está disponível para diversas plataformas. 
Pesquise pelo software Pencil Project.
Saiba mais
Existem diversas vantagens associadas à utilização do Pencil Project. A primeira delas é o fato de ser um software 
open source de alta qualidade e multiplataforma, ou seja, ele executa no Linux, Windows e Mac. Sua interface é 
bastante intuitiva, visto que seus recursos são organizados em coleções. Ele permite a exportação em diversos 
formatos e suporta os seguintes diagramas: de casos de uso, de classes, de estados, de atividades, de comunicação, 
de sequência, de componentes, de estrutura composta, de deployment, de objetose de pacotes. 
Edraw Professional Diagram Solution
O Edraw é um software multiplataforma com o intuito de auxiliar na produção de fluxogramas, mapas mentais, 
organogramas, UML e até mesmo diagramas de rede. Ele possui uma ampla galeria de exemplos e modelos que 
podem ser utilizados com tal objetivo. Seus recursos para a criação de diagramas são simples e fáceis de serem 
utilizados. Coleções de recursos são organizadas por modelos e a interface é bastante intuitiva. A Figura 49 exibe 
um template oferecido pelo Edraw para a construção de mapas mentais. 
Figura 49 – Interface do Edraw na construção de um mapa mental
Fonte: Elaborada pelo autor.
Existem diversas vantagens associadas à utilização do Edraw. É possível a criação de forma bem fácil e rápida de 
fluxogramas e gráficos de negócio. Além disso, o software disponibiliza uma grande variedade de templates prontos, 
115
Metodologia de Desenvolvimento de Sistemas | Unidade 8 - Estudos de Casos com Uso de Software CASE 
que podem facilmente ser utilizados. Suporta fluxogramas, gráficos de negócio, organogramas, diagramas em 
RH, fluxos de programação e de trabalhos e diagramas de rede. Fornece diversas fontes, cores, estilos, formas e 
símbolos. Por fim, o Edraw permite a exportação de arquivos em diversos formatos.
A versão trial do Edraw pode ser obtida na internet de forma gratuita. Pesquise por Free 
Download Edraw Max for Linux.
Saiba mais
Bizagi Modeler
O modelador de processos Bizagi consiste em uma ferramenta para gestão de processos ágeis que permite a 
criação de desenhos, diagramas, documentos e publicações de processos utilizando o padrão Business Process 
Model and Notation (BPMN). Uma característica diferente do Bizagi é o fato de permitir publicações para web. Sua 
exportação e importação se dá em arquivos no formato XML. Além disso, oferece suporte a regras de negócio, 
arquitetura orientada a serviços, monitoramento de atividades de negócio e gestão de riscos.
Figura 50 – Exemplo de modelo de processo utilizando o Bizagi Modeler
Fonte: CERTIFICATION..., 2014.
Existem diversas vantagens associadas à utilização do Bizagi. Podemos citar a facilidade na utilização das notações 
MPMN de negócios, por exemplo. Além disso, ele provê uma gama de templates prontos e de fácil utilização, 
bem como a exportação em diferentes formatos. Por fim, ele possui diversos guias para a sua utilização, oferece 
a opção de arrastar e soltar símbolos, o que otimiza o design, e fornece uma farta documentação a partir do 
desenho do processo.
116
Metodologia de Desenvolvimento de Sistemas | Unidade 8 - Estudos de Casos com Uso de Software CASE 
O Bizagi Modeler pode ser encontrado na internet. Pesquise pelo software Bizagi.
Saiba mais
8.3 Estudo de caso
A seleção de uma ferramenta CASE exige a definição de diversos parâmetros que devem ser observados e 
analisados. Existem variados processos para a escolha de ferramentas, mas estes não servem em todas as 
situações. Os pontos que eles levam em consideração podem ser inúteis em alguns tipos de organização. Para 
a realização de um estudo de caso sobre qual ferramenta utilizar em determinada situação, seguem abaixo as 
principais sugestões a serem seguidas:
• Identifique o problema a ser solucionado. O problema a ser resolvido deve estar bem definido muito 
antes da compra de uma ferramenta. Existem pesquisas que mostram que, no desenvolvimento de 
softwares, 70% das ferramentas adquiridas deixam de ser utilizadas após dois anos da sua aquisição, 
sendo que, das que ainda permanecem sendo utilizadas, somente 10% são empregadas de forma correta 
(VAVASSORI, 2001). 
• Identifique os tipos de ferramentas disponíveis. Existe uma infinidade de ferramentas CASE no 
mercado. Algumas características que podem ser utilizadas para a escolha são: propósito, suporte à 
integração, ano de fabricação, fabricante e preço. 
• Decida se irá seguir algum processo de seleção. Existem diversos processos de seleção e, muitas 
vezes, eles acabam divergindo em algum ponto em relação ao que é buscado pela organização. Apesar 
de seguirem o modelo de seleção, é possível que sejam realizadas adaptações, a fim de se adequarem 
melhor à natureza de cada organização. 
• Analise e avalie as ferramentas candidatas. Alguns pontos que podem ser considerados: poder, robustez, 
qualidade do suporte, facilidade de introdução na organização, facilidade de uso, funcionalidade, etc. 
O processo de adoção de uma ferramenta CASE se assemelha bastante ao processo de desenvolvimento de 
software. Analisar quais são os requisitos que essa ferramenta deve ter é fundamental. Exemplo disso é que a 
descoberta tardia de que a ferramenta escolhida não possui todos os requisitos exigidos pode trazer prejuízos à 
organização. Por fim, apesar da adoção e implantação de ferramentas CASE exigir um certo esforço, a redução 
dos custos no dia a dia e o aumento da qualidade do produto justificará todo o trabalho empregado.
 
117
Metodologia de Desenvolvimento de Sistemas | Unidade 8 - Estudos de Casos com Uso de Software CASE 
Síntese da unidade
Esta unidade abordou diversos conceitos relacionados ao uso do software CASE. Foram apresentadas as definições 
de ferramentas CASE, um breve histórico dessas ferramentas, workbenches, bem como sua importância. A 
categorização das ferramentas e seus exemplos também foi abordada. Por fim, apresentou-se um estudo de caso.
118
Considerações finais
As ferramentas CASE utilizadas, sejam em conjunto, sejam de forma 
individual, possuem enorme potencial para mudar todo um processo de 
desenvolvimento de software, desde que utilizadas de forma correta.
119
Referências bibliográficas
BOEHM, Barry W. A spiral model of software development and 
enhancement. Computer, v. 21, 1988.
BR, MPS. MPS.BR – Melhoria de Processo do Software Brasileiro, 2011. 
Disponível em: <http://www.softex.br/wp-content/uploads/2015/09/
palestraKival.pdf>. Acesso em: 29 out. 2018.
BROOKS JR., Frederick P. The mythical man-month. Boston: Addison-
Wesley, 1975.
CARVALHO, André C. P. L. F. de; LORENA, Ana Carolina. Introdução à 
computação: hardware, software e dados. Rio de Janeiro: LTC, 2016.
CERTIFICATION Process. Wikimedia Commons, the free media 
repository, 10 jul. 2014. Disponível em: <https://commons.
w i k i m e d i a . o rg / w / i n d e x . p h p ? t i t le = Fi le : Ce r t i f i c a t i o n Pro ce s s .
png&oldid=128585781>. Acesso em: 05 fev. 2019.
CORDELLI, Rosa Lantmann; LAUREANO, Marcos Aurelio Pchek. 
Fundamentos de software: desempenho de sistemas computacionais. 
São Paulo: Erica, 2014.
CRUZ, Fábio. Scrum e Agile em projetos: guia completo. 2. ed. Rio de 
Janeiro: Brasport, 2015.
Foto de Artem Marchenko. Artem Marchenko and Philippe Kruchten. 
05 ago. 2008. Disponível em: <https://www.flickr.com/photos/
artemfinland/2736917591>. Licenciada por Creative Commons. Acesso 
em: 31 jan. 2019.
120120
FRED Brooks. Wikimedia Commons, the free media repository. 30 nov. 
2016. Disponível em: <https://commons.wikimedia.org/wiki/File:Fred_
Brooks.jpg?uselang=pt-br >. Acesso em: 15 jan. 2019. 
JACOBSON, Ivar; BOOCH, Grady; RUMBAUGH, James. The unified 
software development process. Boston: Addison-Wesley, 1999.
KHAN, Usman Ali; AL-BIDEWI, I. A.; GUPTA, Kunal. Object-oriented 
software methodologies: roadmap to the future. International Journal 
of Computer Science Issues (IJCSI), 2011.
KRUCHTEN, P. The rational unified process: an introduction. Boston: 
Addison-Wesley Professional, 2003.
MACHADO, Felipe Nery Rodrigues. Banco de dados: projeto e 
implementação. São Paulo: Erica, 2014. 
MACHADO, Rodrigo Prestes; FRANCO, Márcia Islabão; BERTAGNOLLI, 
Silvia de Castro. Desenvolvimento de software III: programação de 
sistemas web orientada a objetos em Java. Porto Alegre: Bookman, 2016. 
MARTIN, James. Rapid application development. Londres: Macmillan 
Publishing, 1991.
MOORE, Aubrey. CASE: computer aided software engineering - Brief 
outline of CASE history. South Yorkshire: SheffieldHallan University, 1996. 
Disponível em: <http://www.shu.ac.uk/schools/cms/student/amoore/
case/caseh.html>. 
O LENDÁRIO Barry Boehm. Wikimedia Commons, the free media 
repository. 09 jan. 2018. Disponível em: <https://commons.wikimedia.
org/wiki/File:O_lend%C3%A1rio_Barry_Boehm.jpg>. Acesso em: 18 jan. 
2019.
OLIVEIRA, Jair Figueiredo de. Metodologia para desenvolvimento de 
projeto de sistemas. 4. ed. São Paulo: Érica, 1999. 
121121
PARK, Robert E.; GOETHERT, Wolfhart B.; FLORAC, William A. Goal driven 
software measurement: a guidebook. Pittsburgh: Carnegie Mellon 
University, 1996.
PRESSMAN, Roger S.; MAXIM, Bruce R. Engenharia de software: uma 
abordagem profissional. 8. ed. Porto Alegre: AMGH, 2016.
ROYCE, Winston W. Managing the development of large software systems. 
Proceedings of the IEEE WESCON, 26, 328-388,1970.
SCHWABER, Ken. Scrum development process: business object design 
and implementation. New York City: Springer, 1997.
SHELLY, Gary B.; ROSENBLATT, Harry J. System analysis and design. 9. ed. 
Boston: Shelly Cashman Series, 2012.
SOMMERVILLE, Ian. Engenharia de software. 8. ed. São Paulo: Pearson 
Education, 2007.
STAIR, Ralph M.; REYNOLDS, George W. Princípios de sistemas de 
informação. 11. ed. São Paulo: Cengage Learning Editores, 2016.
SUTHERLAND, Jeff. Scrum: a arte de fazer o dobro do trabalho na metade 
do tempo. São Paulo: Casa da Palavra, 2016.
TAKEUCHI, Hirotaka; NONAKA, Ikujiro. The new product development 
game. Harvard business review, 1986.
VAVASSORI, Fabiane Barreto; SOUZA, Everton Wilson; FIAMONCINI, Julio 
César. Ferramenta CASE para gerenciamento de projetos e métricas de 
software. Tools Session of XV SBES. Rio de Janeiro, 2001.
WINSTON W. Royce. Wikimedia Commons, the free media repository. 
12 nov. 2017. Disponível em: <https://commons.wikimedia.org/w/index.
php?title=File:WWRoyce.jpg&oldid=267242795>. Acesso em: 15 jan. 
2019.
	Unidade 1
	1. Histórico do Desenvolvimento de Software 
	Unidade 2
	2. Fundamentos de Desenvolvimento de Software
	Unidade 3
	3. Modelos do Ciclo de Vida de Projetos de Desenvolvimento de Software
	Unidade 4
	4. Modelos MDS 
	Unidade 5
	5. Processos de MDS
	Unidade 6
	6. Tipos MDS 
	Unidade 7
	7. Qualidade em MDS
	Unidade 8
	8. Estudos de Casos com Uso de Software CASE

Mais conteúdos dessa disciplina