Buscar

UNIDADE IV - PRINCÍPIOS DE SISTEMA DE INFORMAÇÕES

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

1 
 
UNIDADE IV 
7 PRINCÍPIOS QUE ORIENTAM A PRÁTICA 
7.1 A essência da prática 
A engenharia de software é uma prática contínua de conhecimento e aplicação de 
novas tecnologias. Tecnologias entendidas como novos computadores, novas 
interfaces e novos recursos de redes de computadores, tecnologias de programação 
como versões mais atuais de linguagens de programação e frameworks. As aplicações 
dessas tecnologias envolvem a prática de modelagem, de estruturas de dados e de 
construção de software. Enfim é o que o engenheiro de software precisa saber, dada a 
evolução constante da tecnologia. 
Frequentemente, diz-se que conhecimento sobre desenvolvimento de 
software tem uns três anos de vida: metade do que se precisa saber hoje 
estará obsoleto daqui a três anos. No que diz respeito ao conhecimento 
de tecnologia, essa afirmação está próxima da verdade. Mas há outro 
tipo de conhecimento sobre desenvolvimento de software - um tipo 
visto como “princípios da engenharia de software” – que não possui três 
anos de meia-vida. Tais princípios provavelmente servirão ao 
programador profissional durante toda a sua carreira (MCCONNELL, 
1999 apud PRESSMAN, 2011, p. 109). 
Os princípios da engenharia de software, ditados por Pressman (2011) conduzem a 
uma boa prática da engenharia de software. Na verdade, esses princípios manifestam 
toda a essência da prática. Servem de artefatos e regras que podem ser praticadas 
diariamente, criando ações racionais que conduzem a uma melhoria contínua de 
aprendizado e evolução profissional. 
A seguir serão discutidos os elementos que envolvem a essência da prática. Criados 
por Pressman (2011) a essência da prática se baseia nos princípios fundamentais e 
princípios das atividades metodológicas: 
7.1.1 Princípios fundamentais 
Pressman (2011) orienta: “A engenharia de software é norteada por um conjunto de 
princípios fundamentais que auxiliam na aplicação de um processo de software 
significativo e na execução de métodos de engenharias de software efetivos”. 
 Princípios que orientam o processo – este conjunto de princípios podem ser aplicados à 
metodologia e a todos os processos de software (PRESSMAN, 2011): 
➢ Princípio 1. Seja ágil – evite o desperdício de ações e tome decisões localmente sempre 
que possível. Use os princípios das metodologias ágeis. 
2 
 
➢ Princípio 2. Concentre-se na qualidade em todas as etapas – foco na qualidade para toda 
atividade, ação e tarefa do processo. 
➢ Princípio 3. Esteja pronto para adaptações – todo processo deve ser melhorado 
continuamente, acostume-se com mudanças. 
➢ Princípio 4. Monte uma equipe efetiva – Forme uma equipe que se auto-organize, que 
tenha confiança e respeito mútuos. 
➢ Princípio 5. Estabeleça mecanismos para comunicação e coordenação – falhas e omissões 
de informações no desenvolvimento do projeto, comprometem todo o esforço da equipe. 
➢ Princípio 6. Gerencie mudanças – estabeleça mecanismos de gestão de configuração do 
software para acompanhamento das mudanças. 
➢ Princípio 7. Avalie os riscos – no desenvolvimento do software falhas e erros acontecem. 
Estabeleça planos de contingência. Por exemplo: Manter os backups atualizados. 
➢ Princípio 8. Gere artefatos que forneçam valor para outros – a prática de reuso deve ser 
constante. Crie ou melhore artefatos que proporcione valor para outro processo, 
atividades, ações ou tarefas no desenvolvimento do software. 
 
 Princípios que orientam a prática – o objetivo primordial único é entregar dentro do prazo, 
com alta qualidade (PRESSMAN, 2011): 
➢ Princípio 1. Divida e conquiste – analise o projeto e o separe por níveis de interesses. Cada 
interesse fornece uma funcionalidade. O conjunto destes interesses terá uma solução 
mais fácil para um determinado problema. 
➢ Princípio 2. Compreenda o uso da abstração – abstrair é simplificar a interpretação de um 
elemento complexo e comunicar o significado de forma clara em poucas palavras. 
➢ Princípio 3. Esforce-se por consistência – procure garantir que todos os elementos de 
análise estejam apresentáveis e integrados. 
➢ Princípio 4. Foque na transferência de informação – a informação deve fluir por todos os 
dispositivos e interfaces de hardware e humana. A ocorrência de erros é relevante. A 
informação deve ser garantida da origem ao destino e os erros devem ser solucionados, 
ou no mínimo recuperados ou contornados. 
➢ Princípio 5. Construa software que apresente modularidade efetiva – com base no 
Princípio 1. A modularidade ou componentização efetiva, consiste em criar módulos 
capazes de serem substituídos, terem seus próprios endereços, ligações simples e 
recursos de manutenção isolada do restante do sistema. 
➢ Princípio 6. Padronize – a padronização leva a repetição, melhorias de soluções e 
eficiência da prática. 
➢ Princípio 7. Quando possível, represente o problema e sua solução sob uma série de 
perspectivas diferentes – faça desenhos específicos para cada ponto de vista de interesse. 
3 
 
➢ Princípio 8. Lembre-se de que alguém fará a manutenção do software – erros, omissões, 
mudanças e adaptações vão ocorrer. Uma prática aplicada com base na engenharia de 
software garante uma consistência ao longo do ciclo de vida do processo de 
desenvolvimento de software. 
7.2 Princípios das atividades metodológicas 
Os princípios das atividades metodológicas são aprimoramentos dos princípios 
fundamentais apresentados no Tópico 7.1.1. dessa unidade de ensino. 
7.2.1 Princípios da comunicação 
A comunicação entre o cliente e desenvolvedor é uma atividade desafiadora. O 
cliente e o usuário entendem do negócio e sabem o que querem do sistema, contudo a 
linguagem destes é diferente da linguagem do desenvolvedor. O cliente está envolvido 
no seu negócio e em seus modelos, sua organização, cultura e linguagem. É diferente 
do ambiente do desenvolvedor. O desenvolvedor entende de tecnologia da informação, 
mas não do negócio do cliente. E para que seja desenvolvido um software, eles 
precisam se comunicar de forma efetiva. 
➢ Princípio 1. Ouça – Concentre-se mais em ouvir do que em se preocupar com respostas. 
Elabore um questionário breve. “As pessoas gostam de falar do que entendem. Ouça 
apenas e anote todas as observações. Evite fazer perguntas durante a fala do cliente, 
reserve isto para a fase de análise” (MORENO, 2020). 
➢ Princípio 2. Prepare-se antes de se comunicar – Dedique tempo para compreender o 
problema antes de se encontrar com outras pessoas. Faça uma pesquisa sobre o negócio 
e a linguagem do cliente. 
➢ Princípio 3. Alguém deve facilitar a atividade – se possível eleja um líder (um facilitador) 
para intermediar a comunicação entre o cliente e o desenvolvedor. 
➢ Princípio 4. Comunique-se pessoalmente – comunicar-se pessoalmente é mais produtivo. 
➢ Princípio 5. Anote e documente as decisões – observações e decisões podem cair no 
esquecimento. Registre por escrito ou gravação todos os pontos importantes da 
comunicação. 
➢ Princípio 6. Esforce-se por colaboração – a colaboração dos interessados no projeto ajuda 
a equipe a criar um senso comum do que é para ser feito. 
➢ Princípio 7. Mantenha o foco e crie módulos para a discussão – mantenha o foco no 
elemento de análise, evite desvios para outros itens não ligados à análise. 
➢ Princípio 8. Faltando clareza, represente graficamente – se a forma verbal ou escrita for 
de difícil interpretação, faça um desenho, um diagrama ou qualquer representação gráfica 
do objeto em pauta. O índice de interpretação e entendimento do problema aumentam. 
4 
 
➢ Princípio 9. (a) Uma vez de acordo, siga em frente. (b) Se não chegar a um acordo, siga em 
frente. (c) Se uma característica ou função estiver obscura e não puder ser elucidada no 
momento, siga em frente – este princípio de comunicação é para reforçar o Princípio 1. 
➢ Princípio 10. Negociação não é uma contestação e nem um jogo – a prática de negociação 
tem que sempre objetivarfavorecer mutuamente os negociadores. 
A comunicação ajuda a agrupar as ideias, definir elementos do projeto, tais como 
custos, prazos, componentes, metas e objetivos. Uma vez definido tais itens, agora é 
hora de saber como alcançá-los e de elaborar um plano para efetivar as ideias. 
7.2.2 Princípios de planejamento 
A atividade de planejamento engloba um conjunto de práticas técnicas e gerenciais 
que permitem à equipe de software definir um roteiro à medida que segue na direção 
de seus objetivos estratégicos e táticos (PRESSMAN, 2011). 
Como dito anteriormente a engenharia de software é uma área nova. Estima-se que 
60 a 90% do planejamento possa ser determinado com um nível alto de exatidão, 
contudo os 10 a 40% restantes do planejamento são imprecisos ou até mesmo serão 
descobertos durante o ciclo de desenvolvimento. “Por mais que se tente, é impossível 
prever com exatidão como um projeto de software irá evoluir. Não importando o rigor 
com o qual o planejamento seja feito, os seguintes princípios sempre se aplicam: 
(PRESSMAN, 2011)”. 
➢ Princípio 1. Compreenda o escopo do projeto – o escopo do projeto se refere as 
dimensões do projeto. O escopo favorece estabelecer marcas de referência no projeto. 
➢ Princípio 2. Envolva os interessados na atividade de planejamento – A participação dos 
interessados garante a obtenção de requisitos, restrições e qualidade exigida. 
➢ Princípio 3. Reconheça que o planejamento é iterativo – no projeto de software é comum 
ocorrerem modificações. Reuniões iterativas redefinem o arcabouço do processo com 
melhorias, prevenções e novas práticas. 
<Lembrete início> 
O Scrum promove reuniões iterativas de forma ágil. Reveja o “Tópico 5.2.2 Scrum – 
Unidade III”. 
<Lembrete fim> 
➢ Princípio 4. Faça estimativas com base no que conhece – utilize medidas com os dados 
que tem em mãos, tais como: custo, prazo, índice de mudanças. Estas medidas servirão 
para acompanhamento da eficácia e eficiência do projeto. 
➢ Princípio 5. Considere a análise de risco ao definir o plano – o risco e seu respectivo 
impacto no projeto devem ser avaliados. Um plano de contingência deve ser elaborado 
para que o negócio continue e possíveis ajustes dos custos e do cronograma devem ser 
revistos. 
5 
 
