Buscar

ORIENTADOS A OBJETOS Parte 3

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Unidade 3
Análise e Projeto de 
Software Orientado a 
Objetos
© by Editora Telesapiens
Todos os direitos reservados. Nenhuma parte desta publicação 
poderá ser reproduzida ou transmitida de qualquer modo ou por qualquer 
outro meio, eletrônico ou mecânico, incluindo fotocópia, gravação ou 
qualquer outro tipo de sistema de armazenamento e transmissão de 
informação, sem prévia autorização, por escrito, da Editora Telesapiens.
Dados Internacionais de Catalogação na Publicação (CIP)
João Danilo Nogueira
Leandro C. Cardoso
Análise e Projeto de Software Orientado a Objetos
AUTORIA
João Danilo Nogueira
Sou graduado em Ciência da Computação pela Faculdade 
Grande Fortaleza (FGF) e amo programar. Atualmente, o foco de minha 
expertise é na área de gerenciamento de projetos, teoria dos números, 
RSA e criptografia. Vai ser um prazer enorme ajudar VOCÊ a se tornar 
um excelente desenvolvedor de software ou administrador de banco 
de dados. Conte comigo para lhe ajudar nessa trajetória rumo ao seu 
desenvolvimento profissional! Muito sucesso para você. Conte comigo!
Leandro C. Cardoso 
Sou formado na Graduação em Comunicação Social com 
Habilitação em Design Digital, e mestrado em Tecnologias da Inteligência 
e Design Digital pela PUC-SP, com uma experiência em direção de arte 
e criação na área com mais de 20 anos. Passei por empresas, a exemplo 
da Laureate International Universities, FMU, FIAM-FAAM, Universidade 
Anhembi Morumbi, Universidade do Centro Paula Souza (FATEC-ETEC), 
DeVry Brasil, UNEF, FAESF, Faculdade Positivo, Uninter, Platos Soluções 
Educacionais S.A. (Krotonn - Universidade Anhaguera). Além disso, atuei 
como analista de Desenvolvimento Pedagógico Sênior, Coordenador 
de Curso Técnico de Comunicação Visual e Revisor Técnico e Validador 
para Curso EAD. Também sou autor de mais de 10 livros didáticos um dos 
organizadores da Maratona de Criação e Design do Curso de Comunicação 
Visual da ETEC Albert Einstein. Sou apaixonado pelo que faço e adoro 
transmitir minha experiência de vida àqueles que estão iniciando em suas 
profissões. Por isso fui convidado pela Editora Telesapiens a integrar seu 
elenco de autores independentes. Estou muito feliz em poder ajudar você 
nesta fase de muito estudo e trabalho. Conte comigo!
ICONOGRÁFICOS
Olá. Esses ícones irão aparecer em sua trilha de aprendizagem toda vez 
que:
OBJETIVO:
para o início do 
desenvolvimento de 
uma nova compe-
tência;
DEFINIÇÃO:
houver necessidade 
de se apresentar um 
novo conceito;
NOTA:
quando forem 
necessários obser-
vações ou comple-
mentações para o 
seu conhecimento;
IMPORTANTE:
as observações 
escritas tiveram que 
ser priorizadas para 
você;
EXPLICANDO 
MELHOR: 
algo precisa ser 
melhor explicado ou 
detalhado;
VOCÊ SABIA?
curiosidades e 
indagações lúdicas 
sobre o tema em 
estudo, se forem 
necessárias;
SAIBA MAIS: 
textos, referências 
bibliográficas e links 
para aprofundamen-
to do seu conheci-
mento;
REFLITA:
se houver a neces-
sidade de chamar a 
atenção sobre algo 
a ser refletido ou dis-
cutido sobre;
ACESSE: 
se for preciso aces-
sar um ou mais sites 
para fazer download, 
assistir vídeos, ler 
textos, ouvir podcast;
RESUMINDO:
quando for preciso 
se fazer um resumo 
acumulativo das últi-
mas abordagens;
ATIVIDADES: 
quando alguma 
atividade de au-
toaprendizagem for 
aplicada;
TESTANDO:
quando o desen-
volvimento de uma 
competência for 
concluído e questões 
forem explicadas;
SUMÁRIO
Processo Unificado - Construção e Transição ................................. 10
Fase de Construção ....................................................................................................................... 10
Fase de Transição ............................................................................................................................ 15
Desenvolvimentos Iterativo e Evolutivo ...........................................20
Processo de Desenvolvimento de Software .............................................................. 20
Processo de Desenvolvimento de Software .............................................................. 20
Métodos de Abordagem para o Processo de Desenvolvimento de 
Software .................................................................................................................................................23
Desenvolvimento Ágil de Projetos .......................................................28
O Manifesto “Ágil” ............................................................................................................................28
Princípios da Metodologia Ágil ............................................................................................. 30
Qualidade de Software ............................................................................. 41
Conceito de Qualidade ............................................................................................................... 41
Teste de Software ...........................................................................................................................45
7
UNIDADE
03
Análise e Projeto de Software Orientado a Objetos
8
INTRODUÇÃO
Você sabia que a área de desenvolvimento iterativo, evolutivo 
e ágil de software é uma das mais demandas consideradas como 
intermediárias na análise e projeto de software orientado a objetos? Isso 
mesmo. Para os profissionais da área conhecer essa demanda primeiro 
é importante possuir conhecimento prévios das notações e convenções 
dos diagramas de modelação unificada UML - Modeling Language, ou 
a Linguagem Unificada de Modelação. E o conhecimento do processo 
unificado, suas fases, as atividades de um fluxo de trabalho, procedimento 
e características. Para assim, iniciar uma nova etapa, mas para isso é 
importante estudo avançado do processo unificado de desenvolvimento 
de sistemas, focando em questões relacionadas ao gerenciamento do 
projeto e à qualidade do software. Entendeu? Ao longo desta unidade 
letiva você vai mergulhar neste universo!
Análise e Projeto de Software Orientado a Objetos
9
OBJETIVOS
Olá. Seja muito bem-vindo à Unidade 3. Nosso objetivo é auxiliar 
você no desenvolvimento das seguintes competências profissionais até o 
término desta etapa de estudos:
1. Compreender os processos relacionados às duas últimas fases do 
ciclo de vida do processo unificado.
2. Definir desenvolvimentos iterativo e evolutivo, discernindo sobre 
suas diferenças.
3. Entender o que é, para que serve e quais são os princípios do 
desenvolvimento ágil de projetos de software.
4. Identificar as principais características e princípios da qualidade 
de software.
Análise e Projeto de Software Orientado a Objetos
10
Processo Unificado - Construção e 
Transição
OBJETIVO:
Ao término deste capítulo, você será capaz de compreender 
os processos relacionados às duas últimas fases do ciclo 
de vida do processo unificado. Isto será fundamental 
para o exercício de sua profissão. E então? Motivado para 
desenvolver esta competência? Então vamos lá. Avante!.
Fase de Construção
A fase de construção se fundamenta na base de arquitetura 
desenvolvida na fase de elaboração, todas as iterações e incrementos 
desta fase têm por objetivo desenvolver o produto com as iterações 
iniciais, estando o ambiente do usuário já funcional. A transição é uma 
fase de correção de erros e de adaptações, ou seja, ao final da fase 
de construção, temos uma fase inteira que se utiliza das mesmas 
metodologias utilizadas na fase de construção, mas apenas para correção 
de problemas. A construção coloca em prática todos os planos já 
realizados até o momento, construindo todo o código e todas as relações 
definidas anteriormente.
A versão do produto gerada na fase de construção, por mais 
completa que possa ser, é chamada de versão beta, pois é a versão 
que será enviada para a fase de transição, com vistas a ser corrigida ou 
modificada de acordo com asnecessidades apresentadas. Nesta fase são 
realizadas modificações estruturais na arquitetura do sistema, para que os 
casos de uso remanescentes possam ser atendidos. É também na fase de 
construção que todos os subsistemas são agregados ao produto.
Análise e Projeto de Software Orientado a Objetos
11
Figura 1 - A versão do software gerada na fase de construção, mesmo que esteja bem 
completa recebe o nome de versão beta
Fonte: Freepik.
Diferentemente de suas fases anteriores (concepção e elaboração), 
que estavam relacionadas diretamente com a modelagem do sistema, 
tendo a parte construtiva secundária a elas, a fase de construção inverte 
os papéis, deixando a modelação como secundária, e as fases de 
construção e desenvolvimento da aplicação como sendo a parte principal 
da fase. Na fase de elaboração, todos os casos de uso e atores foram 
identificados, mas apenas uma pequena parte foi implementada, a parte 
responsável pela descrição da base arquitetural. 
Na fase de construção, o sistema como um todo deve ser detalhado 
e executado, então os casos de uso remanescentes começam a ser 
estudados e seus requisitos coletados. É nesse fluxo, durante a fase de 
construção, que os primeiros protótipos de interface com o usuário são 
projetados. É desenvolvido um estudo para se conhecer as necessidades 
e facilidades desejadas, de modo a permitir que o usuário utilize o sistema 
de forma rápida e confortável. O fluxo de requisitos, na fase de construção, 
é pequeno em comparação com o trabalho de implementação, isto se dá, 
porque toda a grande massa necessária deste fluxo já foi realizada em 
outras fases.
Análise e Projeto de Software Orientado a Objetos
12
Figura 2 - O fluxo de requisitos na fase de construção, é menor em comparação com o 
trabalho de implementação
Fonte: Freepik.
Já o fluxo de análise é o mais mutável do ciclo de vida do processo, 
a cada iteração ele sofre modificações, a cada fase ele se altera 
completamente, tornando impossível que ele esteja preservado neste 
momento do processo.
IMPORTANTE:
Muitos analistas, inclusive, renunciam ao fluxo de análise 
e se concentram unicamente no fluxo de projetos, isto 
porque o fluxo de projetos se incrementa, enquanto o fluxo 
de análise sofre depreciação.
Caso o modelo de análise for mantido até esta fase, então, ele será 
completado por meio das classes e casos de uso, baseados no fluxo de 
requisitos da fase de construção (NAKAGAWA, 2016). O resultado deste 
fluxo é um modelo de análise mais completo, dando uma visão mais 
sólida e definida do que apenas subprodutos de um modelo. 
Análise e Projeto de Software Orientado a Objetos
13
Assim, a fase de construção é a responsável pela implementação 
quase completa de todo o projeto, logo, cabe ao fluxo de projeto a 
entrega do produto quase completo, incluindo o desenvolvimento dos 
casos de uso que ainda não foram utilizados e das classes que não foram 
implementadas. É também o fluxo de projetos da fase de construção que 
analisa os subsistemas e define se algum deles irá ser implementado, ou 
um subsistema já existente deverá ser utilizado.
Já na implementação, em uma fase focada na construção 
e desenvolvimento do projeto, o fluxo de implementação é o que 
mais se destaca, já que esse é o fluxo que cuida do desenvolvimento 
propriamente dito. Todo o esforço da fase de construção é aplicado na 
fase de implementação, pois é quando o trabalho de implementação irá 
começar e terminar de fato. Todo o trabalho de implementação é feito 
com base no fluxo de projeto, sendo este revisado e atualizado nesse 
mesmo fluxo. 
Nesse sentido, o fluxo de implementação da fase de construção só 
pode ser realizado se toda a arquitetura do sistema estiver estabelecida, 
sem falhas e pronta para a execução. Apenas a partir da arquitetura 
estabelecida é possível definir quais os caminhos do projeto, como ele 
deve ser implementado e quais serão as partes núcleo e adjacentes.
Figura 3 - O fluxo de implementação da fase de construção apenas se inicia se toda a 
arquitetura do sistema estiver estabelecida
Fonte: Freepik.
Análise e Projeto de Software Orientado a Objetos
14
O resultado do fluxo de implementação é uma rotina 100% executável 
do projeto, uma versão operacional, inicial, que atende as necessidades 
do cliente e representa o versionamento beta do sistema. Já no fluxo de 
teste tem por objetivo testar cada subsistema e cada implementação do 
projeto realizado na fase de implementação. Aqui são realizados testes por 
meio de procedimentos preestabelecidos, com resultados já conhecidos, 
para que tudo possa ser comparado. 
Figura 4 - Uma rotina de testes deixa o projeto mais confiável
Fonte: Freepik.
Caso um determinado teste não encontrar o resultado desejado, é 
necessária a modificação da estrutura por meio de procedimentos. Isto se 
repete até que os resultados satisfatórios sejam encontrados. Uma rotina 
de testes deixa o projeto mais confiável, porém, se traçarmos uma reta 
de custos, veremos que o momento de execução dos testes é um dos 
momentos mais caros do processo.
Análise e Projeto de Software Orientado a Objetos
15
Fase de Transição
Após a fase de construção, esta é seguramente a mais importante 
para o sistema. Agora que isso está pronto, é possível garantir seu 
estabelecimento em um ambiente operacional. É na fase de transição 
que são lançadas as chamadas versões betas, para que usuários finais 
realizem os testes mais profundos e retornem feedbacks sobre possíveis 
erros que devem ser corrigidos. 
Inclusive, é a partir da avaliação desses feedbacks que a equipe 
começa a se preparar para corrigir falhas e avaliar se o produto realmente 
atende as necessidades do usuário final. Esses feedbacks também 
possibilitam uma avaliação sobre as facilidades e dificuldades, mostrando 
onde a equipe deve focar seus esforços de melhoramento, com foco em 
manter uma interface confortável para o cliente.
A fase de transição é crucial para a modificação do sistema, é nessa 
fase que ocorre a avaliação de modificações e adaptações. A ideia geral 
não é reformular o produto, mas apenas adaptá-lo ao que realmente é 
desejado, pois, afinal, todos os desejos do cliente foram preestabelecidos 
na modelação do projeto.
A ideia é procurar por deficiências e saná-las de forma a manter 
a lógica do projeto, essas deficiências são mínimas e sempre passam 
despercebidas pela equipe de planejamento e desenvolvimento. Essa 
fase é utilizada para a criação de treinamentos, facilitando a usabilidade 
e a profundidade do conhecimento do cliente. É também aqui que, caso 
necessário, é realizada a comunicação entre a base de dados antiga e 
a nova. Esta fase é a última do ciclo de vida do projeto, sendo finalizada 
quando o produto é entregue em sua versão 100% executável e sem erros. 
A fase de transição não mantém seu foco nos fluxos de requisitos, 
análise, projeto, implementação e teste, na verdade, ela utiliza propriedades 
de todas as demais fases, mas sem realmente penetrar a fundo em suas 
técnicas. São mínimas as atividades exercidas por esses cinco fluxos de 
trabalho, a maior parte do trabalho se encerra na fase anterior, restando 
Análise e Projeto de Software Orientado a Objetos
16
para a fase de transição apenas a revisão do que já está criado. Alguns 
processos não são ligados aos fluxos de trabalho, que acabam sendo 
executados durante esta fase. Graças a esta não-ligação, eles exigem um 
esforço um tanto maior para sua execução, entre as tarefas, estão:
 • A preparação para o lançamento da versão beta do produto, 
incluindo a criação das metodologias de retorno de opinião, para 
a análise de feedback. 
 • A preparação do público para recebê-la, dependendo do tipo do 
produto envolvendo um marketing de lançamento.
 • A instalação da versão beta nos ambientes operacionais do 
usuário, o grande teste final, que retorna a resposta de que o 
produto realmente funcionou.• A forma de gerenciamento dos resultados dos testes, levando em 
consideração as opiniões, facilidades e dificuldades, com ênfase 
em analisar quais as mudanças são realmente necessárias.
 • A nova adaptação do produto, com suas falhas melhoradas por 
meio das circunstâncias definidas pelos usuários (neste ponto, 
entramos na discussão “o que é bom para um pode ser ruim para 
outro”, levando o analista e o arquiteto de softwares a tomarem as 
decisões mais adequadas para a maioria).
 • A necessidade de completar os artefatos do projeto, que podem 
ter sido lançados de forma incompleta, e isso inclui a anexação 
da documentação das modificações realizadas nas atividades 
anteriores. 
 • A determinação da conclusão do projeto, as perguntas que 
sempre cercam essa atividade é “Quando iremos encerrar?”, “Já 
fizemos tudo o que podíamos?”, “Podemos melhorar?”. É sempre 
frustrante pensar que algo acabou, afinal, em linha de código tudo 
pode ser aprimorado (CAVALCANTI, 2018).
Análise e Projeto de Software Orientado a Objetos
17
Claro, não são todos os tipos de projeto que irão ter todas as seis 
atividades listadas acima, alguns não necessitarão de todas, porém, 
outros, sim. Vale analisar se o produto está sendo desenvolvido para o 
mercado ou para um cliente específico. Quando tratamos do mercado, 
todas as atividades necessitam de execução, tratamos de muitos usuários 
em potencial. Os erros assumem uma escala catastrófica se não forem 
tratados imediatamente.
Para um usuário específico já existe um ambiente adequado para 
a instalação do sistema, uma rotina sempre será seguida. O cliente pode 
estar acompanhando o processo, então, algumas atividades se tornam 
obsoletas. Por fim, é preciso avaliar a satisfação do cliente, dependendo 
da satisfação do cliente, um processo unificado poderá ser considerado 
finalizado ou não (CAVALCANTI, 2018). 
Assim, quando lançado no mercado, será considerado finalizado 
o projeto que corrigir todos os erros encontrados na versão beta, bem 
como esteja funcionando e executando suas funções de maneira efetiva. 
Já quando tratamos de um cliente específico, o gerente pode considerar 
como completo o projeto que apresentar os resultados de todos os testes 
corretamente, não demonstrando falhas de execução.
No momento da realimentação e adaptação, a chave de sucesso do 
processo unificado (PU) está na fase de transição e na modularização do 
sistema, desde a sua modelação inicial. A construção deve se adequar ao 
inevitável avanço e às muitas futuras atualizações dos planos. Para cada 
iteração gerada, subconjuntos de requisitos são projetados rapidamente. 
Esses subconjuntos obedecem às características modulares de um 
sistema e, em algum momento, podem ser reutilizados para agilizar 
os processos. Esse tratamento de subconjuntos facilita as futuras 
modificações ou adaptações que o tempo exigirá do projeto. 
Afinal, se o mesmo código é utilizado por todo o sistema, quando 
um for atualizado, os demais seguirão a linha, mantendo sempre o 
desenvolvimento de forma dinâmica. O PU utiliza ciclos avaliativos que 
ajudam na detecção de falhas, iluminando um caminho de progressão e 
descoberta de valores reais do sistema, além de melhorar o entendimento 
dos requisitos e de facilitar o processo de implementação.
Análise e Projeto de Software Orientado a Objetos
18
O Processo Unificado gera dois tipos de versões executáveis antes 
do produto, são elas a Versão Beta e o MVP, a fase de transição utiliza 
essas versões para corrigir erros e adaptar os desejos do cliente. Um 
versionamento Beta gera uma versão de um determinado produto que 
ainda se encontra em fase de teste. Por mais que seja um lançamento, 
a versão beta é disponibilizada apenas para a realização de testes de 
usuários, para que eles encontrem e reportem erros, e estes sejam 
devidamente corrigidos.
MVP significa “Produto Mínimo Viável”, e é utilizado para apresentar 
ao possível cliente a forma e funcionalidade que determinado produto 
irá adquirir na fase final de produção. É uma versão que possui apenas as 
funcionalidades extremamente necessárias, com uma interface simples 
e que permita ao cliente a visualização daquilo que ele quer. É a partir 
do MVP que testamos a eficiência de um produto, se ele realmente é 
utilizável, se pode ser aceito no mercado ou, dependendo do caso, se ele 
pode concorrer com os demais produtos similares no mercado.
Análise e Projeto de Software Orientado a Objetos
19
RESUMINDO:
E então? Gostou do que lhe mostramos? Aprendeu mesmo 
tudinho? Agora, só para termos certeza de que você 
realmente entendeu o tema de estudo deste capítulo, vamos 
resumir tudo o que vimos. Você deve ter aprendido que o 
processo unificado (PU) foi criado para ser uma metodologia 
que se comunica de maneira eficiente com a linguagem 
UML, além de ser um método de desenvolvimento ágil. Se 
comparado ao modelo de cascata, no qual cada etapa do 
ciclo do processo é executada integralmente e apenas uma 
vez, o PU subdivide o projeto inteiro em fases e fluxos, cada 
um com suas características, capacidades e peculiaridades. 
Tenha em mente que não existe um plano detalhado para 
um projeto, cada projeto é único, suas exigências são 
únicas e seus resultados exclusivos. Não imagine que vai 
haver uma fórmula mágica para solucionar qualquer projeto 
como uma receita de bolo. O PU é um modelo que pode 
basear a modelagem de um projeto, assim como a UML. 
Cabe ao arquiteto de softwares decidir qual sistema de 
modelagem melhor se encaixa nas necessidades técnicas 
de um projeto e quais podem ser realmente aplicados.
Análise e Projeto de Software Orientado a Objetos
20
Desenvolvimentos Iterativo e Evolutivo 
OBJETIVO:
Ao término deste capítulo, você será capaz de entender o 
que são desenvolvimentos iterativo e evolutivo, discernindo 
sobre suas diferenças. Isto será fundamental para o exercício 
de sua profissão. E então? Motivado para desenvolver esta 
competência? Então vamos lá. Avante!.
Processo de Desenvolvimento de Software
Um processo de desenvolvimento de software é um conjunto de variáveis 
parcialmente ordenadas, com o objetivo de gerar um sistema de software como 
produto. É um dos ramos da Engenharia de Software, considerado um dos 
principais processos responsáveis pela qualidade de software. 
Processo de Desenvolvimento de Software
Antes de falarmos sobre os processos de desenvolvimento de 
software, vale lembrar alguns conceitos como que a orientação objetos 
foi um processo criado para combater a crise do software. Mas o que 
foi realmente esta crise? Para entender melhor, o ano era 1970, em não 
havia nenhum tipo de organização, ou engenharia que controlasse o 
desenvolvimento de software à época, que eram desenvolvidos à critério 
de cada programador, que criavam seus próprios modos e padrões. 
Continuando a explicação, vamos supor que a empresa fictícia 
BollySoftware contratava desenvolvedores para criar seus pequenos softwares 
e então comprava deles os direitos sobre o que havia sido desenvolvido. 
Com passar do tempo, a computação avançou e a BollySoftware precisou 
chamar novamente os desenvolvedores para atualizar os softwares criados 
anteriormente. Mas havia ali um problema, anos haviam se passado e, com a 
maturidade adquirida na profissão, os antigos desenvolvedores não seguiam 
mais aqueles padrões até então adotados. 
Análise e Projeto de Software Orientado a Objetos
21
Alguns nem mesmo lembravam mais como seus padrões 
funcionavam e, quando pegavam os antigos projetos, não conseguiam 
evoluir fazê-los evoluir. Assim sendo, todos precisavam reconstruir seus 
softwares do zero, readaptando-os aos novos padrões que usavam. 
Agora, imagine que isso estava acontecendo em todo o mundo, não 
apenas isso havia uma demanda gigante surgindo pelos softwares e 
poucos desenvolvedores no mercado.
Figura 5 - A grande demanda pelos softwares e poucos desenvolvedores no mercado,vou 
uma das causas da crise do software
Fonte: Freepik.
Os softwares não estavam mais se adaptando aos hardwares, os 
hardwares não estavam mais suportando os softwares, os desenvolvedores 
estavam tentando corrigir os problemas, mas a grande complexidade dos 
problemas fazia com que desafios ainda maiores surgissem. O mercado de 
desenvolvimento começou a entrar em crise e começou a ruir. As principais 
causas estavam relacionadas aos projetos que estouravam os orçamentos 
e prazos, a qualidade dos produtos também era insuficiente. 
Os requisitos não estavam sendo cumpridos e as manutenções 
eram quase impossíveis de serem feiras, dada a tamanha “bagunça” que 
os códigos acabavam armazenando. Foi nesta época que o termo “bug” 
começou a ser amplamente difundido, significando “erro” de programação 
em software. Em 1970, no auge da crise do software, foi estabelecido o 
primeiro grande paradigma de programação: a Programação Estruturada. A 
PE, como era conhecida, consistia em uma forma de programação baseada 
em sub-rotinas, laços de repetição, estruturas condicionais e de bloco.
Análise e Projeto de Software Orientado a Objetos
22
VOCÊ SABIA?
Antes da programação estruturada, os códigos eram 
baseados em blocos de instruções aleatórios ligados por 
comandos de desvio de fluxo conhecidos como “Ligadores”. 
O mais conhecido desses comandos era o “GOTO”, que 
desviava o fluxo de execução para uma linha do programa, 
sem previsão de retorno ao mesmo ponto.
A programação estruturada foi o paradigma vigente até o surgimento 
da programação orientada a objetos (POO) na década de 1990. Enquanto 
a programação estruturada se baseava em estruturas de controle alto 
nível, conceitos de execução top-down e refinamento passo a passo, 
a POO vinha com sua tecnologia de objetos, que continham atributos 
e métodos. Com a programação estruturada, surgiu a Metodologia de 
Desenvolvimento de Sistemas, na década de 1980, que começou a criar 
padrões de construção de sistemas baseados em programas estruturados. 
Era o início da profissionalização do que se conhece atualmente por 
Análise de Sistemas.
IMPORTANTE:
A figura do analista de sistemas ganhou força no início 
da década de 80 com o surgimento da metodologia de 
desenvolvimento de sistemas, introduzindo conceitos 
como modelagem conceitual de dados, diagrama de 
contexto e análise de processos.
Análise e Projeto de Software Orientado a Objetos
23
Ainda na década de 1990, surge a POO e, com ela, a UML e o 
Processo Unificado de Desenvolvimento de Software, e, por fim, na virada 
do milênio, surge o Processo Ágil. Existem alguns métodos de abordagem 
para o Processo de Desenvolvimento de Software, os mais conhecidos 
são o (a):
 • Modelo em Cascata. 
 • Prototipação. 
 • Desenvolvimento Incremental.
 • Desenvolvimento Iterativo e Evolutivo. 
 • Modelo em Espiral. 
 • Desenvolvimento Rápido de Aplicação. 
 • Desenvolvimento Ágil de Software.
 • Processo de programar e arrumar e as metodologias Leves.