➢ Princípio 6. Seja realista – mudanças e fatos da vida ocorrem e isso afeta o 
desenvolvimento do sistema. “Errar é humano”. Por melhor que seja o profissional, este 
também comete erros. Variâncias e desvios devem fazer parte do plano de projeto. 
➢ Princípio 7. Ajuste particularidades ao definir o plano – conforme o nível de detalhes do 
projeto é possível estabelecer marcas de referências em tarefas com menor lead-time 
(tempo de espera). Isso permite entregas rápidas e um controle melhor do projeto. 
<Lembrete início> 
O modelo de processo incremental (veja o “Tópico 4.1.4 Incremental – 
Unidade II”) e as metodologias ágeis (veja o “Tópico 5.1 Manifesto para 
desenvolvimento ágil de software – Unidade III”) trabalham com períodos curtos 
de entrega. Veja como funciona! 
<Lembrete fim> 
➢ Princípio 8. Defina como se pretende garantir a qualidade – medidas, melhorias, 
iterações, testes e revisões técnicas devem ser contempladas no plano do projeto. 
➢ Princípio 9. Descreva como pretende adequar as alterações – as mudanças vão ocorrer, 
tanto por parte do cliente como parte do desenvolvimento. Algumas mudanças podem 
até necessitar de implementação imediata. De que forma estas mudanças estarão 
implícitas no plano do projeto? Este princípio reforça o Princípio 6. 
➢ Princípio 10. Verifique o plano frequentemente e faça ajustes necessários – é de bom 
senso sempre ajustar o plano de projeto quando não houver conformidade. 
Pela comunicação se extrai os requisitos do negócio. Pelo planejamento são 
descritas as atividades do desenvolvimento durante o ciclo de vida da construção do 
software. E para que haja uma melhor compreensão do que e como será construído é 
feito a modelagem do software. 
7.2.3 Princípios de modelagem 
O modelo serve para ver o que será feito. A modelagem do software inclui tanto a 
modelagem do projeto de software, bem como a modelagem do produto software. 
A modelagem permite uma maior abstração do objeto em estudo, melhora a 
compreensão de como vai funcionar uma determinada implementação por exemplo. 
Os modelos devem expandir em detalhes os níveis de abstração de um determinado 
caso de uso ou de um componente de software. Os modelos de software podem ser 
elaborados para o cliente em uma abstração de baixo nível ou em uma abstração de 
alto nível da parte técnica para os desenvolvedores. 
Os princípios de modelagem citados por Pressman (2011) foram extraídos dos 
modelos ágeis e são apropriados para todos os engenheiros de software: 
6 
 
➢ Princípio 1. O objetivo principal da equipe de software é construir software, e não criar 
modelos – agilidade significa entrega de software ou parte deste em períodos curtos. 
Modelos que não contribuírem para a agilidade devem ser descartados. 
➢ Princípio 2. Viaje leve – não crie modelos desnecessários. 
➢ Princípio 3. Esforce-se ao máximo para produzir os modelos mais simples possíveis – 
construa modelos simples e de fácil compreensão, de forma a permitir que outros possam 
criticar ou sugerir alterações. 
➢ Princípio 4. Construa modelos que facilitem alterações – mudanças ocorrem. Não descarte 
esta hipótese nos modelos. Considere sempre um baixo acoplamento e alta coesão entre 
os componentes do software ou do sistema. 
➢ Princípio 5. Seja capaz de estabelecer um propósito claro para cada modelo – o modelo 
deve ser claro e justificável para todos os interessados no projeto. 
➢ Princípio 6. Adapte o modelo desenvolvido ao sistema à disposição – o modelo deve ser 
flexível de forma a permitir novas adaptações. 
➢ Princípio 7. Crie modelos úteis, mas esqueça a construção de modelos perfeitos – [..] a 
modelagem deve ser conduzida tendo em vista as etapas de engenharia de software 
seguintes; iterar indefinidamente para criar um modelo “perfeito” não atende à 
necessidade de agilidade (PRESSMAN, 2011). 
➢ Princípio 8. Não seja dogmático quanto à sintaxe do modelo – o objetivo do modelo é 
transmitir informações. Se a sintaxe do modelo transmitir o conteúdo com sucesso, 
perdoe a sintaxe incorreta. 
➢ Princípio 9. Se os instintos indicam que um modelo não está correto, embora pareça 
correto no papel, provavelmente há motivos com os quais se preocuparem – acredite em 
seus instintos profissionais. Se existir a crença de que algo no modelo está errado, destine 
um tempo para esta análise. 
➢ Princípio 10. Obtenha feedback o quanto antes – revisões sucessivas que proporcionem 
feedbacks, são necessárias para o refinamento de um modelo útil. 
No trabalho de engenharia de software, podem ser criadas duas classes 
de modelos: modelos de requisitos e modelos de projeto. Os modelos 
de requisitos (também denominados modelos de análise) representam 
os requisitos dos clientes, descrevendo o software em três domínios 
diferentes: o domínio da informação, o domínio funcional e o domínio 
comportamental. Os modelos de projeto representam características do 
software que ajudam os desenvolvedores a construí-lo efetivamente: a 
arquitetura, a interface para o usuário e os detalhes quanto a 
componentes (PRESSMAN, 2011, p. 116). 
 
 Princípios de modelagem de requisitos: 
➢ Princípio 1. O universo de informações de um problema deve ser representado e 
compreendido. 
7 
 
➢ Princípio 2. As funções que o software desempenha devem ser definidas. 
➢ Princípio 3. O comportamento do software (como consequência de eventos externos) 
deve ser representado. 
➢ Princípio 4. Os modelos que descrevem informações, funções e comportamentos devem 
ser divididos para que revelem detalhes por camadas (ou hierarquicamente). 
➢ Princípio 5. A análise deve partir da informação essencial para o detalhamento da 
implementação.Princípios de modelagem de projetos: 
➢ Princípio 1. O projeto deve ser roteirizado para a modelagem de requisitos. 
➢ Princípio 2. Sempre considere a arquitetura do sistema a ser construído. 
➢ Princípio 3. O projeto de dados é tão importante quanto o projeto das funções de 
processamento. 
➢ Princípio 4. As interfaces (tanto internas quanto externas) devem ser projetadas com 
cuidado. 
➢ Princípio 5. O projeto de interface do usuário deve ser voltado às necessidades do usuário 
final. Entretanto, em todo caso, deve-se enfatizar a facilidade de uso. 
➢ Princípio 6. O projeto no nível de componentes deve ser funcionalmente independente. 
➢ Princípio 7. Os componentes devem ser relacionados livremente tanto entre 
componentes quanto com o ambiente externo. 
➢ Princípio 8. Representações de projetos (modelos) devem ser de fácil compreensão. 
➢ Princípio 9. O projeto deve ser desenvolvido iterativamente. A cada iteração, o projetista 
deve se esforçar para obter maior grau de simplicidade. 
Com a especificação e modelagem prontas, o projeto está praticamente pronto. A 
próxima fase agora é de construção do produto software. 
7.2.4 Princípios de construção 
A atividade de construção engloba um conjunto de tarefas de codificação e testes 
que conduzem ao software operacional pronto para ser entregue ao cliente e ao usuário 
final (PRESSMAN, 2011). 
A construção do software está ligada as atividades de codificação e testes do 
software para entrega ao cliente. 
A codificação é feita com o uso de uma linguagem de programação e ferramentas 
que a suportem. Para que um programa de computador desenvolvido em qualquer 
linguagem da computação, ele precisa ser convertido em código de máquina no formato 
binário para que o hardware possa ser ativado. Para isso o programa fonte deve passar 
por um compilador (ou interpretador de comandos). 
8 
 
O compilador converte um programa fonte desenvolvido em linguagem "C" por 
exemplo, em código binário executável ".exe" no caso do Windows. 
O interpretador de comandos é um programa residente no computador, que converte 
em código binário no instante em que o programa fonte é carregado no computador. A 
linguagem Java por exemplo. 
<Observação início> 
Exemplos de linguagens de programação compiladas e/ou interpretadas: 
 Linguagens compiladas: BASIC, C, C++, C#, COBOL, Delphi e Fortran. 
 Linguagens interpretadas: ASP, BASIC, C#, , Java, JSP e PHP. 
<Observação fim> 
Para a codificação são usadas ferramentas que fornecem apoio automatizado para 
construir o software, das quais se destacam as ferramentas CASE e frameworks que 
funcionam no domínio da aplicação. Entenda mais, leia Ferramenta no “Tópico 2.4 
Projetos e construção do software – Unidade I”. 
<Observação início> 
A verificação assegura você construiu direito e a validação assegura que você 
construiu a coisa certa. 
<Observação fim> 
De acordo com Pressman (2011) os seguintes princípios e conceitos são aplicados 
a codificação e testes: 
 Princípios de codificação – Os princípios que regem a codificação são intimamente alinhados 
com o estilo de programação, com as linguagens e com os métodos de programação 
(PRESSMAN, 2011). 
➢ Princípios de preparação: Antes de escrever uma única linha de código, certifique-se de 
que: o problema está entendido, a ideia do projeto está clara, linguagens de programação 
e tecnologias estão disponíveis e elaborou um plano de testes dos componentes. 
➢ Princípios de programação: Ao começar a escrever código – otimize os algoritmos, 
estruture a informação para atender o projeto, tenha um bom senso em evitar muitos 
nomes de funções (labels), contudo não faça algoritmos muito extensos com muitos 
atalhos, crie o processo de loops, e seja ágil na documentação. 
➢ Princípios de validação: Após completar a primeira etapa de codificação, certifique-se de: 
verificar o código do software por um processo de depuração de falhas, fazer testes de 
componente e reescrever o código se necessário. 
7.2.5 Princípios de disponibilização 
9 
 
A disponibilização envolve três ações: entrega, suporte e feedback. Pelo 
fato de os modernos modelos de processos de software serem, em sua 
natureza, evolucionários ou incrementais, a disponibilização não ocorre 
imediatamente, mas sim, em muitas vezes, quando o software segue 
para sua finalização (PRESSMAN, 2011, p. 122). 
 
Veja os modos de disponibilização do software apresentados nos modelos de 
processos de software Incremental (Tópico 4.1.4 Incremental – Unidade II) e Espiral 
(Tópico 4.1.5 Espiral – Unidade II). 
<Lembrete fim> 
O modelo Incremental, por exemplo, trabalha com o conceito de versões, é iterativo 
e tem como objetivo apresentar um produto operacional a cada incremento realizado. 
“A entrega para um incremento de software representa um marco importante para 
qualquer projeto de software (PRESSMAN, 2011)”. Pressman (2011) orienta também 
os seguintes princípios a serem seguidos para a entrega de um incremento: 
➢ Princípio 1. As expectativas dos clientes para o software devem ser gerenciadas – o cliente 
sempre espera algo mais. Deixe claro formalmente ao cliente o que vai ser entregue. Evite 
desapontamentos. 
➢ Princípio 2. Um pacote de entrega completo deve ser auditado e testado – antes da 
entrega de um pacote de software ao cliente. O pacote deve ser verificado e validado, de 
preferência realizando testes no ambiente do cliente, evitando é lógico, comprometer o 
ambiente operacional do cliente. 
➢ Princípio 3. Deve-se estabelecer uma estrutura de suporte antes da entrega do software – 
estima-se que em 80% dos casos de ligação dos usuários para o suporte, se referem a 
fatos operacionais comuns e outros de soluções rápidas. O usuário na verdade se sente 
satisfeito em saber que tem “ouvidos” para ele. Os registros das ligações estabelecem 
parâmetros para a evolução e melhoria do software. 
➢ Princípio 4. Material adequado referente às instruções deve ser fornecido aos usuários 
finais - o treinamento do usuário final é essencial para o sucesso do software. O manual 
do usuário funciona de forma colaborativa, porque o usuário ao se acostumar com o 
manual irá auxiliar nas revisões do software. 
➢ Princípio 5. Software com bugs (erros), primeiro, deve ser corrigido, e, depois, entregue – 
“Os clientes esquecerão a entrega de um produto de alta qualidade em poucos dias, mas 
jamais esquecerão os problemas causados por um produto de baixa qualidade. O 
software os faz lembrar isso todos os dias” (PRESSMAN, 2011). Os desenvolvedores 
muitas vezes são submetidos a pressões devido a prazos de entrega ou solução de um 
problema prioritário. Não entregue funcionalidades com problemas e a promessa de que 
o problema vai ser corrigido. 
7.3 Atividade de verificação do código do software 
10 
 
A prática da engenharia de software se torna consistente com a verificação do 
código do software, faz-se o que é chamado de depuração. Do dicionário da língua 
portuguesa, depuração é a atividade de limpeza ou exclusão de partes indesejáveis. No 
desenvolvimento do software erros ocorrem, seja por uma “trava” do programa ou algum 
comportamento inesperado. No processo de desenvolvimento do software, depuração 
é a atividade de rastreamento do código, com objetivo de corrigir e reduzir falhas no 
programa de computador. 
Para depurar falhas no software (DEBUG) é necessário fazer o rastreamento do 
código no tempo de execução do programa, da onde vem a palavra Trace (rastrear). O 
rastreamento de um bug inicia com testes para reproduzir o problema e buscar o ponto 
de erro. Ao encontrar o erro faz-se um diagnóstico, que pode ser informal ou, quando 
houver necessidade, um relatório formal de registro do erro. No diagnóstico deve 
constar o erro identificado e possíveis soluções para o problema. 
Depuração de falhas no software (DEBUG): 
A atividade de depuração de falhas (debugging) mostrada na Figura 53 consiste em 
4 tarefas: 
1. Reprodução(Reproduce): consiste em rastrear o erro com objetivo de identificar a 
causa de um determinado problema. Neste caso usar breakpoints (pontos de parada no 
software). 
2. Diagnóstico (Diagnose): avaliar o ponto do erro, sua causa, gravidade, grau de 
prioridade, riscos e impactos no comportamento do software (no programa em análise 
e em outros programas). 
3. Corrigir (Fix): Implementação e testes para as correções necessárias. 
4. Refletir (Reflect): aplicação das medidas corretivas de forma a garantir solução 
para o problema, analisar se a mudança não impacta em outras características do 
sistema, validações das entradas/saídas, otimização do código e garantia de 
encapsulamento. 
Figura 53: Fluxo das atividades de Depuração, Testes e Diagnósticos do software. 
 
11 
 
➢ Princípios de testes: o objetivo do teste de software é rastrear o código em busca de 
erros. O bom teste é aquele com alta probabilidade de encontrar erros. Um princípio 
básico na realização de testes de software. principalmente em sistemas de média 
complexidade para cima, é diferenciar a equipe puramente de desenvolvimento, da 
equipe especificamente de testes. Ou seja, quem desenvolve não testa, e quem testa não 
desenvolve. 
7.3.1 Abordagens top-down (de cima para baixo) e bottom-up (de baixo para 
cima) 
Para entender melhor como funciona o teste de software estabeleça duas 
perspectivas: 1. Interface do usuário com o software; e 2. Interface do software com o 
ambiente operacional do computador. 
Essas duas perspectivas levam a uma técnica básica de testes de software, as 
abordagens top-down e bottom-up, observe as Figuras 54 e 55. 
A abordagem top-down apresentada na Figura 54, verifica a integração dos 
componentes de um sistema começando pelos níveis superiores: requisitos, funções e 
interface com o usuário e caminha para os níveis inferiores incluindo testes do código. 
O foco principal deste teste é caminhar da informação até os dados que a geraram. 
Figura 54: A abordagem de teste top-down parte dos níveis superiores, no caso em testes de: 
requisitos, funcionalidade e usabilidade. 
 
A abordagem bottom-up, apresentada na Figura 55, começa pelos níveis inferiores, 
basicamente em nível de código, onde são feitos testes de interface com o hardware, 
drivers e instalação, e caminha para os níveis superiores, os níveis operacionais. A 
abordagem bottom-up, normalmente é usada em instantes do desenvolvimento do 
software. 
Figura 55: A abordagem de teste bottom-up parte dos níveis inferiores, no caso no nível de 
código. Tipo de teste característico de sistema ou software em desenvolvimento. 
12 
 
 
8 INTEGRAÇÃO E ENTREGA DO SISTEMA 
8.1 Projeto de arquitetura 
O projeto de arquitetura está preocupado com a compreensão de como um sistema 
deve ser organizado e com a estrutura geral desse sistema. No modelo do processo de 
desenvolvimento de software, o projeto de arquitetura é o primeiro estágio no processo 
de projeto de software (SOMMERVILLE, 2011). 
A arquitetura de software produz modelos e organiza a estrutura de um software que 
serve de guia para a construção do software. A Figura 56 mostra uma arquitetura para 
desenvolvimento de páginas web em ambiente JSP. Esta arquitetura é útil para 
apresentar o projeto conceitual da arquitetura web, ou seja, este é um modelo de 
abstração de alto nível sem detalhes específicos de como vai funcionar. 
Figura 56: Modelo conceitual de arquitetura web com base na tecnologia JSP (Java Server Page). 
 
O projeto lógico apresentado na Figura 57 mostra uma arquitetura com alguns 
detalhes de implementação. Esta é uma tecnologia de três camadas e quatro nós. No 
modelo são apresentados os componentes (blocos menores), a implantação (caixa) e 
os estereótipos de ligação. 
13 
 
Figura 57: Modelo lógico de arquitetura web de implantação, independente de ambiente 
operacional para cliente acessar SIL – Sistema de Informação Logístico. 
 
Podemos observar na Figura 57 a estrutura em camadas, que permite o acesso pelo 
cliente à aplicação SIL. A visão estática da arquitetura do software permite separar o 
sistema em camadas de acordo com os requisitos do sistema. 
A Figura 58 apresenta um modelo típico de arquitetura em três camadas: camada de 
apresentação, camada de negócios (ou aplicação) e camada de integração. 
Figura 58: Arquitetura em camadas. 
 
Fonte: VERSOLATTO (2015), p. 95. 
As camadas da arquitetura são definidas por Versolatto (2015) de acordo com a 
tabela de definições da arquitetura em três camadas, mostradas na Figura 59: 
Figura 59: Definições da arquitetura em três camadas. 
CAMADA DEFINIÇÃO 
Apresentação Classes responsáveis pela interação com o usuário. 
14 
 