Esses métodos de abordagem para o Processo de Desenvolvimento 
de Software serão aprofundados a seguir.
Métodos de Abordagem para o Processo de 
Desenvolvimento de Software
Sobre o modelo em cascata, a primeira impressão, o termo “modelo 
em cascata” nos remete a belas paisagens naturais formadas por quedas 
d’água. O modelo em cascata é baseado exatamente nessa estrutura, 
uma forma natural de criar uma representação lógica que siga a ideia de 
cascata. Consiste em um modelo sequencial que flui constantemente por 
meio das fases básicas de um projeto, incluindo requerimentos, projeto, 
implementação, testes, integração e manutenção. A figura a seguir ilustra 
bem a sequência de fases de desenvolvimento de sistemas que constitui 
o modelo em cascata.
Análise e Projeto de Software Orientado a Objetos
24
Figura 6 - Modelo em Cascata
Implementação
Verificação
Manutenção
Projeto
Requerimento
Fonte: Nogueira (2018a, p. 16).
Já prototipação é o processo de desenvolvimento que trabalha 
com o conceito de criação de protótipos, para entender melhor para cada 
pequena modificação é criado um protótipo de teste, como demonstrado na 
figura a seguir. Trata-se do ciclo da prototipação, que inicia na obtenção dos 
requisitos, passa pela rápida elaboração do projeto, construção, avaliação e 
refinamento de um protótipo. Voltando à etapa de obtenção de requisitos, e 
assim por diante, até que haja um modelo aprovado pelo cliente.
Figura 7 - Ciclo da prototipação
Refinar 
protótipo
Obter 
requisitos
Elaborar 
projeto 
rápido
Construir 
protótipo
Avaliar 
protótipo
Fonte: Nogueira (2018a, p. 16).
Análise e Projeto de Software Orientado a Objetos
25
Sobre o modelo em espiral, é um provedor de metamodelos 
que acomoda diversos processos específicos de desenvolvimento. A 
vantagem do modelo em espiral é que ele pode agregar facilmente todos 
os outros modelos, ou partes deles, desde que os conceitos facilitem o 
alcance dos objetivos.
Figura 8 - Fases do Modelo em Espiral
Fonte: Nogueira (2018a, p. 17).
Este modelo é utilizado geralmente para grandes projetos, seus 
usos estão diretamente ligados às facilidades de redução de riscos, à 
aplicação de engenharias atuais, às abordagens sistemáticas. Como 
também ao tratamento de estimativas, à versatilidade do modelo para 
mudanças e à capacidade de os profissionais poderem começar seus 
processos mais cedo que o normal.
Já no processo iterativo e evolutivo de maneira geral, o processo 
evolutivo é uma estratégia de planejamento focado no desenvolvimento 
paralelo de diversas partes do sistema e, quando completas, unificadas. O 
processo iterativo é um plano de retrabalho e melhoramento do sistema 
em partes pré-definidas. Observe que ambos os conceitos são similares, 
mas um não engloba o outro. Enquanto um desenvolve o sistema como 
um todo, o outro quebra-o em pedaços e vai gerando retrabalho nessas 
partes até o objetivo ser alcançado.
Análise e Projeto de Software Orientado a Objetos
26
A ideia de um Processo Iterativo-Evolutivo (PIE) se dá exatamente da 
união das duas características. Você, como programador, de certa forma, 
irá quebrar o sistema em pequenos módulos. E esses pequenos módulos 
irão passar por evoluções iterativas, fazendo com que, a cada nova rodada 
do ciclo de vida do processo, tenhamos um produto funcional com mais 
funcionalidades. 
Ele se assemelha muito ao modelo de Processo Unificado, pois o PU 
utiliza o desenvolvimento iterativo-evolutivo para basear suas iterações, 
então, no PIE - Processo Iterativo-Evolutivo temos a seguinte formatação. 
Que durante a inicialização do projeto é definida uma versão chamada de 
base, e é a partir desta versão que todo o projeto começa a evoluir. 
Nesse sentido, a ideia inicial é criar um MVP - Minimum Viable 
Product (Mínimo Produto Viável) do produto, para que o usuário possa 
realizar uma avaliação. Este MVP deve demonstrar a funcionalidade para 
os aspectos-chaves do projeto, bem como os problemas propostos e 
as possíveis soluções. Deve ser funcional o bastante para que o produto 
possa ser compreendido e suas melhorias sejam facilmente localizáveis. É 
preciso utilizar técnicas de Gerenciamento de Projetos para criar uma lista 
de tarefas a serem realizadas, cronogramadas, cronometradas e aplicadas. 
A parte iterativa é o momento de reprojetização e implementação das 
checklists geradas pela gerência do projeto, a ideia é que toda iteração 
seja simples, direta e modular, ou seja, que possa ser reaproveitada.
Análise e Projeto de Software Orientado a Objetos
27
RESUMINDO:
E então? Gostou do que lhe mostramos? Aprendeu mesmo 
tudinho? Agora, só para termos certeza de que você 
realmente entendeu o tema de estudo deste capítulo, 
vamos resumir tudo o que vimos. Você deve ter aprendido 
que os processos de desenvolvimento foram criados para 
suprir as necessidades de uma crise, porém, esta crise 
se alastra até os presentes dias.Ainda há uma falta de 
desenvolvedores no mercado e uma procura muito alta 
por bons profissionais. Alguns casos de softwares que não 
atendem seus requisitos e alguns ditos desenvolvedores 
que não seguem os padrões indicados. De maneira geral, 
os processos de desenvolvimento foram criados para 
suprir as necessidades de uma crise, porém, esta crise 
se alastra até os presentes dias. Para isso é importante os 
estudos sobre Processo Unificado de Desenvolvimento 
de Software, os conceitos e diagramas da Linguagem 
Unificada de Modelação (UML) e, consequentemente, 
os processos de desenvolvimento. Assim é importante 
o conhecimento sobre duas características do Processo 
Unificado: a capacidade de crescimento iterativo e a 
capacidade de evolução do software.
Análise e Projeto de Software Orientado a Objetos
28
Desenvolvimento Ágil de Projetos
OBJETIVO:
Ao término deste capítulo, você será capaz de entender 
o que é, para que serve, e quais são os princípios do 
desenvolvimento ágil de projetos de software. Isto será 
fundamental para o exercício de sua profissão. E então? 
Motivado para desenvolver esta competência? Então 
vamos lá. Avante!.
O Manifesto “Ágil”
A comunidade de TI sempre se debateu sobre o que seria o termo 
“ágil” quando se referia ao processo de desenvolvimento de software. 
Para os mais regrados, agilidade significa renunciar a muitos protocolos 
preestabelecidos de produção, o que acarretaria queda de qualidade do 
produto final. A metodologia ágil oferece suas próprias práticas e princípios, 
muitas delas compartilhadas com o que foi definido no “Manifesto Ágil” 
(CONCEIÇÃO; SILVEIRA, 2015). Então, a grande discussão que gira em torno 
das metodologias de desenvolvimento ágil está nas suas prioridades e 
valorização delas. Todo o conteúdo maçante das diversas metodologias 
documentais que haviam sido estabelecidas nas décadas anteriores estava 
sendo desvalorizadas em relação a outros tópicos.
Com a metodologia ágil, valorizamos mais as interações e os 
indivíduos do que os processos e ferramentas. Em outras palavras, 
essa metodologia olha mais para o funcionamento do software do 
que para a documentação envolvida no gerenciamento de seu projeto 
de desenvolvimento. Ou seja, em um desenvolvimento ágil, todos 
os olhares se voltam para o cliente em si, muito mais do que para os 
contratos negociados, dando sempre preferência ao estudo e resposta às 
mudanças do escopo (requisitos) e do ambiente em torno do produto que 
está sendo desenvolvido, tudo isto acima das questões relacionadas ao 
cumprimento do plano estabelecido no início do projeto.
Análise e Projeto de Software Orientado a Objetos
29
Figura 9 - Na metodologia ágil, valorizamos mais as interações e os indivíduos do que os 
processos e ferramentas
Fonte: Freepik.
Os indivíduos e as interações desses com o sistema devem ser mais 
valorizados do que os processos e ferramentas envolvidos com o projeto. 
Quando nos focamos demais em processos e ferramentas, esquecemos 
de que as pessoas são mais importantes do que o software em si, pois 
são elas quem irão utilizá-lo no dia a dia. Em uma metodologia ágil de 
desenvolvimento de software, os velhos papéis e formulários contendo 
folhas de requisitos são substituídos pela velha e boa conversa cara a cara 
(face to face) entre desenvolvedores e usuários finais.
IMPORTANTE:
No desenvolvimento ágil de projetos, os requisitos 
analisados continuam sendo importantes, com toda a 
certeza, mas não mais do que a discussão face to face.
O software em funcionamento deve vir antes das documentações 
mais abrangentes, logo, para uma metodologia ágil, a prototipação de 
Análise e Projeto de Software Orientado a Objetos
30
sistemas é uma ferramenta indispensável a sua aplicação direta. Ela 
permite que haja um processo de colaboração dinâmica entre a equipe de 
desenvolvimento e o cliente. Por mais que todo o sistema esteja detalhado 
e definido nas linhas de um contrato, o processo de desenvolvimento flui 
bem mais naturalmente quando o cliente explica sua ideia, frente a frente 
com o desenvolvedor. 
Figura 10 - O processo de desenvolvimento pode fluir bem mais natural quando o cliente 
explica sua ideia, frente a frente com o desenvolvedor
 
Fonte: Freepik.
A capacidade de responder às mudanças dever estar sempre mais 
afiada do que a de seguir um plano, afinal, desenvolver um software 
é aprendizado. Mudanças são ótimas oportunidades para ganhar 
novos conhecimentos e adaptar o sistema de maneira mais efetiva às 
necessidades do cliente.
Princípios da Metodologia Ágil
Antes de entendermos os princípios da metodologia ágil de 
desenvolvimento de projetos de software, é importante que se 
compreenda o que vem a ser um princípio.
Análise e Projeto de Software Orientado a Objetos
31
DEFINIÇÃO:
Segundo o dicionário da língua portuguesa, um princípio 
é toda a estrutura sobre a qual se constrói alguma coisa, 
os ensinamentos básicos e gerais que delimitam de onde 
devemos partir em busca de algo. Verdades práticas 
que visam treinar nossa mente para melhor discernirmos 
sobre os caminhos corretos a serem tomados. É por meio 
dos princípios que podemos extrair regras e normas para 
construirmos procedimentos, programas e paradigmas 
(CONCEIÇÃO; SILVEIRA, 2015).
O manifesto ágil se baseia em 12 princípios que são considerados 
os pilares de sustentação da metodologia ágil, são princípios de simples 
enunciação, mas que têm profundo significado e abrangência, são eles:
1. A maior prioridade deve ser a satisfação do cliente, com entregas 
contínuas e adiantadas de software, e com valor agregado;
2. Escopo variável – mudanças nos requisitos são bem-vindas, 
mesmo tardiamente, os processos ágeis tiram vantagem das 
mudanças, visando à vantagem competitiva para o cliente;
3. Entregar versões do software funcionando com frequência de 
semanal a mensal, ou na menor escala de tempo possível;
4. Pessoas de negócio e desenvolvedores devem trabalhar 
diariamente em conjunto por todo o projeto;
5. Os projetos devem ser construídos em torno de indivíduos 
motivados, com ambiente, suporte e confiança neles depositados 
para que possam realizar o trabalho da forma mais eficiente possível;
6. O método mais eficiente e eficaz de transmitir informação para 
a equipe, e entre membros da equipe de desenvolvimento, é a 
conversa frente a frente;
7. Software funcional é a medida primária do progresso;
Análise e Projeto de Software Orientado a Objetos
32
8. Os processos ágeis promovem desenvolvimento sustentável, os 
patrocinadores, desenvolvedores e usuários devem ser capazes 
de manter um ritmo constante sempre;
9. Contínua atenção à excelência técnica e bom design aumentam a 
agilidade das entregas;
10. Simplicidade é a arte de maximizar a quantidade de trabalho;
11. As melhores arquiteturas, requisitos e design emergem de times 
auto-organizáveis;
12. Em intervalos regulares, o time reflete sobre como se tornar mais 
eficaz e, então, refina e ajusta seu comportamento ao longo do 
projeto (CONCEIÇÃO; SILVEIRA, 2015).
Sobre a prioridade é satisfazer o cliente, você sabe qual a única certeza 
que envolve um projeto de software, ou de quaisquer naturezas? Incrivelmente, 
a resposta sincera de uma grande parcela dos gerentes de projeto é a seguinte. 
“A única certeza que temos sobre um projeto é que irá atrasar”. 
Isto se dá porque, com o desenvolvimento de algumas soluções, 
processos documentais e burocráticos parecem ter se tornado mais 
importantes do que a entrega do próprio software. Pela análise dos 
“profissionais da área”, se não é possível realizar toda a documentação 
de um software antes de iniciar a implementação dele, corre-se diversos 
riscos de diminuir a qualidade do produto entregue. 
De fato, esta preocupação procede e tais riscos existem, no 
entanto, a metodologia ágil não pede que a documentação não seja 
feita, ela apenas propõe que a documentação e a implementação sejam 
realizadasem paralelo, uma sem influenciar no avanço da outra. Deste 
modo, para garantir a satisfação do cliente, deve-se internalizar a ideia de 
que a documentação é secundária em relação à entrega a este cliente, 
pois mais vale uma a entrega de uma versão do software imperfeita do 
que a não-entrega.
Sobre o escopo variável, como vimos anteriormente, a metodologia 
ágil prega a preparação da vinda de mudanças, e mudanças nos requisitos 
também são esperadas, e muito bem-vindas. As técnicas e metodologias 
utilizadas até então desencorajavam e desestimulavam as possibilidades 
Análise e Projeto de Software Orientado a Objetos
33
de mudança, gerando grandes ameaças sobre o custo do produto, o 
prazo de entrega e a qualidade de sua manutenção. Em outras palavras, a 
metodologia ágil procura trabalhar com contratos de escopo aberto, nos 
quais os requisitos podem mudar de acordo com as entregas parciais do 
projeto.
IMPORTANTE:
O fato de a metodologia ágil se basear no conceito do 
escopo aberto, não significa que ela deva tolerar toda e 
qualquer mudança nos requisitos do escopo inicial, mas, 
as mudanças que afetem positivamente o projeto, devem 
ser bem-vindas. Para isto, o modelo de negócio de quem 
desenvolve deve prever esse tipo de mudança em seus 
acordos de trabalho com sua equipe de desenvolvimento.
Em relação à entrega frequente de versões do software funcionando, 
note que a todo o momento, os princípios fazem menção à velocidade 
de entrega e felicidade do cliente com isso. O objetivo da metodologia 
ágil é garantir que determinado software agregue o valor necessário 
e seja entregue no menor tempo possível. Para atingir este objetivo, a 
metodologia preconiza as entregas parciais do software em ciclos curtos 
de desenvolvimento, já pensando em maneiras efetivas de se realizar 
mudanças, adaptações, modificações e lançamentos de novos requisitos 
no escopo. Desse modo, quanto menor for o intervalo de tempo entre 
uma entrega e outra, melhor será a qualidade do resultado para o cliente.
Em relação ao princípio do cliente como parte da equipe, vivemos 
em um mundo no qual o cliente chega a uma empresa e contrata seus 
serviços. Fala exatamente o que quer e volta um mês depois para verificar 
se foi realizado, muitas vezes, escutamos frases de insatisfação.
Análise e Projeto de Software Orientado a Objetos
34
Figura 11 - A metodologia ágil tem como base a ligação direta entre o desenvolvedor e o 
cliente
 