Negócios (ou Aplicação) Classes responsáveis pela execução das regras de negócio. 
Integração 
Classes responsáveis pela integração das tecnologias da 
informação. Por exemplo: SGBD. 
Fonte: VERSOLLATO (2015), p. 95. 
Se analisarmos a arquitetura da Figura 57 conseguimos localizar as camadas. O 
servidor SOR – Sistema Operacional de Rede funciona na camada de apresentação, o 
servidor APP – SIL na camada da aplicação e o servidor SGBD na camada de 
integração. 
O projeto físico utiliza o projeto lógico como base para implementação das 
ferramentas e técnicas que serão aplicadas. 
Com base nos requisitos do sistema são atribuídas as linguagens de programação, 
o sistema de gerenciamento do banco de dados, endereços de redes, restrições do 
sistema, aplicativos e bibliotecas que acompanham o sistema. 
<Lembrete início> 
Quando se está alterando a arquitetura de um sistema já existente, é interessante 
que se tenha um modelo em camadas para melhorar a orientação. A Figura 60 
representa as estruturas de uma aplicação J2EE divididas por camadas, facilitando a 
interpretação da arquitetura. 
 Figura 60: Camadas numa aplicação J2EE. 
 
15 
 
Fonte: VALLE (2007). 
https://www.devmedia.com.br/imagens/javamagazine/medvcjeefig01.jpg 
<Lembrete fim> 
8.1.1 Evolução da arquitetura do sistema 
Os principais sistemas antigos, mesmo os legados, foram desenvolvidos com base 
em arquiteturas centralizadas, que normalmente são sistemas multiusuários formados 
por um servidor e múltiplos terminais acoplados por interface de E/S. O servidor 
normalmente não é estruturado em camadas, pois possui a aplicação, a base de dados 
e a apresentação integrados com alto acoplamento, logo, a apresentação é feita de 
forma simples, normalmente em modo texto. O funcionamento de um terminal de 
computador ocorre da seguinte forma: o terminal recebe ou capta dados de um 
periférico, o terminal requisita a atenção do servidor, envia os dados para o servidor, os 
dados são processados no servidor e devolvidos ao terminal. 
<Observação início> 
Os terminais são periféricos conectados normalmente por uma interface multi 
USB ou Ethernet, que recebem o nome de terminais “burros”, por não possuir 
CPU. Estes terminais podem ser: conjunto de monitor de vídeo e teclado, catracas, 
sensores digitais e outros dispositivos. 
<Observação fim> 
Atualmente a sequência evolutiva da arquitetura é o desenvolvimento com base na 
arquitetura servidor/cliente (ou do inglês server/client) e posteriormente para uma 
configuração de arquitetura de sistemas distribuídos. 
A arquitetura servidor/cliente possui computadores conectados em rede por um 
Sistema Operacional de Rede (SOR). Os servidores são divididos em camadas, sendo 
que, dependendo da capacidade do servidor, esse pode fornecer serviços da camada 
de apresentação, da camada da aplicação e da camada de integração em um único 
computador ou vários computadores, como pode ser visto na Figura 61. O servidor 
atende as requisições de dados e de processamento em baixo nível tanto para a 
apresentação como para a aplicação. Os computadores clientes (ou estações 
computacionais) dividem o processamento da aplicação e da apresentação com o 
servidor, permitindo assim um processamento com maior desempenho. 
Na Figura61 são observados no alto nível de rede os computadores servidores, de 
Telas na camada de apresentação, serviços da Aplicação e Web na camada da 
aplicação (ou negócios) e serviços SGBD na camada de integração. Os clientes que se 
utilizam dos serviços estão no baixo nível da rede. 
Figura 61: Arquitetura servidor/cliente. 
16 
 
 
Os frameworks de aplicações Web (WAFs, do inglês web application 
frameworks) são um tipo de framework mais recente e muito 
importante. WAFs que apoiam a construção de sites dinâmicos estão 
amplamente disponíveis. Geralmente, a arquitetura de um WAF é 
baseada no padrão Composite do MVC (Modelo-Visão-Controlador) 
(GAMMA et al., 1995. apud SOMMERVILLE, 2011, p. 301). 
 