Fonte: Nogueira (2018b, p. 18).
A metodologia ágil tem como um de seus pilares fundamentais 
a ligação direta entre o desenvolvedor e o cliente, mantendo uma 
comunicação fácil, clara e direta, permitindo que as alterações de escopo 
sejam realizadas em tempo real.
Já em relação ao princípio equipe motivada e com suporte, a 
ideia da metodologia ágil é que a equipe seja autogerenciada. Não há 
necessidade de ninguém dar ordens ou cobrar resultados se cada um 
souber exatamente o que deve ser feito e estiver motivado para isto. O 
fato de a metodologia ágil pressupor a comunicação constante com o 
cliente e, consequentemente, com toda a equipe, reduz os riscos de 
desentendimentos e potencializa o comprometimento sadio de todos. 
Vale salientar que a chave da metodologia ágil são os profissionais 
proativos, já que em um ambiente dessa natureza é necessário tomar 
decisões rápidas e acertadas o tempo todo, e somente uma equipe 
motivada e bem-informada é capaz de propiciar essa realidade.
Análise e Projeto de Software Orientado a Objetos
35
Em relação a comunicação face to face no time, os maiores problemas 
enfrentados pela maioria das empresas é a falha da comunicação entre 
seus diversos setores, e entre pessoas dentro desses mesmos setores. 
Nas empresas de tecnologia não é diferente, e o problema ainda se 
potencializa em virtude de a tecnologia tornar as relações interpessoais 
mais frias e distantes. 
Figura 12 - Uns dos problemas enfrentados é a falha da comunicação entre as pessoas 
dentro dos mesmos setores
Fonte: Nogueira (2018b, p. 19).
As relações mediadas por mídias digitais, como telefone, e-mail, 
SMS, chat, WhatsApp etc. são mais fluentes em um ambiente empresarial, 
sendo que tais relações foram potencializadas com o grande número de 
profissionais em home office, devido à pandemia do Covid-19. Porém, não 
possuem o calor do contato frente a frente. A conversa flui de maneira 
diferente, com objetivos diferentes, quando temos o companheiro de 
trabalho face a face. 
Análise e Projeto de Software Orientado a Objetos
36
Figura 13 - As relações mediadas por mídias digitais podem ser consideradas fluentes em 
um ambiente empresarial, mas não possuem o calor do contato frente a frente
Fonte: Freepik.
As comunicações digitais ganham no âmbito quantitativo, mas 
pecam no qualitativo, os gestos, entonação de voz e expressões faciais se 
perdem em meio as letras, números, emoticons e dados. O Manifesto Ágil 
estabelece que a forma mais eficaz de troca de informações entre equipes 
é a “frente a frente”, por meio de daily meetings (reuniões diárias), ou mais 
frequentes. Esses encontros podem ganhar um tom de formalidade se 
acontecerem com uma regularidade previamente estabelecida pelo 
gerente de projetos. Contudo, o mais importante mesmo, é que eles 
aconteçam com a maior frequência possível.
Em relação ao software funcional, a engenharia de software, em 
seu nascedouro, baseou-se nos modelos industriais da época em que foi 
criada. Todos os modelos eram processos teoricamente determinísticos 
e controláveis. Pensava-se, à época, que por cada processo era possível 
descobrir o andamento de qualquer projeto, avaliando seus riscos e 
estimando seus prazos e custos. Ela se fundamentava no modelo de 
gerência de projetos em que as atividades eram determinadas, estimadas 
e distribuídas em um cronograma, sendo acompanhadas paulatinamente 
até gerarem o produto. Embora este modelo ainda funcione nas 
indústrias, ele é ineficaz quando aplicado à engenharia de software. 
Análise e Projeto de Software Orientado a Objetos
37
Esta incompatibilidade fez com que fosse desenvolvido um novo ramo 
do gerenciamento de projetos, denominado de Gerência de Projetos de 
Tecnologia da Informação, destinado ao desenvolvimento de software.
Figura 14 - A Gerência de Projetos de Tecnologia da Informação é destinada a ao 
desenvolvimento de software
Fonte: Freepik.
O Manifesto Ágil diz que o bom andamento do projeto só é medido 
pela quantidade de software entregue, em pleno funcionando, afinal, é 
isso que importa ao cliente. Já em relação ao princípio de desenvolvimento 
sustentável, diferentemente da metodologia aplicada à maioria das 
indústrias, considera que o profissional irá render mais proporcionalmente 
ao tempo em que fica em sua estação de trabalho. 
Porém, em uma metodologia ágil de desenvolvimento de software, 
o entendimento é outro. Para esta metodologia, o desenvolvimento é um 
processo essencialmente criativo e, por isto, o profissional deve manter um 
ritmo constante, sem ultrapassar seus limites.
Inclusive, empresas, como Google, Microsoft e outros gigantes da TI, 
ensinaram ao mundo que o local de trabalho não precisa ser “chato”, vigiado 
e formal. Ele pode ser uma extensão da casa do colaborador, com toda 
uma ambiência que favoreça à criatividade, ao prazer e aos momentos de 
descompressão e troca intensa de informações e inspirações entre os pares. 
Para essas empresas, jornada de trabalho, assiduidade e 
pontualidade são paradigmas quebrados pela produtividade e 
comprometimento com os resultados. Os profissionais dessas empresas 
Análise e Projeto de Software Orientado a Objetos
38
trabalham por ideais, prazer e recompensas diretamente proporcionais 
aos resultados que consigam gerar para suas organizações.
Em relação à excelência técnica e bom design, a pergunta que 
todos fazem quando ouvem falar em metodologia ágil é: como manter 
a qualidade e ainda serágil? A resposta para isso é a mesma para uma 
metodologia não-ágil, “Desenvolver um bom código é a chave do sucesso 
de um projeto”.
DEFINIÇÃO:
Por um bom código entende-se um código limpo, enxuto, 
objetivo, organizado e compreensível, um código bem-
feito elimina a necessidade da documentação exaustiva, 
reduz os processos de retrabalho e facilita as tomadas de 
decisão (NAKAGAWA, 2016).
Quando tudo isso está garantido, é fácil manter o ritmo de entrega 
constante de versões e uma teia de confiança é estabelecida entre todos 
os envolvidos, fortalecendo os laços da equipe, tornando o ambiente 
de trabalho sustentável. Já o contrário traz exatamente os resultados 
indesejáveis, ou seja, um código malfeito exige muita documentação, 
gera retrabalho, toma tempo, aumenta os custos do projeto e os prazos 
de entrega.
Em relação ao princípio da simplicidade, aqui não estamos falando 
em procrastinar trabalho, mas em focar naquilo que realmente é importante 
para valorizar o código. Sempre nos perguntamos o que realmente 
é essencial ou quais as formas de tornar algo mais simples. Quando 
tratamos do método ágil, essas perguntas ficam ainda mais frequentes 
em nossas mentes. Os métodos ágeis não implicam necessariamente no 
desenvolvimento rápido de um software. 
Além disso, valer ressaltar que o desenvolvimento rápido é uma 
metodologia para a entrega de projetos em curtos espaços de tempo, 
enquanto a metodologia ágil fala mais sobre a eficiência, eficácia e 
Análise e Projeto de Software Orientado a Objetos
39
efetividade do desenvolvimento. Assim sendo, o princípio da simplicidade 
da metodologia ágil remete sobretudo à objetividade do software – fazer 
exatamente o que o cliente quer ou precisa, sem rodeios (direto ao ponto).
Em relação ao princípio times auto-organizáveis, os gerentes 
insistem em detalhar exaustivamente todos os passos do processo de 
desenvolvimento de software, tentando criar formas de controle para 
garantir que os produtos sejam entregues nos prazos estabelecidos. 
Porém, nem todos os detalhamentos conseguem prever pequenas 
falhas ou mudanças na estrutura, e apenas uma equipe bem-organizada e 
autogerenciável consegue realizar as mudanças necessárias na arquitetura 
do sistema em desenvolvimento ou já implantado. Para a metodologia 
ágil, cada membro da equipe tem que ser seu próprio gerente de projeto, 
daí o termo autogerenciável ou auto-organizável. Assim, as melhores 
arquiteturas, requisitos e design emergem de times auto-organizáveis. E 
sobre o princípio de refinamento e ajuste de comportamento, uma equipe 
autogerenciável precisa discutir técnicas e formas de se tornar cada vez 
melhor. Não existe uma receita de bolo, todos devem se autoavaliar 
e avaliar seus companheiros de modo a identificar necessidades de 
melhorias e pontos positivos que devem ser mantidos ou potencializados 
ainda mais.
Análise e Projeto de Software Orientado a Objetos
40
RESUMINDO:
E então? Gostou do que lhe mostramos? Aprendeu mesmo 
tudinho? Agora, só para termos certeza de que você 
realmente entendeu o tema de estudo deste capítulo, 
vamos resumir tudo o que vimos. Você deve ter aprendido 
que trabalhar com os métodos ágeis requer esforço e 
foco. Não é algo simples para quem está acostumado ao 
modelo orientado à documentação. A metodologia ágil 
não exclui processos como UML ou Processo Unificado, 
ela, na verdade, utiliza esses modelos para se basear e só 
então inicia suas aplicações. De modo geral a engenharia 
de software, cumpri seu dever de trazer metodologias para 
melhorar as práticas do desenvolvimento de sistemas, 
acabou por trazer também um novo problema. Para alguns 
desenvolvedores e arquitetos de software, as metodologias 
utilizadas até o momento eram lentas e repetitivas, tornando 
muitas vezes o trabalho esticado e desnecessário. Para 
resolver tal problema, novas metodologias começaram a 
surgir. Uma delas teve origem por meio de um manifesto, 
conhecido como “Manifesto Ágil”. 
Análise e Projeto de Software Orientado a Objetos
41
Qualidade de Software
OBJETIVO:
Ao término deste capítulo, você será capaz de compreender 
as principais características e princípios da qualidade 
de software. Isto será fundamental para o exercício de 
sua profissão. E então? Motivado para desenvolver esta 
competência? Então vamos lá. Avante!.
Conceito de Qualidade
Um determinado produto tem mais qualidade que outro apenas por 
alguns detalhes determinantes, como pela coloração específica que é 
utilizada em toda aquela linha de produção, ou em virtude de uma técnica 
de fechamento que impede que coisas vazem, enfim, detalhes fazem a 
diferença.
Para a International Standardization Organization (ISO), qualidade é 
o grau em que um conjunto de características inerentes a um produto, 
processo ou sistema cumpre os requisitos inicialmente estipulados para 
estes.
Qualidade tem a ver primordialmente com o processo 
pelo qual os produtos ou serviços são materializados. 
Se o processo for bem realizado, um bom produto virá 
naturalmente. A qualidade reside no que se faz e não 
apenas no que se tem como consequência disto. (ISO9001, 
2008, p. 37)
Para a norma ISO, qualidade é, antes de tudo, a capacidade que 
um serviço, produto, ou informação tem de cumprir sua promessa, e não 
necessariamente apresentar características reconhecidamente boas ou 
excelentes, pois, afinal, o que é bom ou excelente para um pode não ser 
para outro. 
E o que é Qualidade de Software? Será que podemos aplicar a 
mesma definição de qualidade que vimos anteriormente ao software? 
Análise e Projeto de Software Orientado a Objetos
42
Claro que sim, mas podemos recorrer a definições mais específicas para o 
segmento de software, como a estabelecida pela IEEE em seu SWEBOK, 
que é um manual de práticas e regulamentação da entidade. Para o IEEE, 
a qualidade de software está descrita nos quatro seguintes tópicos:
1. Fundamentos de Qualidade de Software – Abrange a cultura e 
ética da qualidade de software, bem como os valores e custos da 
qualidade. Também são os fundamentos que cuidam dos modelos 
e características da qualidade, suas melhorias e segurança;
2. Processos de Gerência de Qualidade de Software – Envolvem a 
garantia de qualidade, as validações e revisões;
3. Considerações Práticas – São a parte mais gerencial. Englobam os 
requisitos, as caracterizações de defeitos, as técnicas de gerência 
e as medidas de qualidade;
4. Ferramentas de Qualidade de Software – Envolve os softwares 
auxiliares de medição e técnicas próprias de garantia de qualidade.
A qualidade de software é uma área de conhecimento extremamente 
importante, tanto que não importa em qual fase do projeto você se 
encontre, sempre haverá de ser considerada a qualidade daquilo em que 
se estiver trabalhando.
Figura 15 - A qualidade de software é uma área de conhecimento muito importante
Fonte: Freepik.
Análise e Projeto de Software Orientado a Objetos
43
Para avaliar a qualidade de um software, muito se discute sobre 
como medir a qualidade de um software em funcionamento, já que 
a referência SWEBOK apenas se refere às características estáticas do 
software, ou seja, àquelas que não irão se alterar. Já para as características 
dinâmicas teremos que nos prender a outras técnicas, muitos gerentes 
de projeto se atêm aos testes de software como a maneira mais eficaz 
de garantir a sua qualidade. Para que a qualidade de um software seja 
atestada, existem algumas características que devem ser avaliadas e 
confirmadas.
 • Funcionalidade – É a capacidade de um software executar as 
suas funções de modo a satisfazer os desejos e necessidades 
do cliente, dentro do contexto declarado no escopo do software. 
Por exemplo, se o software é um antivírus, ele terá qualidade à 
medida em que conseguir fornecer todas as opções de o usuário 
eliminar e se precaver contra todos os tipos de vírus, em todos os 
seus dispositivos;
 • Confiabilidade– É a capacidade do software se manter no nível de 
desempenho, independentemente de seu contexto operacional, 
sendo cumpridos os requisitos mínimos para a sua execução;
 • Usabilidade – É a capacidade do software ser facilmente 
compreendido, com todas as suas funcionalidades devidamente 
compreensíveis e facilmente aprendidas, além de sua operação 
ser simples e eficaz, cumprindo os requisitos estético, dialógico 
e intuitivo;
 • Eficiência – É a capacidade do software manter seu tempo de 
execução compatível com o nível de desempenho esperado de 
acordo com a proposta inicial do sistema;
 • Manutenibilidade – É a garantia de facilidade de manutenção, 
adaptação e atualização do software, isso inclui as capacidades 
de recebimento de paths corretivos, melhoramentos, entre outros.
 • Portabilidade – É a capacidade de transferência do software, 
incluindo variações de idiomas, compatibilidade com diferentes 
sistemas operacionais, hardwares, entre outros.
Análise e Projeto de Software Orientado a Objetos
44
IMPORTANTE:
Quanto à usabilidade de um software, ela tem que cumprir 
um dos pilares fundamentais: “don’t make me think”, ou 
seja, traduzindo do inglês, “não me faça pensar”. Em outras 
palavras, o software tem que ser tão intuitivo que o usuário 
deve ser levado a clicar ou responder aos eventos propostos 
pela sua interface sem ter que parar para raciocinar ou 
procurar pelos elementos de chamada para a ação (call to 
action).
Para a qualidade de software, existem três maneiras de ocorrem 
problemas em um sistema, a primeira está relacionada ao defeito, quando 
há uma instrução ou comando incorreto, dizemos que o software possui 
um defeito. Um defeito muito comum em softwares é a existência de 
botões inoperantes, pois em algum momento do desenvolvimento, o 
código de ligação do botão foi perdido.
VOCÊ SABIA?
Apresentar falhas em seu funcionamento não é uma 
característica dos softwares produzidos por pequenas 
empresas ou desenvolvedores inexperientes. Durante a 
Comdex 98 (evento de tecnologia realizado nos Estados 
Unidos), Bill Gates, então diretor-executivo da Microsoft, 
resolveu dar uma prévia da versão 98 do Windows, quando, 
em plena demonstração, o recém-lançado novo sistema 
operacional da Microsoft apresentou a emblemática “tela 
azul”, bastante conhecida dos usuários das versões 98 e 
XP. Foi um vexame para o experiente empresário Bill Gates, 
principalmente porque o evento estava sendo transmitido 
pela rede CNN para todo o planeta (SOUZA; GASPAROTTO, 
2018).
O segundo problema está relacionado à falha, é considerado como 
um comportamento inesperado, o software continua executando, mas 
sem as condições adequadas. E o terceiro é o erro, quando algo que não 
deveria ocorrer, ocorre.
Análise e Projeto de Software Orientado a Objetos
45
Teste de Software
Muito já se falou sobre teste de software, segundo Roger Pressman, 
engenheiro de software:
Teste é um conjunto de atividades que podem 
ser planejadas antecipadamente e conduzidas 
sistematicamente. Um gabarito de testes de software, que 
é um conjunto de passos no qual pode incluir técnicas de 
projetos de casos de teste e métodos de teste específicos. 
Deve ser definido para o processo de software utilizado no 
projeto. (PRESSMAN; MAXIN, 2009, p. 43)
O teste de software tem por objetivo identificar erros, falhas e defeitos 
em um software, emitindo relatório técnico para fins de correção. Em uma 
rotina simples, uma bateria de testes deve ser preparada para um determinado 
software, os dados pertencentes à massa de teste devem ser inseridos e os 
programas devem ser executados com esses dados selecionados. 
Figura 16 - O teste de software tem objetivo identificar erros, falhas e defeitos, emitindo 
relatório técnico para fins de correção do mesmo
Fonte: Freepik.
Caso o programa execute normalmente, pode-se dizer que o 
software passou no teste, e um novo caso de teste passa a ser preparado, 
até que todas as possibilidades sejam esgotadas. Caso contrário, o 
software deve retornar à análise de código e os erros, falhas e defeitos 
Análise e Projeto de Software Orientado a Objetos
46
identificados devem ser corrigidos. Para uma bateria de testes em um 
software comercial, podemos elencar os seguintes passos:
1. Todos os menus e botões do software devem ser testados, 
validando cada link e destino realizados em relação aos previstos;
2. Todos os formulários devem ser verificados, juntamente ao banco 
de dados, para saber se os dados estão sendo inseridos, gravados, 
alterados, excluídos e consultados de maneira correta;
3. Todas as funções de saída devem ser verificadas, cálculos devem 
ser realizados, e os piores cenários analisados, detalhes não 
podem ser deixados de lado, pois eles podem esconder erros, 
falhas e defeitos ocultos.
VOCÊ SABIA?
Existe uma profissão na área de TI intitulada de “Analista de 
Teste de Software”. Os profissionais com esta especialização 
são cada vez mais requisitados pelas empresas de software. 
A disciplina de teste de software já integra a maioria dos 
programas curriculares dos cursos técnicos e de graduação 
das escolas e faculdades em todo o país. Existem inúmeras 
instituições oferecendo pós-graduação nesta área 
para quem já é graduado em ciências da computação, 
engenharia de computação, análise de sistemas e cursos 
afins. Os segmentos empresariais que mais demandam 
atividades para esses profissionais são as produtoras de 
games e de aplicativos para celulares.
Os especialistas em testes, engenheiros de software e gerentes do 
projeto devem desenvolver estratégias para formatarem seus planos de 
testes (SOUZA, 2013). Este plano é um documento formal que todo projeto 
de software deve possuir para aplicar ao produto antes de colocá-lo em 
produção. A atividade de teste de software requer grande esforço no ciclo 
de desenvolvimento e, se for implementado ao acaso, pode implicar em 
um prejuízo múltiplo de esforço, tempo e valor, além de abrir espaços para 
Análise e Projeto de Software Orientado a Objetos
47
erros, defeitos e falhas, causando uma queda considerável na qualidade 
do software, afetando diretamente sua funcionalidade e confiabilidade.
O teste de software funciona da seguinte maneira, para cada parte 
do sistema um teste deve ser executado, então, quando os requisitos 
forem especificados, deve haver um teste de aceitação. Quando um 
projeto de alto nível surgir, um teste de sistema deve ser executado, 
quando o projeto for detalhado, um teste de integração deve ser planejado 
e executado. Quando começar a codificação, cada unidade deve receber 
seu teste em separado.
Um dos de testes é chamado de unidade, é o teste unitário que 
avalia a menor unidade do código, o objetivo do teste de unidade é 
identificar possíveis falhas no funcionamento das partes independentes 
do software. Este tipo de teste é utilizado para verificar as funções 
independentes, descobrindo facilmente os erros de cada modulo do 
software. O foco desse teste é a identificação de comparações incorretas 
ou fluxos de controle impróprios. Como exemplos de teste de unidade, 
podemos citar as ações de salvar os dados de um cliente, por meio de um 
formulário, no banco de dados, ou mesmo tentar excluir um cliente deste 
mesmo banco de dados.
Figura 17 - O teste de unidade avalia a menor unidade do código com o objetivo de 
identificar possíveis falhas no funcionamento das partes independentes do software
Fonte: Freepik.
Análise e Projeto de Software Orientado a Objetos
48
O teste de integração envolve os componentes que trabalham em 
conjunto, com o intuito de encontrar erros em resultados apresentados 
em função desses componentes articulados entre si. Quando realizamos 
testes de telas de cadastro inteiras, ou quando decidimos testar todo 
um módulo administrativo, como por exemplo, o módulo de biblioteca 
de uma escola, estamos realizando testes de integração. No teste de 
validação, é oque avalia todo um ambiente específico, por meio dos 
requisitos definidos para uma determinada situação, seu objetivo é provar 
que o software está atendendo às solicitações. 
Assim, quando realizamos o teste em determinado sistema 
operacional ou verificamos a conexão com uma base de dados remota, 
ou mesmo quando disparamos diversos acessos ao banco de dados para 
verificar comportamentos, estamos realizando testes de validação.
Já o teste de sistema, é o tipo mais complexo de teste, é realizada 
uma emulação de um ambiente ideal e aplica-se quatro tipos de teste 
para verificar se o sistema pode ser realmente posto à prova, esse teste 
somente poderá ser realizado quando o sistema estiver completo.
Figura 18 - O teste de sistema é o mais complexo no qual é realizado uma emulação de um 
ambiente ideal
Fonte: Freepik.
Análise e Projeto de Software Orientado a Objetos
49
É um tipo de teste que devido à complexidade é importante o 
aprofundamento, são esses os quatro testes aos quais o teste de sistema 
deve ser submetido:
1. Teste de Recuperação – Verifica o processo de recuperação 
de falhas, geralmente são forçadas falhas para avaliar o 
comportamento do sistema, como por exemplo: 
 • Desativar o banco de dados para que ele esteja indisponível;
 • Fechar o sistema sem salvar os dados;
 • Interromper repentinamente o fornecimento de energia etc.