A evolução da arquitetura se baseia em modificar a arquitetura de um sistema, a 
partir da arquitetura centralizada (centrada em dados), passando para uma arquitetura 
servidor/cliente e, por fim, para uma arquitetura de sistema distribuído. 
Nos sistemas distribuídos a interface com o usuário, as funcionalidades e as bases 
de dados do sistema, ficam distribuídas pelos computadores servidores do ambiente 
operacional. 
Uma estratégia comum da evolução da arquitetura, para sistemas legados em 
especial, é encapsular o sistema legado como um servidor e implementar uma interface 
com o usuário distribuída, que acesse a funcionalidade do sistema (por meio da 
tecnologia middleware de propósito especial. 
Na evolução da arquitetura o engenheiro de software deverá observar as mudanças 
apresentadas na Figura 62: 
Figura 62: Mudanças no sistema que acompanham a evolução da arquitetura. 
APRESENTAÇÃO Exibição e organização de telas. 
VALIDAÇÃO DOS DADOS Checagem das entradas e saídas de/para o usuário. 
17 
 
CONTROLE DE INTERAÇÕES 
Controle das operações realizadas pelo usuário e ordem de 
sequência de telas. 
APLICAÇÃO Implementação dos serviços da aplicação. 
BANCO DE DADOS Armazenamento dos dados e gerência dos dados armazenados. 
Nos sistemas distribuídos o SOR é fracamente acoplado, é usado para sistemas 
heterogêneos de multicomputadores. Embora o gerenciamento do hardware seja um 
importante assunto para o SOR, a distinção entre sistemas operacionais tradicionais e 
de rede, vem do fato dos serviços de redes ficarem disponíveis a clientes remotos. 
Para um sistema operacional de rede ser configurado para um sistema distribuído, 
melhorias aos seus serviços são necessárias de maneira que o suporte para 
transparência de distribuição seja provido, ou seja, os recursos compartilhados dos 
computadores são acessados pelos usuários de forma transparente independente de 
sua identificação ou localização. Estas melhorias são implementadas com a tecnologia 
middleware, que é o coração dos sistemas distribuídos modernos. 
A Figura 63 mostra transparência no acesso a um típico sistema distribuído. O cliente 
quando acessa a internet inicialmente se conecta ao seu provedor de serviços web, 
contudo o cliente quando está navegando pela internet não se preocupa de onde vem 
os dados ou mesmo de algumas aplicações, como por exemplo o acesso a nuvem 
(cloud computing). 
Figura 63: Transparência de acesso do cliente ao sistema, comum em 
sistemas distribuídos. 
 
<Saiba mais início> 
Observe a Figura 64, o middleware é o principal componente de um sistema 
distribuído. É uma camada adicionada ao sistema operacional de rede, que fica 
localizada entre as camadas de Aplicação e a camada de Transporte, oferecendo 
18 
 
um alto nível de abstração. Assim, tais aplicações não fazem uso direto da 
interface de programação oferecida pelos sistemas operacionais de rede, permite 
que processos em diferentes máquinas troquem mensagens, ou do acesso ao 
sistema de arquivo local, o que aumenta a transparência de distribuição. 
Figura 64: Implementação da camada de rede middleware para um sistema distribuído. 
 
<Saiba mais fim> 
Sommerville (2011) recomenda os requisitos não funcionais aplicados na arquitetura 
do software, que estabelecem o estilo e a estrutura da arquitetura particular que você 
escolhe. Os principais requisitos não funcionais recomendados são: Desempenho; 
Proteção; Segurança; Disponibilidade; e Manutenção. 
8.1.2 Arquiteturas multiprocessadas e multicomputadorizadas 
No multiprocessamento existe mais que um processador funcionando na mesma 
memória, mas executa processos simultâneos. Em um sistema de multiprocessamento 
são empregados múltiplos processadores que executam mais de uma atividade no 
mesmo tempo. O processamento de dados executado regularmente faz com que estes 
dados sejam processados concorrentemente por processadores diferentes. 
O multiprocessamento fornece uma sincronização entre os múltiplos processadores 
para acessarem a memória de forma comum, de modo que nenhuma parte dos dados 
seja negligenciada. 
A arquitetura de multiprocessamento como é mostrada na Figura 65 fornece um 
ambiente de multiprogramação, permitindo que múltiplos programas residam em áreas 
separadas da memória principal ao mesmo tempo. Com esta aproximação, é possível 
manter dois ou mais empregos simultaneamente na execução ou em estados da 
execução. Os sistemas de computador multiprocessado são caros e encontraram o seu 
uso em dados complexos que processam aplicação em ponto flutuante e em alta 
velocidade. 
19 
 
Tanenbaum (2013) explica no texto a seguir como funciona o sistema de 
multiprocessamento da CPU Core i7 que usa como base a Figura 65. 
<citação direta início> 
A CPU Core i7 é um processador em um único chip manufaturado com 
quatro ou mais núcleos em uma única pastilha de silício. A organização 
de alto nível de um processador Core i7 tem suas próprias caches: L1 
privada para instrução e dados, e L2 unificada e privada para 
armazenamento de lista de instruções. Os processadores são conectados 
às caches privadas com conexões ponto a ponto dedicadas. O próximo 
nível da hierarquia de memória é a cache de dados L3 compartilhada e 
unificada (TANENBAUM, 2013, p. 449). 
 
Figura 65: Arquitetura do multiprocessador em um único chip do Core i7. 
 
Fonte: TANENBAUM (2013), p. 449. 
Uma arquitetura multicomputadorizada é formada por um aglomerado de 
computadores, que quando conectados em uma rede local, podem constituir um cluster. 
O ambiente multicomputacional é formado por um conjunto de computadores, que se 
utiliza um tipo especial de sistema operacional classificado como sistema distribuído. É 
construído muitas vezes a partir de computadores convencionais, ligados em rede que 
se comunicam através do SOR. O cluster de computador trabalha como se fosse um 
único computador de grande porte. 
A arquitetura da Figura 66 mostra uma estratégia de sistemas escaláveis da LC (o 
"Livermore Model") ao hardware de commodities executando o sistema operacional 
Linux de código aberto. 
Figura 66: Clusters Linux no Lawrence Livermore National Laboratory (LLNL). 
20 
 
 
Fonte: BARNEY (2016). 
https://computing.llnl.gov/tutorials/linux_clusters/images/liv_model2.gif 
Os sistemas de cluster Linux LC mostrado na Figura 67 é baseado no sistema Zin, 
com rede Ccah, possui 2.916 nós, 46.656 núcleos e 961.1 Tflops. 
Figura 67: Sistemas TLCC2 consistem em vários clusters baseados no sistema 
Zin com processadores Intel Xeon E5-2670 (Sandy Bridge EP), 
QDR Infiniband. 
 
Fonte: BARNEY (2016). 
https://computing.llnl.gov/tutorials/linux_clusters/images/zin.440pix.jpg 
<Saiba mais início> 
Consulte a referência a seguir: 
21 
 
BARNEY, B. Visão geral do Linux Clusters. Lawrence Livermore National Laboratory. 
Departamento de Energia dos EUA, 2016. Disponível em: 
https://computing.llnl.gov/tutorials/linux_clusters/. Acesso em: 3 mar. 2021. 
<Saiba mais fim> 
8.2 Testes e diagnósticos 
A disciplina de Testes é crítica para o desenvolvimento de software. Frequentemente, 
as atividades de testes inserem tantos defeitos em um produto quanto a própria 
implementação (PAULA FILHO, 2015). 
<Lembrete início> 
A Figura 6 no “Tópico1.5 Características do software – Unidade I” faz um 
comparativo sobre as falhas do software e mostra que os defeitos do software 
ocorrem com as mudanças no software, devido a diversas situações que ocorrem 
no ciclo de vida do software. 
Em Princípios de testes no “Tópico 7.2.4 Princípios de Construção – Unidade IV” 
destaca que “o objetivo do teste de software é rastrear o código em busca de 
erros. O bom teste é aquele com alta probabilidade de encontrar erros [..]. 
<Lembrete fim> 
A premissa da necessidade de fazer testes, extrair resultados e solucionar ou evitar 
o problema é a arte do engenheiro de software (veja a Figura 68) não é verdadeira, mas 
muitos dos erros do software transmitem este impacto. Ninguém gosta disto, mas com 
certeza todos já passaram por algo semelhante. Quando não for uma mudança a ser 
implementada, a maioria das falhas do software começa assim com alguma mensagem 
de erro impactante. 
Figura 68: Erro absurdo.
 
Fonte: ALLAN (2011). 
 
“Huum, que erro estranho. Aqui diz para deletar o Windows!” 
“E se for verdade? Meus dados são mais importantes que o 
sistema operacional?” 
“E se não for verdade? Seria o hardware ou um vírus?” 
 
A Figura 68 mostra como a história começa se não houver testes do software. Não 
tem jeito. A equipe se reúne e decide que tem que resolver este problema. A gerência 
afirma: “Temos que seguir os procedimentos de testes e diagnósticos para resolver e 
evitar que este problema ocorra novamente”. 
22 
 
Planeje antes e dependendo da urgência relaxe um pouco para meditar sobre o erro 
com o som “Windows Error Remix 2014”, Jefferson Allan. Disponível em 
https://www.youtube.com/watch?v=djlot1_Eots. Acesso em 27/07/2020. 
Os testes e diagnósticos do software têm como objetivo validar a aplicação, verificar 
se está funcionando de acordo, se atende aos requisitos do usuário, funcionais, não-
funcionais e do sistema em número e grau. Diversas técnicas podem ser aplicadas em 
diferentes momentos e de diferentes formas para validar os aspectos principais do 
software. Neste livro serão abordadas duas técnicas de destaque no contrato do 
software, quais sejam, os Testes Alfa e Beta, e os Testes Caixa-branca e Caixa-preta. 
8.2.1 Testes Alfa e Beta 
Quando um software é construído especificamente para um cliente, é normal ele 
passar por um Teste de Aceitação. Esse teste por ser conduzido pelo próprio usuário, 
pode passar por uma bateria de testes levando às vezes semanas, ou mesmo meses, 
para ser finalizado. No entanto, se o software é feito para vários clientes, o Teste de 
Aceitação não é viável de ser realizado por cada usuário principal. Por isso, a estratégia 
melhor a ser aplicada é a dos Testes Alfa e Beta. 
Para a realização do Teste Alfa existe a necessidade de um ambiente controlado. 
Ou seja, os usuários são levados a testar o software desde seus estágios iniciais de 
instalação, até a sua operação completa. Tudo realizado num ambiente especial, onde 
ficam registradas todas as impressões dos usuários, suas reações às interfaces 
homem-máquina, e assim por diante. 
O Teste Beta é realizado exclusivamente no habitat do usuário. É realizado 
tipicamente sem a presença dos desenvolvedores, porém acompanhados por esses. 
Ao contrário do Teste Alfa o ambiente de teste é dito descontrolado. Os usuários 
envolvidos no teste normalmente possuem um perfil crítico e colaborador. Em alguns 
casos o software é fornecido a usuários de forma que os desenvolvedores consigam do 
próprio usuário suas observações, questionamentos e sugestões, registrado de forma 
minuciosa e com riqueza de detalhes. 
8.2.2 Testes Caixa-preta e Caixa-branca 
Para um sistema encomendado ou configurado especificamente para um 
determinado negócio, o processo de Verificação e Validação (V&V) tem como objetivo 
demonstrar que um software atende aos requisitos especificados (verificação) e que 
realmente atendam as expectativas dos stakeholders (validação). Os testes Caixa-
Preta e Caixa-Branca são guiados pelo código-fonte, respectivas métricas de software 
aplicáveis e se realmente estão atendendo aos requisitos com um bom desempenho e 
segurança. 
O Teste Caixa-preta também chamado de Teste Comportamental visa identificar 
as falhas em seu comportamento externo com o foco nos requisitos funcionais, 
conduzidos na interface do software e o Teste Caixa-branca também, chamado de 
Teste Estrutural, é focado nos possíveis erros internos na estrutura dos componentes 
do sistema. 
23 
 
<citação direta início> 
Conhecendo o funcionamento interno de um produto, podem ser 
realizados testes para garantir que “tudo se encaixa”, isto é, que as 
operações internas foram realizadas de acordo com as especificações e 
que todos os componentes internos foram adequadamente exercitados. 
A primeira abordagem de teste usa uma visão externa e é chamada de 
teste caixa-preta. A segunda abordagem requer uma visão interna e é 
chamada de teste caixa-branca (PRESSMAN, 2011, pgs. 430-431). 
 
Inicialmente para realizar os testes caixa-preta ou testes caixa-branca é sugerido que 
se crie casos de testes, que possam ser especificados em uma tabela como é mostrada 
abaixo. Para melhor referência observe na Figura 69 a tabela de casos de testes. A 
tabela se refere aos testes caixa-preta. Na primeira coluna mostra os códigos de casos 
de testes representados pela sigla CTP. Na segunda coluna os códigos de referência 
para os testes, com as siglas RF para requisito funcional e RS para requisito do sistema 
e na terceira coluna a especificação do teste. 
Figura 69: Tabela de casos de testes que associa o caso de teste com os requisitos específicos do 
produto. 
Caso de 
teste 
Referência Especificação 
CTP01 
RF01, 
RF01.1, 
RF01.2. 
CTP01: Testes MVC – apresentação de relatórios: 
1. Ver em menu de Relatórios os relatórios disponíveis e se estão de acordo 
com os requisitos. 
2. Verificar exibição de relatórios se está de acordo com os requisitos e 
registros de dados. 
3. Textos e mensagens deverão ser exibidos em sua integra. 
4. Revisar cálculos. 
CTP02 
RS01, RS02, 
RS03. 
CTP02: Ambiente do usuário. 
1. Tipo de computador esta de acordo com requisitos. 
2. Sistema operacional e Navegador estão de acordo com os requisitos do 
sistema 
 
O principal objetivo do Teste Caixa-Preta é testar as operações ligadas aos requisitos 
funcionais “[..] o Teste Caixa-Preta tenta encontrar erros nas seguintes categorias 
(PRESSMAN, 2011)”: 
➢ Funções incorretas ou omitidas; 
➢ Erros de interface; 
➢ Erros de estrutura de dados ou de acesso à base de dados pelo usuário; 
24 
 
➢ Erros de comportamento ou desempenho; e 
➢ Erros de iniciação e finalização do software. 
Principais técnicas utilizadas nos Testes de Caixa-Preta: 
➢ Métodos de teste baseados em grafo de fluxo: 
 Modelagem de fluxo de transação – sequência de passos de uma determinada 
transação. 
 Modelagem de estado finito – situação final das operações e das estruturas de dados, 
com objetivo de reduzir redundâncias de códigos e dados. 
 Modelagem do fluxo de dados – modela a sequência de tratamento dos dados entre 
um objeto e outro. 
 Modelagem no tempo – especificação de tempos na execução de programas. 
➢ Particionamento de equivalência – método que divide o domínio de entrada de um 
programa em classes de dados. 
➢ Análise de valor-limite – avaliação dos limites dos campos de entradas de dados. 
➢ Teste de Matriz Ortogonal – refere-se ao número de parâmetros de entrada em relação 
ao número de ligações às funções operacionais. 
O teste caixa-branca, também chamado de teste da caixa-de-vidro, é uma filosofia 
de projeto de casos de teste que usa a estrutura de controle descrita como parte do 
projeto no nível de componentes para derivar casos de teste (PRESSMAN, 2011). 
Uma prática comum no teste caixa-branca é à aplicação do Teste do Caminho 
Básico, muito utilizado também no teste caixa-preta. Esse teste tem como objetivo 
derivar casos de testes,orientados por meio do caminho de execução do programa. 
Para isso é usado um grafo de fluxo. Uma das notações de grafo de fluxo, sugeridas 
por Pressman (2007) é para acompanhamento da codificação como é mostrado de 
forma adaptada na Figura 70. 
Figura 70: Simbologia de comandos estruturados para o grafo de fluxo. 
 
FONTE: Adaptada. Pressman (2007), p. 432. 
25 
 
<Saiba mais início> 
Leia a referência a seguir: 
FELIZARDO, K. R. Técnicas de VV&T – Validação, Verificação e Teste. 
Linhadecódigo, [s.d.]. Disponível em: 
http://www.linhadecodigo.com.br/artigo/492/tecnicas-de-vvampt-validacao-verificacao-
e-teste.aspx. Acesso em: 3 mar. 2021. 
< Saiba mais fim> 
8.3 Manutenção do software 
Os níveis de manutenção do software variam do negócio para a tecnologia e 
funcionam basicamente com as abordagens top-down e bottom-up. 
<Lembrete início> 
Em Princípios de testes no “Tópico 7.2.4 Princípios de Construção – Unidade IV” foram 
apresentadas as abordagens top-down e bottom-up para testes de software. 
<Lembrete fim> 
A abordagem top-down e bottom-up para manutenção difere do teste de software no 
aspecto de que: o teste de software tem como objetivo validar o software para aceite do 
cliente e na manutenção tem como objetivo fazer mudanças no software para reparar 
defeitos, adaptar o software a um novo ambiente operacional ou fazer acréscimos de 
funções. 
Com base nos requisitos do usuário os níveis de manutenção iniciam pela interface 
do usuário, na Figura 71 representada pelo bloco software/sistema que responde pelos 
resultados operacionais do software, apesar de que neste modelo foi escolhida a 
característica funcionalidade. Esta escolha pode ser de outras características também, 
tais como: desempenho, usabilidade e outras, definidas como requisitos não-funcionais 
do software em análise. 
Figura 71: Níveis de abordagens top-down e bottom-up para mudanças no software quanto a 
funcionalidade. 
26 
 
 
Uma outra abordagem de manutenção do software pode ser orientada com base na 
Qualidade do produto da engenharia de software: ISO/IEC 9126 e ISO 25000 (NBR 
9126-1 ABNT, 2003) como mostra em destaque o texto abaixo. 
A Qualidade do produto da engenharia de software (ISO/IEC 9126) é 
composta em duas partes: 1. Qualidade interna e qualidade externa; e 2. 
Qualidade em uso. 
 Os atributos de qualidade externa e interna são categorizados em 
seis características: funcionalidade; confiabilidade; usabilidade; 
eficiência; manutenibilidade; e portabilidade. 
 Os atributos de qualidade em uso são categorizados em quatro 
características: eficácia; produtividade; segurança; e satisfação. 
(NBR 9126-1 ABNT, 2003). 
 
<Observação início> 
Na organização do desenvolvimento de software com base na ISO 9126 e ISO 
25000 (NBR 9126-1 ABNT, 2003), para garantir uma semântica comum no projeto 
do software às métricas de qualidade são chamadas de características e sub-
características. 
<Observação fim> 
8.3.1 Fundamentos da manutenção 
O processo de mudança do software ocorre em todo o seu ciclo de vida. Várias 
mudanças são feitas: adaptações a novos ambientes operacionais, customização do 
software com base nas mudanças de requisitos, erros de codificação, adaptação de 
novas interfaces, enfim tudo o que é necessário para manter o software operacional e 
adaptado a novas tecnologias. 
27 
 
<Exemplo de aplicação início> 
Estudo de caso: Leis de Lehman de 1985 (apud PRESSMAN, 2011) 
As leis de Lehman foram produzidas com base no estudo da mudança em sistemas. 
Foram examinados o crescimento e a evolução de uma série de grandes sistemas e 
software para chegar nessas leis. Duas destas leis se destacam: 
 Mudança Contínua: a qual afirma que um programa utilizado em um ambiente 
do mundo real necessariamente tem de ser modificado ou se tornará de 
maneira progressiva menos útil nesse ambiente; 
 Aumento da Complexidade: à medida que um programa em evolução se 
modifica, sua estrutura tende a se tornar mais complexa. Recursos extras 
precisam ser dedicados para preservar e simplificar a estrutura. 
<Exemplo de aplicação fim> 
Com base nas definições de Pressman (2011) e Sommmerville (2011) a manutenção 
do software ocorre durante todo o ciclo de vida operacional do software, motivada por 
três tipos fundamentais mostrados na tabela da Figura 72. 
Figura 72: Tipos fundamentais de manutenção. 
Tipos de Manutenção Descrição 
Manutenção para reparar os 
defeitos no software 
A correção de erros de codificação é um processo 
relativamente barato comparado com os erros de projeto. 
Os maiores custos estão nos erros de requisitos, pois irá 
implicar num reprojeto. 
Manutenção para adaptar o 
software a um ambiente 
operacional diferente 
É a típica manutenção de adaptação sofrida por alguma 
alteração no software de apoio tal como o Sistema 
Operacional, Banco de Dados ou mesmo o próprio hardware. 
Manutenção para fazer 
acréscimos à funcionalidade 
do sistema ou modificá-la. 
Na alteração dos requisitos, devido a mudanças 
organizacionais, ou nos negócios, que são bastante constantes, 
ocorre a manutenção mais comum entre todas as outras. 
Fonte: SOMMMERVILLE (2011), p. 170. 
8.3.2 Procedimentos de manutenção 
O Processo de Manutenção é normalmente iniciado pelos pedidos de mudança por 
parte dos vários usuários que utilizam o sistema. Isso pode ser de maneira informal, ou 
preferencialmente formalizado, com uma documentação estruturada. Em seguida é 
verificado o custo e o impacto das mudanças sugeridas e com as mudanças aprovadas, 
um novo release do sistema é planejado. 
28 
 
No desenvolvimento, o bom planejamento reduz em custo e tempo à entrega 
operacional do sistema. Observe a Figura 73. O Sistema 1, que embora tenha custos 
maiores de planejamento, exigiu no ciclo de desenvolvimento um custo e período menor 
de manutenção. Consequentemente, o custo e tempo total de entrega do Sistema 1 são 
menores que o do Sistema 2. O Sistema 2 foi planejado mais rapidamente com custo e 
tempo inferiores ao do Sistema 1, porém exigiu no período de manutenção um maior 
custo e tempo. O resultado final é que o Sistema 1, por ter um maior planejamento, 
obteve sobre o Sistema 2 um menor custo e tempo na entrega do sistema. 
Figura 73: Gráfico de custo e tempo entre dois sistemas. O Sistema 1 com ênfase maior no 
planejamento e o Sistema 2 com ênfase maior na manutenção. 
 
Existem equipes de manutenção especializadas em atuarem na Manutenção 
Corretiva, que ocorre quando existi uma requisição formal do usuário para solucionar 
um problema. No entanto, a melhor estratégia é a Manutenção Preventiva, 
oportunidade em que se detectam possíveis falhas e previne-se de eventuais erros. Em 
ambos os casos a equipe técnica deverá registrar a mudança que deverá ser feita no 
sistema, realizar uma força tarefa para dar manutenção e, possivelmente, fornecer 
melhorias preventivas. 
8.3.3 Prevenção de defeitos com Cleanroom 
O modelo de desenvolvimento Cleanroom é uma filosofia herdada do 
desenvolvimento de circuitos integrados. Este modelo se baseia na prevenção de 
defeitos ao invés da remoção de defeitos. Utiliza uma especificação formal, usando um 
modelo de transição de estados baseada no desenvolvimento incremental com 
inspeções rigorosas. Observe a Figura 74. 
Figura 74: Processo de desenvolvimento Cleanroom. 
 
Fonte: SOMMERVILLE ( 2003, p. 370). 
29 
 
8.4 Gerenciamento de configuração do software 
O gerenciamento de configuração (CM, do inglês configuration 
management) está relacionado com as políticas, processos e 
ferramentas para gerenciamento de mudanças dos sistemas de 
software. Você precisa gerenciar os sistemas em evolução, pois é fácil 
perder o controle de quais mudanças e versões de componentes foram 
incorporadas em cada versão de sistema (SOMMERVILLE, 2011, p. 475). 
Mostrado na tabela da Figura 75, Sommerville (2011) sugere quatro principais 
atividades do gerenciamento de configuração. 
Figura75: Principais atividades do gerenciamento de configuração do software. 
ATIVIDADES DESCRIÇÃO 
1. Gerenciamento de 
mudanças 
Com as constantes mudanças exercidas em cima dos softwares, as 
mesmas devem ser registradas e aplicadas ao sistema de forma 
prática, econômica e que satisfaça o cliente. 
2. Gerenciamento de 
versões 
Consiste em acompanhar e identificar o desenvolvimento das 
diferentes versões do sistema. 
3. Construção de 
sistemas 
Processo de compilar e ligar componentes de software em um 
programa que é executado em uma configuração específica. 
4. Gerenciamento de 
releases 
Envolve a preparação do software para o release externo e manter o 
acompanhamento das versões de sistema que foram liberadas para 
uso do cliente 
Fonte: SOMMERVILLE (2011), p. 476. 
8.4.1 Gerenciamento de mudanças 
Durante os testes de sistemas, ou ainda na manutenção depois da entrega do 
software ao cliente, os procedimentos de Gerenciamento de Mudanças devem ser 
aplicados. Sommerville (2011) orienta que o principal passo desse processo é a 
utilização de um formulário intitulado de Requisição de Mudança (ou do inglês Change 
Request Form (CRF)), mostrado na Figura 76. O formulário de Requisição de mudança 
é o registro de mudança no software que precede os procedimentos de manutenção. 
Figura 76: Modelo de formulário de Requisição de Mudança. 
Formulário de Requisição de Mudança 
Projeto: SuperBlue Código da mudança: 190729 2106 
Requisitor da Mudança: Edson Moreno Data: 29/07/2019 
 
30 
 
Requisito de mudança 
Quando ocorre a remoção de um valor na tabela de custos fixos, o valor do custo total não é 
alterado. 
Análise da mudança 
Analista: Milton del Rio Blas Data: 29/07/2019 
Componente afetado: Algoritmo de cálculo do custo total. 
 
Avaliação 
Haverá necessidade de mudança no código de cálculo do custo total na lista de custo fixo. 
 
Prioridade: Alto Prazo estimado de entrega: 3 dias 
 
Autorizada mudança: SIM ( X ); NÃO ( ); Aguardar para o dia ___ / ___ / _____. 
 
 Gerente Responsável: ____________________________ 
 
Um formulário de Requisição de Mudança pode conter as seguintes informações: 
registro da solicitação da mudança, recomendações, custos, datas de solicitação, 
aprovação, implementação e validação da mudança. É sugerido também existir um 
espaço para um esboço, mostrando como a mudança deverá ser implementada. 
Em ambiente de manutenção, esse formulário no formato eletrônico e com um 
pequeno banco de dados, oferecerá consultas rápidas, por permitir criar um histórico 
das mudanças que ocorrem ao longo do ciclo de vida operacional do software. As 
mudanças que ocorrem no software são registradas como versões, que é o próximo 
assunto a ser abordado. 
8.4.2 Gerenciamento de versões 
As mudanças ocorrem em todo o ciclo de vida do software. Quando aumentam o 
nível de complexidade e de confusão, compromete o controle na entrega do produto ou 
subproduto do software. O gerenciamento de versões acompanha e identifica o 
desenvolvimento das diferentes versões de um determinado sistema. Este processo é 
chamado de versionamento. 
As versões são criadas para testes ou desenvolvimento interno e não são liberadas 
para o cliente. 
A Figura 77 mostra que no controle de versões podem ser adotadas algumas 
técnicas básicas para a devida identificação de componente. 
31 
 
Figura 77: Técnicas básicas de numeração e indentificação da versão aplicadas no gerenciamento 
de versões. 
TÉCNICAS BÁSICAS DESCRIÇÃO 
Numeração de versões 
É o esquema de identificação mais comum. Atribui-se um número, 
explícito e único, de versão ao componente. 
Exemplo: Versão 3.21 – o dígito (3) identifica mudança de estrutura, 
o dígito (2) indica inserção de uma funcionalidade e o dígito (1) 
indica que houve a implementação de uma mudança. 
Identificação baseada em 
atributos 
Cada componente recebe um nome e um conjunto de atributos, que 
não é único em todas as versões. Exemplo: Versão TEC01_1 - TEC – 
representa o componente teclado, (01) inserção de um mapa de 
caracteres e (_1) indica que houve a implementação de uma 
mudança. 
Identificação orientada a 
mudanças 
Além do anterior é associado uma ou mais solicitações de mudança. 
Exemplo: CAR_04 – Carlos requisita uma quarta mudança. 
<Exemplo de aplicação início> 
Controle de versão na identificação baseada em atributos 
Padrão de numeração de versão: X.Y.Zzzz, onde: 
 X – corresponde a uma mudança de estrutura do software. 
 Y – inserção ou adaptação de novas funções ou funcionalidade. 
 Zzzz – adaptações, correções ou implementações no código fonte. 
“Estou agora abrindo meu Windows 10. Hoje dia 28/07/2020, verifico em Informações 
do sistema a versão 10.0.18363”. Se for aplicar o conceito de identificação baseada em 
atributos, isto nos leva a seguinte análise: 
X = 10 – indica a 10ª geração de um projeto de arquitetura do Windows. 
Y = 0 – indica que não houve inserções ou adaptações de novas funções ou 
funcionalidade no projeto original. 
Zzzz = 18363 – indica as mudanças ocorridas no código fonte. 
 
<Exemplo de aplicação fim> 
Observe a Figura 78, o controle de versões (V 1.0, V 1.1 e assim por diante) 
acompanham as mudanças realizadas pelos desenvolvedores e os releases (Rel 1.0 e 
Rel 1.1) correspondem às versões aprovadas para distribuição ao usuário. A numeração 
do release independe da numeração da versão, porém neste caso pode se considerar 
o primeiro dígito como uma mudança de estrutura. Observe o grafo de controle. 
32 
 
Figura 78: Modelo de grafo de controle aplicado na numeração de versões. 
 
8.4.3 Construção de sistemas: entrega 
A construção de sistemas é o processo da criação de um sistema completo, 
executável por meio da construção e ligação dos componentes de sistema, bibliotecas 
externas, arquivos de configuração, etc (SOMMERVILLE, 2011). 
O processo de construção do sistema na entrega ao cliente é um processo complexo, 
porque além de se tomar todas as precauções constantes do projeto de implantação e 
que são inúmeras, é necessário assegurar também que o ambiente operacional do 
cliente seja mantido, quando este existir. 
O ambiente de desenvolvimento é diferente do ambiente do cliente. Para verificação 
é interessante construir ou simular todo o ambiente operacional do cliente como 
plataforma de testes. Para configurações do sistema é importante que no sistema do 
cliente estejam todas as ferramentas, bibliotecas e frameworks utilizados no 
desenvolvimento. 
Toda a versão gerada deve ser registrada e armazenada. Essa prática facilita uma 
depuração detalhada das mudanças ocorridas no software ou em alguma busca de 
algum componente ou algoritmo já produzido. 
De acordo com Sommerville (2011) a construção de sistemas envolve a montagem 
de uma grande quantidade de informações sobre o software e seu ambiente 
operacional, mostrada na Figura 79. 
Figura 79: A construção de sistemas. 
33 
 
 
Fonte: SOMMERVILLE (2011), p. 485. 
8.4.4 Gerenciamento de releases 
Sempre existiram muitas versões de um sistema, mais do que releases, porque o 
release é a versão do software ou do sistema produzido que é autorizada para distribuir 
ao cliente, como pode ser visto também na Figura 71 no “Tópico 8.4.2 Gerenciamento 
de versões – Unidade IV”. O lançamento do release é acompanhado de vários fatores 
técnicos e organizacionais, tais como: 
 Programa de instalação. 
 Manual técnico e do usuário. 
 Arquivos de configurações. 
 Bibliotecas, arquivos de dados e scripts de registros. 
REFERÊNCIAS 
Textuais 
ABNT. NBR 9126/14598 – Guia para utilização das normas sobre avaliação de 
qualidade de produto de software – NBR ISO/IEC 9126 e NBR ISO/IEC 14598. Curitiba: 
ABNT, 1999. 
ABNT. NBR ISO/IEC 9126-1 – Engenharia de software – Qualidade de produto. Rio 
de Janeiro: ABNT, 2003. 
ALLAN, J. Windows Error Remix 2014, 13 fev. 2011.https://www.youtube.com/watch?v=djlot1_Eots. Acesso em: 27 jul. 2020. 
BAHN, C. IEEE 830-1998: prática recomendada do IEEE para especificações de 
requisitos de software. Comitê de Normas de Engenharia de Software e Sistemas, 20 
out. 1998 [reafirmado em 9 dez. 2009]. Disponível em: 
https://standards.ieee.org/standard/830-1998.html. Acesso em: 3 mar. 2021. 
34 
 
BARNEY, B. Visão geral do Linux Clusters. Lawrence Livermore National Laboratory. 
Departamento de Energia dos EUA, 2016. Disponível em: 
https://computing.llnl.gov/tutorials/linux_clusters/. Acesso em: 3 mar. 2021. 
BECK, K. et al. Manifesto para Desenvolvimento Ágil de Software. 
Agilemanifesto.org, 2001. Disponível em: 
https://agilemanifesto.org/iso/ptbr/manifesto.html. Acesso em: 3 mar. 2021. 
BEZERRA, E. Princípios de análise e projetos de sistemas com UML. Rio de Janeiro: 
Campus-Elsevier, 2003. 
BOOCH, G. UML: guia do usuário. São Paulo: Campus-Elsevier, 2002. 
CAMARGO, R. Extreme Programming: quais principais regras e valores? Robson 
Camargo Projetos e Negócios, 3 out. 2019. Disponível em: 
https://robsoncamargo.com.br/blog/Extreme-Programming. Acesso em: 3 mar. 2021. 
COIMBRA, Rodrigo. Ag i l e Me t h o d s : C r y s t a l . Projetos e Ti, 0 4 / 0 5 / 2 0 2 0 . 
D i s p o n í v e l e m https://projetoseti.com.br/agile-methods-crystal/. Acesso em 
09/03/2021. 
COULOURIS, G. et al. Sistemas distribuídos: conceitos e projeto. São Paulo: 
Bookman, 2007. 
DAD, K.; JAMIL, A. N. Enhanced Facilitated Application Specification Techniques 
(eFAST). In: IEEE/ACIS INTERNATIONAL CONFERENCE ON COMPUTER AND 
INFORMATION SCIENCE, 5., 2006, Honolulu (USA). Anais […]. Honululu: Institute of 
Eletrical and Eletronics Engineers (IEEE), 2006. Disponível em: 
https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1651985. Acesso em: 3 
mar. 2021. 
DELUCA, J. A importância da engenharia de software: FDD Feature-Driven 
Development. Engenheiro do Software, 7 out. 2008. Disponível em: 
http://engenheirosdosoftware.blogspot.com/2008/10/fdd-feature-driven-
development.html. Acesso em: 3 mar. 2021. 
FELIZARDO, K. R. Técnicas de VV&T – Validação, Verificação e Teste. 
Linhadecódigo, [s.d.]. Disponível em: 
http://www.linhadecodigo.com.br/artigo/492/tecnicas-de-vvampt-validacao-verificacao-
e-teste.aspx. Acesso em: 3 mar. 2021. 
HUMPHREY, W. S. A discipline for software engineering. USA: Addison-Wesley, 
1995. 
FIORINI, S.; STAA, A.; BAPTISTA, R. M. Engenharia de software com CMM. Rio de 
Janeiro: Brasport, 1998. 
FOURNIER, R. Desenvolvimento e manutenção de sistemas estruturados. São 
Paulo: Makron Books, 1994. 
35 
 
INTERNET das coisas: como ela otimiza os recursos na indústria? Digicomp 
Engenharia e Tecnologia, 2019. Disponível em: https://digicomp.com.br/internet-das-
coisas-como-ela-otimiza-os-recursos-na-industria/. Acesso em: 3 mar. 2021. 
IMOVELWEB. Entenda como a computação gráfica vem sendo utilizada no mercado 
imobiliário. Imovelweb, [s.d.]. Disponível em: 
https://www.imovelweb.com.br/noticias/socorretor/tecnologia-e-inovacao/entenda-
como-computacao-grafica-vem-sendo-utilizada-no-mercado-imobiliario/. Acesso em: 3 
mar. 2021. 
JOHNSON, P. Seis características presentes em todos os softwares bem escritos. 
Computerworld, 25 set. 2015. Disponível em: 
https://computerworld.com.br/2015/09/25/seis-caracteristicas-presentes-em-todos-os-
softwares-bem-escritos/. Acesso em: 3 mar. 2021. 
KOHN, K.; MORAES, C. H. O impacto das novas tecnologias na sociedade: conceitos 
e características da sociedade da informação e da sociedade digital. CONGRESSO 
BRASILEIRO DE CIÊNCIAS DA COMUNICAÇÃO, 30., 2007, Santos (SP). Anais [...]. 
Santos: Sociedade Brasileira de Estudos Interdisciplinares da Comunicação (Intercom), 
2007. Disponível em: 
https://www.intercom.org.br/papers/nacionais/2007/resumos/R1533-1.pdf. Acesso em: 
3 mar. 2021. 
KOSCIANSKI, A. Qualidade de software: aprenda as metodologias e técnicas mais 
modernas para o desenvolvimento de software. 2. ed. São Paulo: Novatec, 2007. 
KRUCHTEN, P. Introdução ao RUP (Rational Unified Process). 2. ed. Rio de Janeiro: 
Ciência Moderna, 2001. 
KRUCHTEN, P. The Rational Unified Process: an introduction. 2. ed. USA: Addison-
Wesley Professional, 2000. 
LAUDON, K. C.; LAUDON, J. P. Sistemas de informação gerencial: administrando a 
empresa digital. 5. ed. São Paulo: Prentice Hall, 2004. 
OBJECT MANAGEMENT GROUP (OMG). Categoria de modelagem de negócios: 
especificações associadas. [s.d.]. Disponível em 
https://www.omg.org/spec/category/business-modeling/. Acesso em: 3 mar. 2021. 
O´BRIEN, JAMES, A. Sistemas de informação e as decisões gerenciais na era da 
internet. São Paulo: Saraiva, 2002. 
PAKISTAN INSTITUTE OF ENGINEERING AND APPLIED SCIENCES (PIEAS). 
Cyclic personal process-software quality-lecture. Paquistão: Pieas, 2017. Disponível 
em: https://www.docsity.com/en/cyclic-personal-process-software-quality-lecture-
slides/80929/. Acesso em: 3 mar. 2021 
PAULA FILHO, W. P. Engenharia de software: fundamentos, métodos e padrões. 3. 
ed. Rio de Janeiro: L TC, 2015. 
36 
 
PAULA FILHO, W. P. O processo Praxis 3.0. Vdocuments, 17 abr. 2015. Disponível 
em: https://vdocuments.site/o-processo-praxis-30-2008-wilson-de-padua-paula-filho-o-
processo-praxis-30-wilson-de-padua-paula-filho-professor-aposentado-dcc-icex-ufmg-
diretor.html, 2008. Acesso em: 3 mar. 2021. 
PFLEEGER, S. L. Engenharia de software. 2. ed. São Paulo: Prentice Hall, 2004. 
PINTO, M. Introdução ao debugging de software. pplware, 10 mar. 2015. Disponível em: 
https://pplware.sapo.pt/software/introducao-ao-debugging-de-software/. Acesso em: 3 
mar. 2021. 
PMI MG. PROJECT MANAGEMENT BODY OF KNOWLEDGE (PMBOK 2000). Um 
guia do conhecimento em gerenciamento de projetos. 2. ed. Minas Gerais: PMI MG: 
Project Management Institute (PMI), 2002. Tradução livre do PMBOK 2000. 
PROJECT MANAGEMENT BODY OF KNOWLEDGE (PMBOK). Um guia do 
conhecimento em gerenciamento de projetos. 4. ed. Atlanta (EUA): Project Management 
Institute (PMI), 2010. 
PROJECT MANAGEMENT BODY OF KNOWLEDGE (PMBOK). Um guia do 
conhecimento em gerenciamento de projetos. 6. ed. Atlanta (EUA): Project Management 
Institute (PMI), 2017. 
PRESSMAN, R. S. Engenharia de software. 5. ed. Rio de Janeiro: McGraw-Hill, 2002. 
PRESSMAN, R. S. Engenharia de software. 6. ed. Rio de Janeiro: McGraw-Hill, 2007. 
PRESSMAN, R. S. Engenharia de software: uma abordagem profissional. 7. ed. Rio 
de Janeiro: McGraw-Hill, 2011. 
REALIDADE aumentada é vista como solução por empresários. Computerworld, 7 
abr. 2020. Disponível em: Disponível em 
https://computerworld.com.br/2020/04/07/realidade-aumentada-e-vista-como-solucao-
por-empresarios/, 07/04/2020. Acesso em: 3 mar. 2021. 
REZENDE, D. A. Engenharia de software e sistemas de informação. 3. ed. ed. Rio 
de Janeiro: Brasport, 2005. 
ROCHA, R. S. Modelagem do processo de desenvolvimento e manutenção de 
software para a UINFOR/UESB. Cadernos do Sep Adm, Bahia, n. 3, p. 91-109, 2006. 
Disponível em: 
http://www.cadernosnpga.ufba.br/viewarticle.php?id=107&layout=abstract. Acesso em: 
3 mar. 2021. 
SERRA, A. P. Modelos de processo pessoal e de equipe. In: CONFERÊNCIA DA 
QUALIDADE DE SOFTWARE, 4., 2011, São Paulo. Anais [...]. São Paulo: Universidade 
São Judas, 2011. Disponível em: https://docplayer.com.br/16240196-Profa-dra-ana-
paula-goncalves-serra-prof-anapaula-saojudas-br.html. Acesso em: 3 mar. 2021. 
37 
 
SHEPHERD, G. Microsoft ASP.NET 3.5: passo a passo. Porto Alegre: Bookman, 
2009. 
SILVA, T. A. S. Modelos UML estáticos vs. dinâmicos. TASSinfo, 19 abr. 2016. 
Disponível em: http://tassinfo.com.br/orientacao-a-objeto/11-modelos-uml-estaticos-vs-
dinamicos. Acesso em: Acesso em: 3 mar. 2021. 
SOMMERVILLE, I. Engenharia de software. 6. ed. São Paulo: Pearson Prentice Hall, 
2003. 
SOMMERVILLE, I. Engenharia de software. 8. ed. São Paulo: Pearson Prentice Hall, 
2006. 
SOMMERVILLE, I. Engenharia de software. 9. ed. São Paulo: Pearson Prentice Hall, 
2011. 
STAIR, R.M.; REYNOLDS, G. W. Princípios de sistemas de informação: uma 
abordagem gerencial. 6. ed. São Paulo: Pioneira Thomson Learning, 2006. 
TANENBAUM, A. S. Organização estruturada de computadores. São Paulo: Pearson 
Prentice Hall, 2013. 
TANENBAUM, A. S. Sistemas distribuídos: princípios e paradigmas. 2. ed. São 
Paulo: Pearson Prentice Hall, 2008. 
VALLE, Marcelo Elias del. Camadas na arquitetura de referência JavaEE. Disponível 
em https://www.devmedia.com.br/camadas-na-arquitetura-de-referencia-javaee/6037, 
2007. Consultado em 25/07/2020. 
VERSOLATTO, F. R. Projeto de sistemas: projeto de sistemas orientado a objetos. 
São Paulo: Sol, 2015. 
Sites 
http://agilemodeling.com 
https://www.ibm.com/br-pt 
https://www.microsoft.com/pt-br 
https://www.sap.com/brazil/index.html 
https://www.totvs.com 
 
 
https://www.ibm.com/br-pt
https://www.microsoft.com/pt-br
https://www.sap.com/brazil/index.html
https://www.totvs.com/

Continue navegando