2. Teste de Segurança – Este teste verifica a integridade do sistema, 
provocando-o de formas ilegais, por meio de condições extremas 
de violação. Tentativas de forçar usuário e senha ou tentativas 
de salvamento de informações de forma incorreta são alguns 
exemplos dessas violações;
3. Teste de Estresse – É um teste que verifica o quanto de estresse 
o software aguenta, um cenário extremo é criado apenas para 
esse teste, nos quais todas as condições absurdas são testadas. 
Simulação de milhares de acessos a mesma funcionalidade, 
cliques simultâneos em botões de salvamento etc.;
4. Teste de Desempenho – Verifica como o sistema se comporta 
como um sistema integrado, certifica se o sistema fica lento se 
adicionado novos dados ou telas.
Existem ainda os chamados testes de caixa branca e testes de caixa 
preta.
 • Teste de Caixa Branca – Possui todos os critérios para a realização 
dos testes de fluxo de controle e fluxo de dados, geralmente é 
focado em avaliar a parte estrutural do software. É quase sempre 
um teste executado em linha de código, para testar lógicas, 
englobas as técnicas usadas nos testes de unidade e de integração.
 • Teste de Caixa Preta – Para esse teste a parte interna do software 
é desconsiderada, focando-se apenas na parte externa. Ou seja, o 
teste de caixa preta verifica como o software está se comportando 
Análise e Projeto de Software Orientado a Objetos
50
no sistema de uma maneira geral. Este é o teste aplicado nas 
unidades MVP - Minimum Viable Product, (Produto Mínimo Viável) 
lançadas, engloba as técnicas usadas nos Testes de Aceitação e 
Sistema.
É importante salientar que esses testes têm como objetivo a 
busca pela qualidade de um bom sistema, ou seja, um software, no qual 
é importante ser bem testado antes de apresentá-lo para o cliente ou 
disponibilizar para o usuário final.
RESUMINDO:
E então? Gostou do que lhe mostramos? Aprendeu mesmo 
tudinho? Agora, só para termos certeza de que você 
realmente entendeu o tema de estudo deste capítulo, 
vamos resumir tudo o que vimos. Você deve ter aprendido 
que a qualidade de software é um item extremamente 
importante para os processos de criação de projetos de 
software. O fato de se trabalhar com orientação a objetos 
facilita sobremaneira o processo de teste de software, pois, 
com o código limpo fica bem mais fácil identificar erros de 
programação. Vimos também que existem três tipos de 
inconsistências em um software: erros, falhas e defeitos, 
vimos ainda os vários tipos de teste de software que são 
implementados pelo analista de testes. E a busca por teste 
é para propor a qualidade do produto, segundo estudos, 
a qualidade está ligada às necessidades internas de cada 
um. Dependendo de quem seja o alvo, a qualidade será 
mensurada pela aparência, pelo material, pelo preço, ou 
seja, existem diversas dimensões de qualidade, para isso a 
importância da realização dos testes.
Análise e Projeto de Software Orientado a Objetos
51
REFERÊNCIAS
CAVALCANTI, A. Introdução ao Processo Unificado: PU. DCA 
UFRN, 2018. Disponível em: https://www.dca.ufrn.br/~anderson/FTP/
dca0120/P2_Aula2.pdf. Acesso em: 07 dez 2021.
CONCEIÇÃO, J. D.; SILVEIRA, S. R. Aplicação de Metodologias 
Ágeis para Desenvolvimento de Software: um Estudo de Caso na 
Empresa Alliance Software. Santa Maria: UFSM – Universidade Federal de 
Santa Maria, 2015. Disponível em https://goo.gl/EnJLSZ. Acesso em: 07 
dez 2021.
ISO9001. Quality management systems: Requirements. ISO, 2008. 
Disponível em: https://www.iso.org/standard/46486.html. Acesso em: 07 
dez 2021.
NAKAGAWA, E. Y. Modelos de Processos de Software. USP, 
2016. Disponível em https://edisciplinas.usp.br/mod/resource/view.
php?id=477720. Acesso em: 07 dez 2021. 
NOGUEIRA, João. Análise e Projeto de Software Orientado a 
Objetos. Desenvolvimentos Iterativo e Evolutivo. São Paulo: Uninassau, 
2018a.
NOGUEIRA, João. Análise e Projeto de Software Orientado a 
Objetos. Desenvolvimento Ágil de Projetos. São Paulo: Uninassau, 2018b.
SOUZA, K. P.; GASPAROTTO, A. M. A importância da atividade de 
Teste no Desenvolvimento de Software. In: XXXIII ENCONTRO NACIONAL 
DE ENGENHARIA DE PRODUCAO, São Paulo, 2013. Disponível em: www.
abepro.org.br/biblioteca/enegep2013_TN_STO_177_007_23030.pdf. 
Acesso em: 07 dez 2021.
SOUZA, L. M. “Tela da morte” do Windows faz empresas (e até Bill 
Gates) passarem vergonha; veja gafes. TecMundo, 2013. Disponível em: 
https://www.tecmundo.com.br/software/125218-tela-morte-windows-
ela-diz-resolver-erros.htm. Acesso em: 07 dez 2021.
Pressman, R.; MAXIM, B. Software Engineering: A Practitioner’s 
Approach. New York: McGraw-Hill Higher Education, 2009.
Análise e Projeto de Software Orientado a Objetos
about:blank
about:blank
about:blank
about:blank
about:blank
about:blank
about:blank
about:blank
	Processo Unificado - Construção e Transição
	Fase de Construção
	Fase de Transição
	Desenvolvimentos Iterativo e Evolutivo 
	Processo de Desenvolvimento de Software
	Processo de Desenvolvimento de Software
	Métodos de Abordagem para o Processo de Desenvolvimento de Software
	Desenvolvimento Ágil de Projetos
	O Manifesto “Ágil”
	Princípios da Metodologia Ágil
	Qualidade de Software
	Conceito de Qualidade
	Teste de Software

Continue navegando