Buscar

PDS - Leitura Complementar do Conteúdo Online

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 38 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 38 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 38 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 
 
LEITURA SUGERIDA NO FINAL DA AULA 1 DE PROCESSO DE DESENVOLVIMENTO DE SOFTWARE 
 
SOFTWARE 
 
Software1 [sóftuer],2 logiciário ou suporte lógico é uma sequência de instruções a serem seguidas e/ou 
executadas, na manipulação, redirecionamento ou modificação de um dado/informação ou acontecimento. 
"Software" também é o nome dado ao comportamento exibido por essa sequência de instruções quando 
executada em um computador ou máquina semelhante além de um produto desenvolvido pela engenharia 
de software, e inclui não só o programa de computador propriamente dito, mas também manuais e 
especificações. Para fins contábeis e financeiros, o software é considerado um bem de capital.3 
Este produto passa por várias etapas como: análise econômica, análise de 
requisitos, especificação, codificação, teste, documentação, Treinamento, manutenção e implantação nos 
ambientes.4 
 
Software como programa de computador 
 
Um programa de computador é composto por uma sequência de instruções, que é interpretada e executada por 
um processador ou por uma máquina virtual. Em um programa correto e funcional, essa sequência segue padrões 
específicos que resultam em um comportamento desejado.5 
O termo "software" foi criado na década de 1940, e é um trocadilho com o termo hardware. "Hardware", 
em inglês, significa "ferramenta física". Software seria tudo o que faz o computador funcionar excetuando-se a 
parte física dele. 
Um programa pode ser executado por qualquer dispositivo capaz de interpretar e executar as instruções de que 
é formado. 
Quando um software está representado como instruções que podem ser executadas diretamente por 
um processador, dizemos que está escrito em linguagem de máquina. A execução de um software também pode 
ser intermediada por um programa interpretador, responsável por interpretar e executar cada uma de suas 
instruções. Uma categoria especial e o notável de interpretadores são as máquinas virtuais, como a máquina 
virtual Java (JVM), que simulam um computador inteiro, real ou imaginado. 
O dispositivo mais conhecido que dispõe de um processador é o computador. Atualmente, com o barateamento 
dos microprocessadores, existem outras máquinas programáveis, como telefone celular, máquinas de automação 
industrial, calculadora etc. 
 
A construção de um programa de computador 
 
Um programa é um conjunto de instruções para o processador (linguagem de máquina). Entretanto, pode-se 
utilizar linguagens de programação, que traduza comandos em instruções para o processador. 
Normalmente, programas de computador são escritos em linguagens de programação, pois estas foram 
projetadas para aproximar-se das linguagens usadas por seres humanos. Raramente a linguagem de máquina é 
usada para desenvolver um programa. Atualmente existe uma quantidade muito grande de linguagens de 
programação, dentre elas as mais populares no momento são Java, Visual Basic, C, C++, PHP, dentre outras.6 
Alguns programas feitos para usos específicos, como por exemplo software embarcado ou software embutido, 
ainda são feitos em linguagem de máquina para aumentar a velocidade ou diminuir o espaço consumido. Em todo 
caso, a melhoria dos processadores dedicados também vem diminuindo essa prática, sendo a C uma linguagem 
típica para esse tipo de projeto. Essa prática, porém, vem caindo em desuso, principalmente devido à grande 
complexidade dos processadores atuais, dos sistemas operacionais e dos problemas tratados. Muito raramente, 
realmente apenas em casos excepcionais, é utilizado o código de máquina, a representação numérica utilizada 
diretamente pelo processador.7 
O programa é, inicialmente, "carregado" na memória principal.8 Após carregar o programa, o computador 
encontra o Entry Point ou ponto inicial de entrada do programa que carregou e lê as instruções 
sucessivamente byte por byte. As instruções do programa são passadas para o sistema ou processador onde são 
traduzidas da linguagens de programação para a linguagem de máquina, sendo em seguida executadas ou 
diretamente para o hardware, que recebe as instruções na forma de linguagem de máquina. 
 
Tipos de programas de computador 
 
Qualquer computador moderno tem uma variedade de programas que fazem diversas tarefas. 
Eles podem ser classificados em duas grandes categorias:9 
1. Software de sistema que incluiu o firmware (O BIOS dos computadores pessoais, por exemplo), drivers 
de dispositivos, o sistema operacional e tipicamente uma interface gráfica que, em conjunto, permitem 
ao usuário interagir com o computador e seusperiféricos. 
2 
 
2. Software aplicativo, que permite ao usuário fazer uma ou mais tarefas específicas. Aplicativos podem 
ter uma abrangência de uso de larga escala, muitas vezes em âmbito mundial; nestes casos, os 
programas tendem a ser mais robustos e mais padronizados. Programas escritos para um pequeno 
mercado têm um nível de padronização menor. 
Ainda é possível usar a categoria Software embutido ou software embarcado, indicando software destinado a 
funcionar dentro de uma máquina que não é um computador de uso geral e normalmente com um destino muito 
específico. 
 Software aplicativo: é aquele que permite aos usuários executar uma ou mais tarefas específicas, em 
qualquer campo de atividade que pode ser automatizado especialmente no campo dos negócios. Inclui, 
entre outros: 
 Aplicações de controle e sistemas de automação industrial. 
 aplicações de informática para o escritório. 
 Software educacional. 
 Software de negócios. 
 Banco de dados. 
 Telecomunicações. 
 vídeo games. 
 Software médico. 
 Software de calculo numérico e simbólico. 
Atualmente, temos um novo tipo de software. O software como serviço, que é um tipo de software armazenado 
num computador que se acessa pela internet, não sendo necessário instalá-lo no computador do usuário. 
Geralmente esse tipo de software é gratuito e tem as mesmas funcionalidades das versões armazenadas 
localmente. 
Outra classificação possível em 3 tipos é: 
 Software de sistema: Seu objetivo é separar usuário e programador de detalhes do computador específico 
que está sendo usado. O software do sistema lhe dá ao usuário interfaces de alto nível e ferramentas que 
permitem a manutenção do sistema. Inclui, entre outros: 
 Sistemas operacionais 
 Drivers 
 ferramentas de diagnóstico 
 ferramentas de correção e otimização 
 Servidores 
 Software de programação: O conjunto de ferramentas que permitem ao programador desenvolver programas 
de computador usando diferentes alternativas e linguagens de programação, de forma prática. Inclui, entre 
outros: 
 Editores de texto 
 Compiladores 
 Intérpretes 
 linkers 
 Depuradores 
 Ambientes de Desenvolvimento Integrado : Agrupamento das ferramentas anteriores, geralmente em um 
ambiente visual, de modo que o programador não precisa digitar vários comandos para a compilação, 
interpretação, depuração, etc. Geralmente equipados com uma interface de usuário gráfica avançada. 
 
Licenças 
 
A maioria do software é publicado sob uma licença de software. Essa licença define e até restringe qual a forma 
que se pode utilizar o software definido números de licenças, modificações entre outros. Exemplos de licenças: 
 GNU General Public License 
 Licença BSD 
 Licença Apache 
 Licença comercial 
 Licença de software 
 Licença de software livre 
 Software livre 
 Freeware 
 Shareware 
 Demo 
 Trial 
 
 
3 
 
LEITURA SUGERIDA NO FINAL DA AULA 2 DE PROCESSO DE DESENVOLVIMENTO DE SOFTWARE 
 
ANÁLISE DE REQUERIMENTO DE SOFTWARE 
Na engenharia de sistemas e engenharia de software, análise de requisitos engloba todas as tarefas que lidam 
com investigação, definição e escopo de novos sistemas ou alterações. Análise de requisitos é uma parte 
importante do processo de desenvolvimento de softwares, na qual o engenheiro de requisitos e oanalista de 
negócio, juntamente comengenheiro de sistema ou desenvolvedor de software, identificam as necessidades ou 
requisitos de um cliente. Uma vez que os requisitos do sistema tenham sido identificados, os projetistas de 
sistemas estarão preparados para projetar a solução. 
A análise de requisitos é a primeira fase de desenvolvimento de software dividido em Requisito 
funcional e Requisito não-funcional. É nesta fase que o analista faz as primeiras reuniões com os clientes e/ou 
usuários do software para conhecer as funcionalidades do sistema que será desenvolvido. É nesta fase também 
que ocorre a maior parte dos erros, pois a falta de experiência dos clientes ou usuários faz com que eles nem 
sempre tenham claro em sua mente quais funcionalidades o software terá. 
As entrevistas estruturadas são um método utilizado para esta fase e que poderão ter um papel importante na 
ajuda à compreensão de todas as funcionalidades pretendidas pelo cliente. 
Outras denominações 
A análise de requisitos é também conhecida por outros nomes: 
 Engenharia de requisitos 
 Levantamento de requisitos 
 Captura de requisitos 
 Análise de sistema 
 Especificação de requisitos 
 Análise de requerimentos 
Principais Atividades 
Conceitualmente, a análise de requisitos inclui três tipos de atividades: 
 Elicitação dos requisitos: é a tarefa de comunicar-se com os usuários e clientes para determinar quais são os 
requisitos de sistema. 
 Análise de requisitos: determina se o estado do requisitos é obscuro, incompleto, ambíguo, ou contraditório 
e resolve estes problemas. 
 Registros dos requisitos: os requisitos podem ser documentados de várias formas, tais como documentos de 
linguagem natural, casos de uso, ou processo de especificação. 
Processo 
Análise de requisitos pode ser um processo longo e árduo. Novos sistemas mudam o ambiente e a relação entre 
as pessoas, então é importante identificar todos os envolvidos, levando em conta todas as suas necessidades e 
assegurando que eles compreenderam as implicações dos novos sistemas. Os analistas podem empregar várias 
técnicas para elicitar os requisitos dos clientes. Historicamente, isto envolve coisas tais como 
organizar entrevistas ou grupos focais (workshops) e a criação de lista de requisitos. Técnicas mais modernas 
incluem prototipação, e casos de uso, onde o analista irá aplicar uma combinação de métodos para estabelecer 
os requisitos exatos de seus stakeholders, tal que um sistema que atenda as necessidades do negócio seja 
produzido. 
Principais técnicas 
Entrevistas com stakeholder 
Entrevistas com stakeholder é um método comumente usado na análise de requisitos. Algumas decisões são 
usualmente necessárias, o custo inicial é um fator na decisão de quem será entrevistado. Estas entrevistas 
devem revelar requisitos ainda não precisamente delineados de acordo com o escopo do projeto, e requisitos 
que possam ser contraditórios. 
4 
 
 
Workshops de requisitos 
Em alguns casos pode ser útil reunir os stakeholders em workshop de requisitos. Estes workshops são mais 
propriamente denominados como seção de Desenvolvimento de Requisitos Conjunta, onde os requisitos são 
identificados conjuntamente e definidos pelos stakeholders. 
Pode ser útil realizar tais workshops fora em ambientes controlados, tais que os stakeholders não sejam 
distraídos. Um facilitador que pode ser usado para manter o processo focado e beneficiar esta sessão seria o fato 
de haver um redator dedicado a documentar a discussão. Facilitadores devem fazer uso de um projetor e 
diagramas de software ou devem usar um suporte tão simples como papel e marcadores. Uma regra para os 
facilitadores deve assegurar que o peso associado ao requisitos propostos não deve ser demasiadamente 
dependente das personalidades daqueles envolvidos no processo!. 
Lista de requisitos no estilo de contrato 
Uma forma tradicional de documentar requisitos é a utilização de lista de requisitos no estilo de contrato. Em 
sistemas complexos tais listas de requisitos podem chegar a centenas de páginas. 
Objetivos Mensuráveis 
As melhores práticas consideram as listas de requisitos compostas como meras dicas e respostas, até que o real 
propósito do negócio seja descoberto. Então os stakeholders e desenvolvedores poderão planejar testes para 
medir em qual nível cada objetivo será atingido. Estes objetivos mudam mais lentamente do que a longa lista de 
especificação de requisitos não mensuráveis. Uma vez que este pequeno grupo de objetivos críticos e 
mensuráveis for estabelecido, prototipação rápida e fases de desenvolvimento interativas e rápidas convergirão 
para atendimento dos fundamentais objetivos dos stakeholder antes que tenha decorrido metade do projeto. 
Protótipos 
Em meados dos anos 80, prototipação surgiu como a solução para o problema da análise de requisitos. 
Prototipação é uma simulação das telas de uma aplicação a qual permite ao usuário visualizar a aplicação que 
ainda não foi produzida. Protótipos ajudam o usuário a ter uma idéia de como o sistema irá parecer, e facilita a 
tomada de decisões no projeto sem esperar que o sistema seja construído. Melhorias na comunicação entre o 
usuário e desenvolvedores são freqüentemente vistas com a implantação da prototipação. A visualização 
antecipada das telas leva a poucas mudanças posteriores e, por conseguinte reduz o custo total 
consideravelmente. 
Contudo, no decorrer da década seguinte, embora provasse ser uma técnica útil, ela não resolvia estes 
problemas dos requisitos: 
 Uma vez que o protótipo fica pronto, o gerente gasta um grande tempo para entender que o projeto final 
não irá ser produzido no mesmo tempo. 
 Projetistas freqüentemente sentem-se compelidos a usar o atalho de utilizar o protótipo no sistema real, 
porque eles têm medo do 'grande tempo' para iniciar de novo. 
 Projetistas e usuários finais podem focar-se demais no projeto da interface e pouco na produção de um 
sistema que atenda as necessidades do processo de negócio. 
Protótipos podem ser exibidos em diagramas (denominados como wireframes) ou utilizando aplicações que 
sintetizem as funcionalidades. Wireframes são exibidos em documentos com várias apresentações gráficas, e 
freqüentemente removem-se as cores do projeto gráfico (isto é, usa-se uma paleta de tons de cinza) em casos 
onde existe uma expectativa a respeito do projeto gráfico do software final. Isto ajuda a prevenir a confusão a 
respeito da experiência final a respeito da aparência da aplicação. 
Casos de Uso 
 Artigo Principal: Caso de uso 
Um 'Caso de Uso' é uma técnica para capturar os requisitos em potencial de um novo sistema ou manutenção de 
software. Cada caso de uso provê um ou mais cenários que indicam como o sistema deve interagir com o usuário 
final ou outro sistema para atingir um objetivo de negócio específico. Casos de uso tipicamente evitam o jargão 
técnico, preferindo ao invés disto a linguagem do usuário final ou de um expert no domínio. Os casos de uso são 
freqüentemente de co-autoria dos desenvolvedores de software e usuários. 
Casos de usos são ferramentas enganosamente simples para descrever o comportamento de um software. Um 
caso de uso deve conter uma descrição textual de todos os passos que o usuário futuramente poderá vir a 
utilizar no software através de sua interface. Casos de uso não descrevem nenhum comportamento interno do 
5 
 
software, nem fazem explanações de como o software será implementado. Eles simplesmente mostram os passos 
que o usuário deve seguir para usar o software no seu trabalho. Todas as formas com que o usuário irá interagir 
com o software deverão ser descritas por este meio. 
Problemas 
Problemas com Stakeholder 
Alguns dos problemas que podem inibir a obtenção dos requisitos: 
 Usuários não sabem o que eles querem. 
 Usuários que nãoquerem concluir a escrita do conjunto de requisitos. 
 Comunicação com o usuário é lenta 
 Os usuários freqüentemente não participam nas revisões ou são incapazes de fazer isto. 
 Os usuários são tecnicamente poucos sofisticados. 
 Os usuários não entendem o processo de desenvolvimento. 
Isto deve levar a situações onde os requisitos do usuário continuam mudando mesmo quando o desenvolvimento 
do sistema ou produto já se iniciou. 
Problemas de Engenheiros/Desenvolvedores 
Possíveis problemas causados por engenheiros e desenvolvedores durante a análise dos requisitos são: 
 Pessoal técnico e usuários finais têm vocabulários diferentes. Conseqüentemente, eles podem acreditar que 
estão em perfeito acordo até que o produto final seja entregue. 
 Engenheiros e desenvolvedores tentam ajustar os requisitos para um sistema existente ou modelo, em vez 
de desenvolver um sistema específico que atenda as necessidades do cliente. 
 A análise é freqüentemente conduzida por engenheiros ou programadores, ao invés de pessoal com 
habilidade e conhecimento do domínio para compreender as necessidades dos clientes. 
Tentativas de solução 
Uma tentativa para solucionar os problemas de comunicação vem sendo o emprego de especialistas em negócios 
ou analistas de sistema. 
As técnicas introduzidas em 1990 como Prototipação, UML, Casos de Uso, e Desenvolvimento ágil de 
software foram também introduzidas como soluções para os problemas apresentados. 
Também surgiu no mercado uma nova classe de ferramentas de simulação de aplicação ou definição de 
aplicação. Estas ferramentas foram projetadas como uma ponte para transpor a lacuna de comunicação 
existente entre o usuário e a equipe de TI – e também permitir que aplicações tenham 'testes de mercado' antes 
que qualquer código seja produzido. O melhor que estas ferramentas tem a oferecer é: 
 Quadro eletrônico para marcar o fluxo das aplicações e testar alternativas. 
 habilidade de capturar a lógica do negócio e informações necessárias. 
 interatividade 
 capacidade de adicionar requisitos contextuais e outros comentários. 
 habilidade para uso remoto e distribuído para permitir o uso e interação como as simulações. 
 
LEITURA SUGERIDA NO FINAL DA AULA 3 DE PROCESSO DE DESENVOLVIMENTO DE SOFTWARE 
 
UML 
Na área de Engenharia de Software, a Linguagem de Modelagem Unificada (do inglês, UML - Unified Modeling 
Language) é uma linguagem de modelagem que permite representar um sistema de forma padronizada. 
A UML não é uma metodologia de desenvolvimento, o que significa que ela não diz para você o que fazer 
primeiro e em seguida ou como projetar seu sistema, mas ela lhe auxilia a visualizar seu desenho e a 
comunicação entre os objetos. 
Basicamente, a UML permite que desenvolvedores visualizem os produtos de seus trabalhos em diagramas 
padronizados. Junto com uma notação gráfica, a UML também especifica significados, isto é, semântica. É uma 
notação independente de processos, embora o
desenvolvido utilizando a UML. 
É importante distinguir entre um modelo UML e um
uma representação gráfica da informação do primeiro, mas o primeiro pode existir independentemente. 
O XMI (XMLMetadata Interchange) na sua versão corrente disponibiliza troca de modelos mas não de diagramas.
Os objetivos da UML são: especificação, documentação, estruturação para sub
lógica do desenvolvimento completo de um sistema de informação.
História 
A UML tem origem na compilação das "melhores práticas de engenharia" que provaram ter sucesso 
na modelagem de sistemas grandes e complexos. Sucedeu aos conceitos de
e OOSE (Jacobson) fundindo-os numa única linguagem de modelagem comum e largamente utilizada. A UML 
pretende ser a linguagem de modelagem padrão
A UML ainda não é um padrão da indústria, mas esse objetivo está a tomar forma sob os auspícios do
Management Group (OMG). O OMG pediu informação acerca de metodologia
criar uma linguagem rigorosa de modelagem de software. Muitos líderes da indústria responderam na esperança 
de ajudar a criar o padrão. 
Os esforços para a criação da UML tiveram início em outubro de 1994, quando
a Booch na Rational. Com o objetivo de unificar os métodos Booch e OMT, decorrido um ano de trabalho, foi 
lançado, em outubro de 1995, o esboço da versão 0.8 do
conhecido). Nesta mesma época, Jacobson
para incorporar o método OOSE. Nasceu então, em junho de 1996, a versão 0.9 da UML.
Finalmente em 1997, a UML foi aprovada como padrão pelo OMG (Object Management Group), um consórcio 
internacional de empresas que define e ratifica padrões na área de Orientação a Objetos.
Visão geral da UML 
UML 2.2, conforme a OMG, possui 14 tipos de diagramas, divididos em duas grandes categorias: Estruturais e 
Comportamentais. Sete tipos de diagramas representam informações estruturais, e os outros sete representam 
tipos gerais de comportamento, incluindo quatro em uma sub
interação. Estes diagramas podem ser visualizados de forma hierárquica, como apresentado no padrão 
de diagrama de classes abaixo: 
Adaptação da Figura A.5 da UML Superstructure Specification 2.4.1, feita com o InkScape sobre figura similar do verbete 
UML, em Inglês. 
 
 
, embora o RUP (Rational Unified Process) tenha sido especificamente 
É importante distinguir entre um modelo UML e um diagrama1 (ou conjunto de diagramas) de UML. O último é 
uma representação gráfica da informação do primeiro, mas o primeiro pode existir independentemente. 
Metadata Interchange) na sua versão corrente disponibiliza troca de modelos mas não de diagramas.
documentação, estruturação para sub-visualização e maior visualização 
lógica do desenvolvimento completo de um sistema de informação. 
A UML tem origem na compilação das "melhores práticas de engenharia" que provaram ter sucesso 
de sistemas grandes e complexos. Sucedeu aos conceitos de Booch
os numa única linguagem de modelagem comum e largamente utilizada. A UML 
padrão para modelar sistemas concorrentes e distribuídos.
o é um padrão da indústria, mas esse objetivo está a tomar forma sob os auspícios do
(OMG). O OMG pediu informação acerca de metodologias orientadas a objetos que pudessem 
criar uma linguagem rigorosa de modelagem de software. Muitos líderes da indústria responderam na esperança 
Os esforços para a criação da UML tiveram início em outubro de 1994, quando Rumbaugh
. Com o objetivo de unificar os métodos Booch e OMT, decorrido um ano de trabalho, foi 
lançado, em outubro de 1995, o esboço da versão 0.8 do Unified Process - Processo Unificado (como era 
Jacobson se associou à Rational e o escopo do projeto da UML foi expandido 
para incorporar o método OOSE. Nasceu então, em junho de 1996, a versão 0.9 da UML. 
Finalmente em 1997, a UML foi aprovada como padrão pelo OMG (Object Management Group), um consórcio 
internacional de empresas que define e ratifica padrões na área de Orientação a Objetos. 
, possui 14 tipos de diagramas, divididos em duas grandes categorias: Estruturais e 
Comportamentais. Sete tipos de diagramas representam informações estruturais, e os outros sete representam 
incluindo quatro em uma sub-categoria que representam diferentes aspectos de 
interação. Estes diagramas podem ser visualizados de forma hierárquica, como apresentado no padrão 
Adaptação da Figura A.5 da UML Superstructure Specification 2.4.1, feita com o InkScape sobre figura similar do verbete 
6 
(Rational Unified Process) tenha sido especificamente 
(ou conjunto de diagramas) de UML. O último é 
uma representação gráfica da informação do primeiro, mas o primeiro pode existir independentemente. 
Metadata Interchange) na sua versão corrente disponibiliza troca de modelos mas não de diagramas. 
visualização e maior visualização 
A UML tem origem na compilação das "melhores práticas de engenharia" que provaram ter sucesso 
Booch, OMT (Rumbaugh)os numa única linguagem de modelagem comum e largamente utilizada. A UML 
para modelar sistemas concorrentes e distribuídos. 
o é um padrão da indústria, mas esse objetivo está a tomar forma sob os auspícios do Object 
s orientadas a objetos que pudessem 
criar uma linguagem rigorosa de modelagem de software. Muitos líderes da indústria responderam na esperança 
Rumbaugh se juntou 
. Com o objetivo de unificar os métodos Booch e OMT, decorrido um ano de trabalho, foi 
Processo Unificado (como era 
se associou à Rational e o escopo do projeto da UML foi expandido 
Finalmente em 1997, a UML foi aprovada como padrão pelo OMG (Object Management Group), um consórcio 
, possui 14 tipos de diagramas, divididos em duas grandes categorias: Estruturais e 
Comportamentais. Sete tipos de diagramas representam informações estruturais, e os outros sete representam 
categoria que representam diferentes aspectos de 
interação. Estes diagramas podem ser visualizados de forma hierárquica, como apresentado no padrão 
 
Adaptação da Figura A.5 da UML Superstructure Specification 2.4.1, feita com o InkScape sobre figura similar do verbete 
7 
 
 
 
Elementos 
 De estrutura: 
 Colaboração 
 De comportamento: 
 Casos de uso 
 Interação 
 Máquina de estados 
 De agrupamento: 
 Pacote 
 Modelo 
 Associação (bidirecional) 
 Subsistema 
 Framework 
 De anotação: 
 Notas 
 
 
Análise estruturada 
Origem: Wikipédia, a enciclopédia livre. 
A análise estruturada é uma atividade de construção de modelos que utiliza c# uma notação que é própria ao 
método de análise de sistemas para a finalidade de retratar o fluxo e o conteúdo das informações utilizadas pelo 
sistema, dividir o sistema em partições funcionais e comportamentais e descrever a essência daquilo que será 
construído. 
Modelo ambiental 
O modelo ambiental descreve o ambiente no qual o sistema se insere, ou seja, descreve o contexto do sistema, 
que deve ter 3 componentes: 
Componentes do modelo ambiental:: 
 Definição de objetivos → Finalidade de sistema; 
 Lista de eventos → Os acontecimentos que ocorrem no exterior e que interagem com o sistema; 
 Diagrama de contexto → Representa o sistema como um único processo e as suas interacções com o meio 
ambiente. 
Modelo comportamental 
O modelo comportamental descreve as ações que o sistema deve realizar para responder da melhor forma aos 
eventos definidos no modelo ambiental. 
Técnicas utilizadas: 
 Diagrama de fluxos de dados (DFD); 
 Dicionário de dados (DD); 
 Diagrama de entidades e associações (ou relacionamentos) (Diagrama entidade relacionamento [DER] 
ou Modelo de entidades e relacionamentos [MER]); 
Diagramas da UML 2.0 
 
Diagramas estruturais 
 Diagrama de classes 
 Diagrama de objetos 
 Diagrama de componentes 
 Diagrama de instalação ou de implantação 
 Diagrama de pacotes 
 Diagrama de estrutura composta 
 Diagrama de perfil 
Diagramas comportamentais 
 Diagrama de caso de uso 
 Diagrama de transição de estados ou de estados 
 Diagrama de atividade 
 Diagramas de interação 
 Diagrama de sequência 
 Diagrama de interatividade ou de interação 
 Diagrama de colaboração ou comunicação 
 Diagrama de tempo ou temporal 
8 
 
 Especificação de processos (EP) - (DESENHO); 
 Diagrama de transição de estados (DTE). 
Diagramas 
 Diagrama de contexto 
 Diagrama de fluxos de dados 
 Diagrama entidade relacionamento 
 Lista de eventos 
 Tabela de decisão 
 Árvore de decisão 
 Diagrama de transição de estados 
 
LEITURA SUGERIDA NO FINAL DA AULA 4 DE PROCESSO DE DESENVOLVIMENTO DE SOFTWARE 
 
Arquitetura de software 
A arquitetura de software de um sistema consiste na definição dos componentes de software, suas propriedades 
externas, e seus relacionamentos com outros softwares. O termo também se refere à documentação da 
arquitetura de software do sistema. A documentação da arquitetura do software facilita: a comunicação entre 
os stakeholders, registra as decisões iniciais acerca do projeto de alto-nível, e permite o reúso do projeto dos 
componentes e padrões entre projetos. 
Introdução 
O campo da ciência da computação tem lidado com problemas associados, como a complexidade da informação, 
desde sua criação.1 Os primeiros problemas de complexidade foram resolvidos pelos desenvolvedores através da 
escolha da estrutura de dados, do desenvolvimento de algoritmos e pela aplicação de conceitos de separação de 
escopos. Embora o termo arquitetura de software seja relativamente novo na indústria, os princípios 
fundamentais deste campo vêm sendo aplicados esporadicamente pela engenharia de software desde o início dos 
anos 80. As primeiras tentativas de capturar e explicar a arquitetura de software do sistema foram imprecisas e 
desorganizadas – freqüentemente caracterizadas por um conjunto de diagramas.2 Durante o decorrer da década 
de 90 houve um esforço concentrado para definir e codificar os aspectos fundamentais desta disciplina. 
Inicialmente um conjunto de padrões de projeto, estilo, melhores práticas, descrição de linguagens, e lógica 
formal foram desenvolvidas durante este período. 
A disciplina de arquitetura de software é centrada na ideia da redução da complexidade através da abstração e 
separação de interesses. O glossário do site oficial SOFTWARE ENGINEERING INSTITUTE (Instituto de Engenharia 
de Software) 3 descreve que arquitetura de software é a estrutura ou estruturas de um sistema, com todos os 
elementos de software vendo e tendo suas propriedades vistas por todos os outros elementos e relacionamentos. 
Sendo a arquitetura de sistema uma disciplina em maturação, sem regras claras, a ação do arquiteto de software 
é ainda uma composição de arte e ciência. Os aspectos de arte da arquitetura de software são devidos ao fato 
que os sistemas de software comerciais suportam alguns aspectos de um negócio ou missão. Assim como o 
direcionamento de negócio chave para o suporte os sistemas são descritos nos cenários como requisitos não-
funcionais de sistema, também conhecidos como atributos de qualidade, que determinam como um sistema irá 
se comportar.4 Cada sistema é único devido à natureza do negócio que ele suporta, tal que o nível dos atributos 
de qualidade exigidos de um sistema 
como compatibilidade, extensibilidade, confiabilidade, manutenabilidade,disponibilidade, segurança, usabilidad
e, dentre outros – irão variar para cada aplicação sendo desenvolvida.4 
Para trazer a perspectiva do usuário para dentro da arquitetura de software, pode-se dizer que essa disciplina 
dá a direção dos passos que serão tomados e as tarefas envolvidas em cada área de especialidade e interesse do 
usuário, por exemplo, osstakeholdersde sistemas de software, os desenvolvedores de software, o grupo de 
suporte ao software do sistema operacional, os testadores e os usuários de negócio final. Neste sentido, a 
arquitetura de software se torna a ligação das múltiplas perspectivas que um sistema traz nele embutido. O fato 
de que estas várias perspectivas diferentes possam ser postas juntas em uma arquitetura de software padrão 
justifica e valida a necessidade de criação da arquitetura de software antes do desenvolvimento do software 
para que o projeto alcance a maturidade. 
9 
 
História 
A origem da arquitetura de software como um conceito foi primeiramente identificado no trabalho de pesquisa 
de Edsger Dijkstra em 1968 e David Parnas no início de 1970. Estes cientistas enfatizaram a importância das 
estruturas de um sistema de software e acriticidade da identificação da sua estrutura.5 O estudo deste campo 
aumentou de popularidade desde o inicio de 1990 com os trabalhos de pesquisa concentrando-se nos padrões de 
estilo de arquitetura de software, linguagens de descriçãode arquitetura de software, documentação de 
arquitetura de software, e métodos formais.6 Muitas instituições de pesquisa tais como a Carnegie Mellon 
University e a University of California, Irvine estavam realizando muitas pesquisas no campo da arquitetura de 
software. Mary Shaw e David Garlan da Carnegie Mellon escreveram um livro intitulado Software Architecture: 
Perspectives on an Emerging Discipline em 1996, o qual trazia a tona conceitos da arquitetura de software, tais 
como componentes, conexões, estilos, etc. Os esforços do UCI's (Institute for Software Research) na pesquisa da 
arquitetura de software foram inicialmente direcionados para os estilos de arquitetura, descrições de linguagens 
de arquitetura, e arquiteturas dinâmicas. 
ANSI/IEEE 1471-2000: Recommended Practice for Architecture Description of Software-Intensive Systems[1] foi a 
primeira norma padrão na área de arquitetura de software, e foi recentemente adotada pelo ISO como ISO/IEC 
DIS 25961. 
Descrevendo arquiteturas 
Linguagem de descrição de arquitetura 
As Linguagens de descrição de arquitetura (LDAs) são usadas para descrever a arquitetura de software. Várias 
LDAs distintas foram desenvolvidas por diferentes organizações, incluindo Wright (desenvolvido por Carnegie 
Mellon), Acme (desenvolvido por Carnegie Mellon), xADL (desenvolvido por UCI), Darwin (desenvolvido 
por Imperial College London), DAOP-ADL (desenvolvido pela University of Málaga). Elementos comuns de uma 
LDA são componente, conexão e configuração. 
Visões 
A arquitetura de software é normalmente organizada em visões7 , as quais são análogas aos diferentes tipos 
de plantas utilizadas no estabelecimento da arquitetura. Na Ontologia estabelecida pela ANSI/IEEE 1471-
2000, visões são instâncias de pontos de vista, onde cada ponto de vista existe para descrever a arquitetura na 
perspectiva de um conjunto de stakeholders e seus consortes. 
Algumas possíveis visões são: 
 Visão funcional/lógica 
 Visão de código. 
 Visão de desenvolvimento/estrutural 
 Visão de concorrência/processo/thread 
 Visão física/evolutiva 
 Visão de ação do usuário/retorno 
Várias linguagens para descrição da arquitetura de software foram inventadas, mas nenhum consenso foi ainda 
alcançado em relação a qual conjunto de símbolos ou sistema de representação deve ser adotado. Alguns 
acreditam que a UML irá estabelecer um padrão para representação de arquitetura de software. Outros 
acreditam que os desenvolvimentos efetivos de software devem contar com a compreensão única das restrições 
de cada problema, e notações tão universais são condenadas a um final infeliz porque cada uma provê 
uma notação diferenciada que necessariamente torna a notação inútil ou perigosa para alguns conjuntos de 
tarefas. Eles apontam a proliferação de linguagens de programação e a sucessão de tentativas falhas para impor 
uma simples 'linguagem universal' na programação, como uma prova da tendência do software para a diversidade 
e não para os padrões. 
Padrões de arquitetura 
 DODAF [2] 
 MODAF [3] 
 TOGAF [4] 
 Zachman framework [5] 
 Federal Enterprise Architecture [6] 
10 
 
Exemplos de arquitetura de software 
Há muitas formas comuns de projetar módulos de software de computador e suas comunicações, entre elas: 
 Cliente-Servidor 
 Computação distribuída 
 P2P 
 Quadro Negro 
 Criação implícita 
 Pipes e filtros 
 Plugin 
 Aplicação monolítica 
 Modelo em três camadas 
 Analise de sistema estruturada (baseada em módulos, mas usualmente monolíticas em dentro dos módulos) 
 Arquitetura orientada a serviço 
 Arquitetura orientada a busca 
 MVC 
 
LEITURA SUGERIDA NO FINAL DA AULA 5 DE PROCESSO DE DESENVOLVIMENTO DE SOFTWARE 
 
Teste de software 
O teste do software é a investigação do software a fim de fornecer informações sobre sua qualidade em relação 
ao contexto em que ele deve operar. Isso inclui o processo de utilizar o produto para encontrar seus defeitos. 
O teste é um processo realizado pelo testador de software, que permeia outros processos da engenharia de 
software, e que envolve ações que vão do levantamento de requisitos até a execução do teste propriamente 
dito. 
Visão geral 
Não se pode garantir que todo software funcione corretamente, sem a presença de erros,1 visto que os mesmos 
muitas vezes possuem um grande número de estados com fórmulas, atividades e algoritmos complexos. O 
tamanho do projeto a ser desenvolvido e a quantidade de pessoas envolvidas no processo aumentam ainda mais 
a complexidade. Idealmente, toda permutação possível do software deveria ser testada. Entretanto, isso se 
torna impossível para a ampla maioria dos casos devido à quantidade impraticável de possibilidades. A qualidade 
do teste acaba se relacionando à qualidade dos profissionais envolvidos em filtrar as permutações relevantes.2 
Falhas podem ser originadas por diversos motivos. Por exemplo, a especificação pode estar errada ou 
incompleta, ou pode conter requisitos impossíveis de serem implementados, devido a limitações de hardware ou 
software. A implementação também pode estar errada ou incompleta, como um erro de um algoritmo. Portanto, 
uma falha é o resultado de um ou mais defeitos em algum aspecto do sistema. 
O teste de software pode ser visto como uma parcela do processo de qualidade de software. A qualidade da 
aplicação pode e, normalmente, varia significativamente de sistema para sistema. 
Os atributos qualitativos previstos na norma ISO 9126 são: 
 Funcionalidade 
 Confiabilidade 
 Usabilidade 
 Eficiência 
 Manutenibilidade 
 Portabilidade 
De forma geral, mensurar o bom funcionamento de um software envolve compará-lo com elementos como 
especificações, outros softwares da mesma linha, versões anteriores do mesmo produto, inferências pessoais, 
expectativas do cliente, normas relevantes, leis aplicáveis, entre outros. Enquanto a especificação do software 
diz respeito ao processo de verificação do software, a expectativa do cliente diz respeito ao processo de 
validação do software. Por meio da verificação será analisado se o produto foi feito cor
acordo com os requisitos especificados. Por meio da validação será analisado se foi feito o produto correto, se 
ele está de acordo com as necessidades e expectativas do cliente.
Um desenvolvimento de software organizado tem como premissa uma
como base conceitos que visem a construção de um produto de software de forma eficaz. Dentro desta 
metodologia estão definidos os passos necessários para chegar ao produto final esperado.
Assim, quando se segue uma metodologia para o desenvolvimento de um produto de software, espera
produto final que melhor agrade tanto aos clientes quanto ao próprio fornecedor, ou seja, a empresa de 
desenvolvimento. Observando este aspecto, não faz sentido iniciar a construção de um produto de software sem 
ter uma metodologia de trabalho bem sol
processo. Porém, além de uma crescente demanda por softwares de qualidade, as empresas de desenvolvimento 
de software sofrem cada vez mais pressão por parte dos clientes para que o produto seja
período de tempo. Este fato pode fazer com que uma sólida metodologia de trabalho acabe por se desequilibrar.
Independentemente da metodologia de trabalho empregada no desenvolvimento de um software, para que se 
obtenha um produto final com um certo nível de qualidade é imprescindível a melhoria dos processos de 
engenharia de software. 
Uma maneira viável para se assegurar a melhoria de tais
entidades internacionais respeitadas no assunto. Dentro de uma gama de modelos, sejam eles para situações e 
ambientes específicos ou para soluções genéricas, existem alguns que são mais utilizados e tidos como 
eficientes, como por exemplo os SW-CMM
Outro fator com grande influência sobre a qualidade do software a ser produzido
queserão executados sobre tal produto. Todas as metodologias de desenvolvimento de software têm uma 
disciplina dedicada aos testes. Atualmente esta é uma tarefa indispensável, porém muitas vezes efetuada de 
maneira ineficiente, seja pelo subestimar dos que desenvolvem, pela falta de tempo ou mesmo pela falta de 
recursos humanos e financeiros. 
De acordo com um estudo conduzido pelo
59,5 bilhões de dólares à economia dos Estados Unidos
melhorias na infraestrutura do teste de software.
Princípios 
Para Myers (2004), há princípios vitais para o test
de forma a reduzir a interpretação do critério de sucesso. A saída da execução do teste deve ser exaustivamente 
analisada. Os casos de teste devem verificar não somente as condições inválidas de execução, como também as 
condições válidas. Outro conceito apresentado é utilizar pessoas e organizações diferentes para a 
implementação e para a verificação. A entidade de teste 
erros, enquanto a entidade de programação possui uma visão construtiva, em busca da implementação de uma 
especificação. 
Myers também aborda o esforço para se construir casos de teste. Deve
qualidade do teste piora gradualmente com as iterações de desenvolvimento. Em contrapartida, há o
regressão, que permite quantificar a evolução da qualidade de software, mantendo e executando novamente 
testes realizados anteriormente. 
O mesmo autor afirma que, diferente do que se poderia considerar senso comum, a probabilidade de existência 
de erros num certo trecho de código é proporci
Basicamente, erros aparecem em grupos. Trechos específicos de código de um software qualquer estão mais 
propensos a ter erros que outros. 
Técnicas 
Existem muitas maneiras de se testar um software. 
utilizadas em sistemas desenvolvidos sobre
sistemas orientados a objeto. Apesar de os
objetivo principal destas técnicas continua a ser o mesmo, encontrar falhas no software. Abaixo estão descritas 
algumas das técnicas mais conhecidas. 
Caixa-branca Ver artigo principal: 
Também chamada de teste estrutural ou orientado à lógica, a técnica de caixa
interno do componente de software. Essa técnica trabalha diretamente sobre o
validação do software. Por meio da verificação será analisado se o produto foi feito corretamente, se ele está de 
acordo com os requisitos especificados. Por meio da validação será analisado se foi feito o produto correto, se 
ele está de acordo com as necessidades e expectativas do cliente. 
organizado tem como premissa uma metodologia de trabalho. Esta deve ter 
a construção de um produto de software de forma eficaz. Dentro desta 
metodologia estão definidos os passos necessários para chegar ao produto final esperado. 
Assim, quando se segue uma metodologia para o desenvolvimento de um produto de software, espera
produto final que melhor agrade tanto aos clientes quanto ao próprio fornecedor, ou seja, a empresa de 
desenvolvimento. Observando este aspecto, não faz sentido iniciar a construção de um produto de software sem 
ter uma metodologia de trabalho bem solidificada e que seja do conhecimento de todos os envolvidos no 
processo. Porém, além de uma crescente demanda por softwares de qualidade, as empresas de desenvolvimento 
de software sofrem cada vez mais pressão por parte dos clientes para que o produto seja
período de tempo. Este fato pode fazer com que uma sólida metodologia de trabalho acabe por se desequilibrar.
Independentemente da metodologia de trabalho empregada no desenvolvimento de um software, para que se 
com um certo nível de qualidade é imprescindível a melhoria dos processos de 
Uma maneira viável para se assegurar a melhoria de tais processos seria tomar como base modelos sugeridos por 
entidades internacionais respeitadas no assunto. Dentro de uma gama de modelos, sejam eles para situações e 
ambientes específicos ou para soluções genéricas, existem alguns que são mais utilizados e tidos como 
CMM, SE-CMM, ISO/IEC 15504 e o mais conhecido CMMI.
Outro fator com grande influência sobre a qualidade do software a ser produzido é o que diz respeito aos testes 
que serão executados sobre tal produto. Todas as metodologias de desenvolvimento de software têm uma 
disciplina dedicada aos testes. Atualmente esta é uma tarefa indispensável, porém muitas vezes efetuada de 
ente, seja pelo subestimar dos que desenvolvem, pela falta de tempo ou mesmo pela falta de 
De acordo com um estudo conduzido pelo NIST em 2002, os defeitos resultam num custo anual de 
Estados Unidos. Mais de um terço do custo poderia ser evitado com 
do teste de software.3 
Para Myers (2004), há princípios vitais para o teste de software. O caso de teste deve definir a saída esperada, 
de forma a reduzir a interpretação do critério de sucesso. A saída da execução do teste deve ser exaustivamente 
ada. Os casos de teste devem verificar não somente as condições inválidas de execução, como também as 
condições válidas. Outro conceito apresentado é utilizar pessoas e organizações diferentes para a 
implementação e para a verificação. A entidade de teste possui uma visão destrutiva do sistema, em busca de 
erros, enquanto a entidade de programação possui uma visão construtiva, em busca da implementação de uma 
Myers também aborda o esforço para se construir casos de teste. Deve-se evitar testes descartáveis, pois a 
qualidade do teste piora gradualmente com as iterações de desenvolvimento. Em contrapartida, há o
a evolução da qualidade de software, mantendo e executando novamente 
O mesmo autor afirma que, diferente do que se poderia considerar senso comum, a probabilidade de existência 
de erros num certo trecho de código é proporcional à quantidade de erros já encontrada anteriormente. 
Basicamente, erros aparecem em grupos. Trechos específicos de código de um software qualquer estão mais 
Existem muitas maneiras de se testar um software. Mesmo assim, existem as técnicas que sempre foram muito 
utilizadas em sistemas desenvolvidos sobre linguagens estruturadas que ainda hoje têm grande v
. Apesar de os paradigmas de desenvolvimento serem completamente diferentes, o 
objetivo principal destas técnicas continua a ser o mesmo, encontrar falhas no software. Abaixo estão descritas 
 teste de caixa-branca 
Também chamada de teste estrutural ou orientado à lógica, a técnica de caixa-branca avalia o comportamento 
. Essa técnica trabalha diretamente sobre o código fonte
11 
retamente, se ele está de 
acordo com os requisitos especificados. Por meio da validação será analisado se foi feito o produto correto, se 
de trabalho. Esta deve ter 
a construção de um produto de software de forma eficaz. Dentro desta 
Assim, quando se segue uma metodologia para o desenvolvimento de um produto de software, espera-se um 
produto final que melhor agrade tanto aos clientes quanto ao próprio fornecedor, ou seja, a empresa de 
desenvolvimento. Observando este aspecto, não faz sentido iniciar a construção de um produto de software sem 
idificada e que seja do conhecimento de todos os envolvidos no 
processo. Porém, além de uma crescente demanda por softwares de qualidade, as empresas de desenvolvimento 
de software sofrem cada vez mais pressão por parte dos clientes para que o produto seja entregue num curto 
período de tempo. Este fato pode fazer com que uma sólida metodologia de trabalho acabe por se desequilibrar. 
Independentemente da metodologia de trabalho empregada no desenvolvimento de um software, para que se 
com um certo nível de qualidade é imprescindível a melhoria dos processos de 
e modelos sugeridos por 
entidades internacionais respeitadas no assunto. Dentro de uma gama de modelos, sejam eles para situações e 
ambientes específicos ou para soluções genéricas, existem alguns que são mais utilizados e tidos como 
. 
é o que diz respeito aos testes 
que serão executados sobre tal produto. Todas as metodologias de desenvolvimento de software têm uma 
disciplinadedicada aos testes. Atualmente esta é uma tarefa indispensável, porém muitas vezes efetuada de 
ente, seja pelo subestimar dos que desenvolvem, pela falta de tempo ou mesmo pela falta de 
resultam num custo anual de 
. Mais de um terço do custo poderia ser evitado com 
deve definir a saída esperada, 
de forma a reduzir a interpretação do critério de sucesso. A saída da execução do teste deve ser exaustivamente 
ada. Os casos de teste devem verificar não somente as condições inválidas de execução, como também as 
condições válidas. Outro conceito apresentado é utilizar pessoas e organizações diferentes para a 
possui uma visão destrutiva do sistema, em busca de 
erros, enquanto a entidade de programação possui uma visão construtiva, em busca da implementação de uma 
s descartáveis, pois a 
qualidade do teste piora gradualmente com as iterações de desenvolvimento. Em contrapartida, há o teste de 
a evolução da qualidade de software, mantendo e executando novamente 
O mesmo autor afirma que, diferente do que se poderia considerar senso comum, a probabilidade de existência 
onal à quantidade de erros já encontrada anteriormente. 
Basicamente, erros aparecem em grupos. Trechos específicos de código de um software qualquer estão mais 
Mesmo assim, existem as técnicas que sempre foram muito 
que ainda hoje têm grande valia para os 
serem completamente diferentes, o 
objetivo principal destas técnicas continua a ser o mesmo, encontrar falhas no software. Abaixo estão descritas 
branca avalia o comportamento 
código fonte do componente de 
software para avaliar aspectos tais como: teste de condição,
caminhos lógicos, códigos nunca executados.
Os aspectos avaliados nesta técnica de teste dependerão da complexidade e da tecnologia que determinarem a 
construção do componente de software, cabendo portanto avaliação de mais aspectos que os citados 
anteriormente. O testador tem acesso ao código fonte da aplicaçã
ligação de bibliotecas e componentes. Este tipo de teste é desenvolvido analisando o código fonte e elaborando 
casos de teste que cubram todas as possibilidades do componente de software. Dessa maneira, todas as 
variações relevantes originadas por estruturas de condições são testadas.
Um exemplo bem prático desta técnica de teste é o uso da ferramenta livre
classes de teste para testar classes ou métodos desenvolvidos em
testes manuais ou testes efetuados com apoio de ferramentas para verificação de aderência a boas práticas de 
codificação reconhecidas pelo mercado de software. A aderência a padrões e boas práticas visa principalmente
diminuição da possibilidade de erros de codificação e a busca de utilização de comandos que gerem o melhor 
desempenho de execução possível. Apesar de muitos desenvolvedores alegarem que não há ganhos perceptíveis 
com essa técnica de teste aplicada sobre
cada programa pode vir a ser executado milhares ou milhões de vezes em intervalos de tempo pequenos. É na 
realidade de produção que a soma dos aparentes pequenos tempos de execução e consum
programa poderá levar o software a deixar de atender aos objetivos esperados. A técnica de teste de caixa
branca é recomendada para as fases de teste de 
fica a cargo dos desenvolvedores do software, que por sua vez conhecem bem o código fonte produ
Caixa-preta Ver artigo principal: Teste de caixa
Também chamada de teste funcional, teste comportamental, orientado a dado ou orientado a
técnica de caixa-preta avalia o comportamento externo do
comportamento interno do mesmo.4 Dados de entrada são fornecidos, o teste é executado e o resultado obtido é 
comparado a um resultado esperado previamente conhecido. Como detalhes de implementação não são 
considerados, os casos de teste são todos derivados da especificação.
Quanto mais entradas são fornecidas, mais rico
seriam testadas, mas na ampla maioria dos casos isso é impossível.
estar ambígua em relação ao sistema produzido, e como resultado as entradas especificadas podem não ser as 
mesmas aceitas para o teste.6 Uma abordagem mais realista para 
subconjunto de entradas que maximize a riqueza do teste. Pode
que são processadas similarmente, de forma que testar somente um elemento desse subconjunto serve para 
averiguar a qualidade de todo o subconjunto. Por exemplo, em um sistema que aceita um
testar todos os casos possíveis pode gerar pelo menos dezenas 
Entretanto, a partir da especificação do sistema, pode
a qualidade do teste. Depende do propósito do sistema, mas casos possíveis incluem inteiros pares, inteir
ímpares, zero, inteiros positivos, inteiros negativos, o maior inteiro, o menor inteiro.
Essa técnica é aplicável a todas as fases de teste 
de aceitação. A aplicação de critérios de teste leva o testador a produzir um conjunto de casos de teste (ou 
situações de teste). A aplicação do critério de Particionamento de Equivalência (ou
equivalência) permite avaliar se a quantidade de casos de teste produzida é coerente. O Particionamento de 
Equivalência se baseia em testar subconjuntos dos dados e não todos os dados possíveis 
às vezes impossível -, pode-se assumir que as classes de equivalência serão tratadas da mesma maneira, pois um 
único elemento da classe se comporta como um representante dess
identificadas pode-se usar a Análise de Valor Limite, o testador construirá casos de teste que atuem nos limites 
superiores e inferiores destas classes, de forma que um número mínimo de casos de teste permita 
cobertura de teste possível. Outro critério é o Grafo Causa
transformar entradas de dados em causas e saídas de dados em efeitos. Esse grafo é posteriormente convertido 
para tabela de decisão e este para casos de teste. Por fim, tem
técnica em que os analistas de teste, por meio da experiência e intuição, supõem tipos prováveis de erro.
Uma abordagem no desenvolvimento do teste de caixa
as funcionalidades são testadas de acordo com os requisitos. Apesar de necessário, esse tipo de teste é 
insuficiente para identificar certos riscos num projeto de software.
Caixa-cinza 
A técnica de teste de caixa-cinza é uma mescla do uso das técnicas de caixa
envolve ter acesso a estruturas de dados
que são executados como na técnica da caixa
considerado caixa-cinza pois a entrada e a saída estão claramente fora da caixa
ra avaliar aspectos tais como: teste de condição, teste de fluxo de dados, teste de ciclos, teste de 
caminhos lógicos, códigos nunca executados. 
avaliados nesta técnica de teste dependerão da complexidade e da tecnologia que determinarem a 
construção do componente de software, cabendo portanto avaliação de mais aspectos que os citados 
anteriormente. O testador tem acesso ao código fonte da aplicação e pode construir códigos para efetuar a 
e componentes. Este tipo de teste é desenvolvido analisando o código fonte e elaborando 
ste que cubram todas as possibilidades do componente de software. Dessa maneira, todas as 
variações relevantes originadas por estruturas de condições são testadas. 
Um exemplo bem prático desta técnica de teste é o uso da ferramenta livre JUnit para desenvolvimento de 
classes de teste para testar classes ou métodos desenvolvidos em Java. Também se enquadram nessa técnica 
testes manuais ou testes efetuados com apoio de ferramentas para verificação de aderência a boas práticas de 
codificação reconhecidas pelo mercado de software. A aderência a padrões e boas práticas visa principalmente
diminuição da possibilidade de erros de codificação e a busca de utilização de comandos que gerem o melhor 
desempenho de execução possível. Apesar de muitos desenvolvedores alegarem que não há ganhos perceptíveis 
com essa técnica de teste aplicada sobre unidades de software, devemos lembrar que, no ambiente produtivo, 
cada programa pode vir a ser executado milhares ou milhões de vezes em intervalos de tempo pequenos. É na 
realidade de produção que a soma dos aparentes pequenos tempos de execução e consumode memória de cada 
programa poderá levar o software a deixar de atender aos objetivos esperados. A técnica de teste de caixa
teste de unidade e teste de integração, cuja responsabilidade principal 
fica a cargo dos desenvolvedores do software, que por sua vez conhecem bem o código fonte produ
Teste de caixa-preta 
Também chamada de teste funcional, teste comportamental, orientado a dado ou orientado a
preta avalia o comportamento externo do componente de software, sem se considerar o 
Dados de entrada são fornecidos, o teste é executado e o resultado obtido é 
o previamente conhecido. Como detalhes de implementação não são 
são todos derivados da especificação. 
Quanto mais entradas são fornecidas, mais rico será o teste. Numa situação ideal todas as entradas possíveis 
seriam testadas, mas na ampla maioria dos casos isso é impossível.5 Outro problema é que a especificação pode 
ambígua em relação ao sistema produzido, e como resultado as entradas especificadas podem não ser as 
Uma abordagem mais realista para o teste de caixa-preta é escolher um 
subconjunto de entradas que maximize a riqueza do teste. Pode-se agrupar subconjuntos de entradas possíveis 
que são processadas similarmente, de forma que testar somente um elemento desse subconjunto serve para 
r a qualidade de todo o subconjunto. Por exemplo, em um sistema que aceita um inteiro
testar todos os casos possíveis pode gerar pelo menos dezenas de milhares de casos de testes distintos. 
Entretanto, a partir da especificação do sistema, pode-se encontrar um subconjunto de inteiros que maximizem 
a qualidade do teste. Depende do propósito do sistema, mas casos possíveis incluem inteiros pares, inteir
ímpares, zero, inteiros positivos, inteiros negativos, o maior inteiro, o menor inteiro. 
Essa técnica é aplicável a todas as fases de teste – teste unitário, teste de integração, teste de sistema
. A aplicação de critérios de teste leva o testador a produzir um conjunto de casos de teste (ou 
situações de teste). A aplicação do critério de Particionamento de Equivalência (ou
) permite avaliar se a quantidade de casos de teste produzida é coerente. O Particionamento de 
r subconjuntos dos dados e não todos os dados possíveis - o que seria exaustivo e 
se assumir que as classes de equivalência serão tratadas da mesma maneira, pois um 
único elemento da classe se comporta como um representante dessa classe. A partir das classes de equivalência 
se usar a Análise de Valor Limite, o testador construirá casos de teste que atuem nos limites 
superiores e inferiores destas classes, de forma que um número mínimo de casos de teste permita 
cobertura de teste possível. Outro critério é o Grafo Causa-Efeito, que consiste em utilizar a ideia de grafos para 
transformar entradas de dados em causas e saídas de dados em efeitos. Esse grafo é posteriormente convertido 
e este para casos de teste. Por fim, tem-se o critério de Error-Guessing, que é uma 
técnica em que os analistas de teste, por meio da experiência e intuição, supõem tipos prováveis de erro.
Uma abordagem no desenvolvimento do teste de caixa-preta é o teste baseado na especificação, de forma que 
as funcionalidades são testadas de acordo com os requisitos. Apesar de necessário, esse tipo de teste é 
insuficiente para identificar certos riscos num projeto de software.7 
cinza é uma mescla do uso das técnicas de caixa-preta e de caixa
estruturas de dados e algoritmos do componente a fim de desenvolver os casos de teste, 
s como na técnica da caixa-preta. Manipular entradas de dados e formatar a saída não é 
cinza pois a entrada e a saída estão claramente fora da caixa-preta. A caixa
12 
, teste de ciclos, teste de 
avaliados nesta técnica de teste dependerão da complexidade e da tecnologia que determinarem a 
construção do componente de software, cabendo portanto avaliação de mais aspectos que os citados 
o e pode construir códigos para efetuar a 
e componentes. Este tipo de teste é desenvolvido analisando o código fonte e elaborando 
ste que cubram todas as possibilidades do componente de software. Dessa maneira, todas as 
para desenvolvimento de 
. Também se enquadram nessa técnica 
testes manuais ou testes efetuados com apoio de ferramentas para verificação de aderência a boas práticas de 
codificação reconhecidas pelo mercado de software. A aderência a padrões e boas práticas visa principalmente a 
diminuição da possibilidade de erros de codificação e a busca de utilização de comandos que gerem o melhor 
desempenho de execução possível. Apesar de muitos desenvolvedores alegarem que não há ganhos perceptíveis 
unidades de software, devemos lembrar que, no ambiente produtivo, 
cada programa pode vir a ser executado milhares ou milhões de vezes em intervalos de tempo pequenos. É na 
o de memória de cada 
programa poderá levar o software a deixar de atender aos objetivos esperados. A técnica de teste de caixa-
, cuja responsabilidade principal 
fica a cargo dos desenvolvedores do software, que por sua vez conhecem bem o código fonte produzido. 
Também chamada de teste funcional, teste comportamental, orientado a dado ou orientado a entrada e saída, a 
, sem se considerar o 
Dados de entrada são fornecidos, o teste é executado e o resultado obtido é 
o previamente conhecido. Como detalhes de implementação não são 
será o teste. Numa situação ideal todas as entradas possíveis 
Outro problema é que a especificação pode 
ambígua em relação ao sistema produzido, e como resultado as entradas especificadas podem não ser as 
preta é escolher um 
se agrupar subconjuntos de entradas possíveis 
que são processadas similarmente, de forma que testar somente um elemento desse subconjunto serve para 
inteiro como entrada, 
de milhares de casos de testes distintos. 
se encontrar um subconjunto de inteiros que maximizem 
a qualidade do teste. Depende do propósito do sistema, mas casos possíveis incluem inteiros pares, inteiros 
teste de sistema e teste 
. A aplicação de critérios de teste leva o testador a produzir um conjunto de casos de teste (ou 
situações de teste). A aplicação do critério de Particionamento de Equivalência (ou uso de classes de 
) permite avaliar se a quantidade de casos de teste produzida é coerente. O Particionamento de 
o que seria exaustivo e 
se assumir que as classes de equivalência serão tratadas da mesma maneira, pois um 
a classe. A partir das classes de equivalência 
se usar a Análise de Valor Limite, o testador construirá casos de teste que atuem nos limites 
superiores e inferiores destas classes, de forma que um número mínimo de casos de teste permita a maior 
Efeito, que consiste em utilizar a ideia de grafos para 
transformar entradas de dados em causas e saídas de dados em efeitos. Esse grafo é posteriormente convertido 
Guessing, que é uma 
técnica em que os analistas de teste, por meio da experiência e intuição, supõem tipos prováveis de erro. 
baseado na especificação, de forma que 
as funcionalidades são testadas de acordo com os requisitos. Apesar de necessário, esse tipo de teste é 
preta e de caixa-branca. Isso 
do componente a fim de desenvolver os casos de teste, 
preta. Manipular entradas de dados e formatar a saída não é 
preta. A caixa-cinza pode incluir 
também o uso de engenharia reversa para determinar por exemplo os limites superiores e inferiores das classes, 
além de mensagens de erro. 
Regressão Ver artigo principal: teste de regressão
Essa é uma técnica de teste aplicável a uma nova versão de software ou à necessidade de se executar um novo 
ciclo de teste durante o processo de des
ou a cada ciclo, todos os testes que já foram aplicados nas versões ou ciclos de teste anteriores do sistema. 
Inclui-se nesse contexto a observação de fases e técnicas de teste de acordo 
provocado pela nova versão ou ciclo de teste. Para efeito de aumento de produtividade e de viabilidadedos 
testes, é recomendada a utilização de ferramentas de
ou ciclo de teste, todos os testes anteriores possam ser executados novamente com maior agilidade.
Técnicas não funcionais 
São técnicas utilizadas para verificar a operação 
de entrada. Outras técnicas de teste existem para testar aspectos não
exemplo, a adequação a restrições de negócio, adequação a normas, ou restrições tecnológic
técnicas funcionais mencionadas acima, que verificam a produção pelo sistema de respostas adequadas de suas 
operações, de acordo com uma especificação, as técnicas não funcionais verificam atributos de um componente 
ou sistema que não se relacionam com a funcionalidade (por exemplo, confiabilidade, eficiência, usabilidade, 
manutenibilidade e portabilidade)8 . 
Uma delas é o uso conjunto de teste de desempenho
processar grandes quantidades de dados
determina a escalabilidade do software. O
usuário é fácil de se aprender e utilizar. Entre verificações cabíveis estão a relação da interface com 
conhecimento do usuário, a compreensibilidade das mensagens de erro e a integridade visual entre diferentes 
componentes.9 Já o teste de confiabilidade
dos dados armazenados e processados. O 
retornar a um estado estável de execução após estar em um estado de 
Fases ou Níveis 
Abstração do teste 
Descendente 
 
Sistema 
Ascendente
Integração 
Unidade 
Uma prática comum é testar o software após uma funcionalidade ser desenvolvida, e antes dela ser implantada 
no cliente, por um grupo de profissionais 
teste ser usada para compensar atrasos do 
começar o teste no mesmo momento que o projeto, num processo contínuo até o fim do projeto.
Em contrapartida, algumas práticas emergentes como a
modelo de desenvolvimento orientado ao teste. Nesse processo, os testes de unidade são escritos primeiro 
(TDD), por engenheiros de software. Antes da implementação da unidade em questão, o te
código é escrito, passando incrementalmente em porções maiores dos casos de teste. Os testes são mantidos 
junto com o resto do código fonte do software, e geralmente também integra o processo de construção do 
software. 
Teste de unidade Ver artigo principal:
Também conhecida como teste unitário ou teste de módulo, é a fase em que se testam as menores unidades de 
software desenvolvidas (pequenas partes ou unidades do sistema).
as subrotinas, métodos, classes ou mesmo pequenos trechos de código. Assim, o objetivo é o de encontrar falhas 
de funcionamento dentro de uma pequena parte do sistema funcionando independentemente do todo.
Teste de integração Ver artigo principal:
para determinar por exemplo os limites superiores e inferiores das classes, 
teste de regressão 
Essa é uma técnica de teste aplicável a uma nova versão de software ou à necessidade de se executar um novo 
ciclo de teste durante o processo de desenvolvimento. Consiste em se aplicar, a cada nova versão do software 
ou a cada ciclo, todos os testes que já foram aplicados nas versões ou ciclos de teste anteriores do sistema. 
se nesse contexto a observação de fases e técnicas de teste de acordo com o impacto de alterações 
provocado pela nova versão ou ciclo de teste. Para efeito de aumento de produtividade e de viabilidade dos 
testes, é recomendada a utilização de ferramentas de automação de teste, de forma que, sobre a nova versão 
ou ciclo de teste, todos os testes anteriores possam ser executados novamente com maior agilidade.
São técnicas utilizadas para verificar a operação correta do sistema em relação a casos inválidos ou inesperados 
de entrada. Outras técnicas de teste existem para testar aspectos não-funcionais do software, como por 
exemplo, a adequação a restrições de negócio, adequação a normas, ou restrições tecnológic
técnicas funcionais mencionadas acima, que verificam a produção pelo sistema de respostas adequadas de suas 
operações, de acordo com uma especificação, as técnicas não funcionais verificam atributos de um componente 
e relacionam com a funcionalidade (por exemplo, confiabilidade, eficiência, usabilidade, 
teste de desempenho e teste de carga, que verifica se o software consegue 
processar grandes quantidades de dados, e nas especificações de tempo de processamento exigidas, o que 
do software. Oteste de usabilidade é necessário para verificar se a
é fácil de se aprender e utilizar. Entre verificações cabíveis estão a relação da interface com 
conhecimento do usuário, a compreensibilidade das mensagens de erro e a integridade visual entre diferentes 
teste de confiabilidade é usado para verificar se o software é seguro em assegurar o sigilo 
 teste de recuperação é usado para verificar a robustez do software em 
retornar a um estado estável de execução após estar em um estado de falha. 
 
Ascendente 
Uma prática comum é testar o software após uma funcionalidade ser desenvolvida, e antes dela ser implantada 
no cliente, por um grupo de profissionais diferente da implementação. Essa prática pode resultar na fase de 
teste ser usada para compensar atrasos do projeto, comprometendo o tempo devotado ao teste. Outra prática é 
começar o teste no mesmo momento que o projeto, num processo contínuo até o fim do projeto.
Em contrapartida, algumas práticas emergentes como a programação extrema e o desenvolvimento ágil
tado ao teste. Nesse processo, os testes de unidade são escritos primeiro 
), por engenheiros de software. Antes da implementação da unidade em questão, o te
código é escrito, passando incrementalmente em porções maiores dos casos de teste. Os testes são mantidos 
junto com o resto do código fonte do software, e geralmente também integra o processo de construção do 
Ver artigo principal: teste de unidade 
Também conhecida como teste unitário ou teste de módulo, é a fase em que se testam as menores unidades de 
nas partes ou unidades do sistema).10 O universo alvo desse tipo de teste são 
, métodos, classes ou mesmo pequenos trechos de código. Assim, o objetivo é o de encontrar falhas 
uma pequena parte do sistema funcionando independentemente do todo.
Ver artigo principal: teste de integração 
13 
para determinar por exemplo os limites superiores e inferiores das classes, 
Essa é uma técnica de teste aplicável a uma nova versão de software ou à necessidade de se executar um novo 
envolvimento. Consiste em se aplicar, a cada nova versão do software 
ou a cada ciclo, todos os testes que já foram aplicados nas versões ou ciclos de teste anteriores do sistema. 
com o impacto de alterações 
provocado pela nova versão ou ciclo de teste. Para efeito de aumento de produtividade e de viabilidade dos 
, de forma que, sobre a nova versão 
ou ciclo de teste, todos os testes anteriores possam ser executados novamente com maior agilidade. 
correta do sistema em relação a casos inválidos ou inesperados 
funcionais do software, como por 
exemplo, a adequação a restrições de negócio, adequação a normas, ou restrições tecnológicas. Em contraste às 
técnicas funcionais mencionadas acima, que verificam a produção pelo sistema de respostas adequadas de suas 
operações, de acordo com uma especificação, as técnicas não funcionais verificam atributos de um componente 
e relacionam com a funcionalidade (por exemplo, confiabilidade, eficiência, usabilidade, 
, que verifica se o software consegue 
, e nas especificações de tempo de processamento exigidas, o que 
é necessário para verificar se a interface de 
é fácil de se aprender e utilizar. Entre verificações cabíveis estão a relação da interface com 
conhecimento do usuário, a compreensibilidade das mensagens de erro e a integridade visual entre diferentes 
é usado para verificar se o software é seguro em assegurar o sigilo 
é usado para verificar a robustez do software em 
Uma prática comum é testar o software após uma funcionalidade ser desenvolvida, e antes dela ser implantada 
. Essa prática pode resultar na fase deprojeto, comprometendo o tempo devotado ao teste. Outra prática é 
começar o teste no mesmo momento que o projeto, num processo contínuo até o fim do projeto. 
desenvolvimento ágil focam o 
tado ao teste. Nesse processo, os testes de unidade são escritos primeiro 
), por engenheiros de software. Antes da implementação da unidade em questão, o teste falha. Então o 
código é escrito, passando incrementalmente em porções maiores dos casos de teste. Os testes são mantidos 
junto com o resto do código fonte do software, e geralmente também integra o processo de construção do 
Também conhecida como teste unitário ou teste de módulo, é a fase em que se testam as menores unidades de 
O universo alvo desse tipo de teste são 
, métodos, classes ou mesmo pequenos trechos de código. Assim, o objetivo é o de encontrar falhas 
uma pequena parte do sistema funcionando independentemente do todo. 
Na fase de teste de integração, o objetivo é encontrar falhas provenientes da integração interna dos 
componentes de um sistema. Geralmente os tipos de falhas encontradas são de transmissão de dados. Por 
exemplo, um componente A pode estar aguardando o retorno de um valor X ao
componente B; porém, B pode retornar um valor Y, gerando uma falha. O teste de integração conduz ao 
descobrimento de possíveis falhas associadas à
o tratamento de interfaces com outros sistemas (integração entre sistemas). Essas interfaces são testadas na 
fase de teste de sistema, apesar de, a critério do gerente de projeto, estas interfaces podem ser testadas 
mesmo antes de o sistema estar plenamente construído.
 
Teste de sistema Ver artigo principal:
Na fase de teste de sistema, o objetivo é executar o sistema sob ponto de vista de seu usuário final, varrendo as 
funcionalidades em busca de falhas em relação aos objetivos originais. Os testes são executados em condições 
similares – de ambiente, interfaces sistêmicas e massas de dados 
dia de manipulação do sistema. De acordo com a política de uma organização, podem ser utilizadas condições 
reais de ambiente, interfaces sistêmicas e massas de dados.
Teste de aceitação Ver artigo principal:
Geralmente, os testes de aceitação são realizados por um grupo restrito de usuários finais do sistema, que 
simulam operações de rotina do sistema de modo a verificar se seu comportamento está de acordo com o 
solicitado. Teste formal conduzido para determinar se um sistema satisfaz ou não seus critérios de aceitação e 
para permitir ao cliente determinar se aceita ou não o sistema. Validação de um 
usuário ou por terceira parte, com o uso de dados ou cenários especificados ou reais. Pode incluir testes 
funcionais, de configuração, de recuperação de falhas, de segurança e de desempenho.
Teste de operação Ver artigo princ
Nessa fase o teste é conduzido pelos administradores do ambiente final em que o sistema ou software entrará 
em ambiente produtivo. Vale ressaltar que essa fase é aplicável somente a sistemas de informação próprios de 
uma organização, cujo acesso pode ser feito interna ou externamente a essa organização. Nessa fase de teste 
devem ser feitas simulações para garantir que a entrada em produção
testes de instalação, simulações com cópia de segurança
entrará em produção para substituir outro e é necessário garantir que o novo sistema continuará garantindo o 
suporte ao negócio. 
Testes alfa e beta Ver artigo principal:
Em casos especiais de processos de desenvolvimento de sof
de bancos de dados e outros softwares distribuídos em escala nacional e internacional 
também especiais antes do produto ser disponibilizado a todos os usuários.
O período entre o término do desenvolvimento e a entre
nesse período, como testes alfa. PRESSMAN
desenvolvedor, com este "olhando sobre o ombro" do usuário e registrando erros e problemas de uso.
Completada a fase alfa de testes, são lançadas a grupos restritos de usuários, versões de teste 
denominadas versões beta. Ele também é um teste de aceitação voltado para softwares cuja distribuição 
atingirá grande número de usuários de uma ou várias empresas compr
é conduzido em uma ou mais instalações do cliente, pelo usuário final do software. Diferente do teste alfa, o 
desenvolvedor geralmente não está presente. Consequentemente, o teste beta é uma aplicação do software nu
ambiente que não pode ser controlado pelo desenvolvedor. O cliente registra todos os problemas (reais ou 
imaginários) que são encontrados durante o teste beta e os relata ao desenvolvedor em intervalos regulares. 
Com o resultado dos problemas relatados d
modificações e depois se preparam para liberar o produto de software para toda a base de clientes.
A comunidade do teste de software usa o termo teste gama de forma sarcástica referindo
são mal testados e são entregues aos usuários finais para que estes encontrem os defeitos já em fase de 
produção. 
Candidato a lançamento 
Ultimamente, e principalmente na comunidade de
lançamento (release candidate) para indicar uma versão que é ca
quantidade de erros encontrados. Tais versões são um passo além do teste beta, sendo divulgadas para toda a 
comunidade. 
integração, o objetivo é encontrar falhas provenientes da integração interna dos 
componentes de um sistema. Geralmente os tipos de falhas encontradas são de transmissão de dados. Por 
exemplo, um componente A pode estar aguardando o retorno de um valor X ao executar um método do 
componente B; porém, B pode retornar um valor Y, gerando uma falha. O teste de integração conduz ao 
descobrimento de possíveis falhas associadas à interface do sistema.Não faz parte do escopo dessa fase de teste 
sistemas (integração entre sistemas). Essas interfaces são testadas na 
fase de teste de sistema, apesar de, a critério do gerente de projeto, estas interfaces podem ser testadas 
mesmo antes de o sistema estar plenamente construído. 
Ver artigo principal: teste de sistema 
Na fase de teste de sistema, o objetivo é executar o sistema sob ponto de vista de seu usuário final, varrendo as 
funcionalidades em busca de falhas em relação aos objetivos originais. Os testes são executados em condições 
de ambiente, interfaces sistêmicas e massas de dados – àquelas que um usuário utilizará no seu dia
acordo com a política de uma organização, podem ser utilizadas condições 
reais de ambiente, interfaces sistêmicas e massas de dados. 
Ver artigo principal: teste de aceitação 
Geralmente, os testes de aceitação são realizados por um grupo restrito de usuários finais do sistema, que 
ma de modo a verificar se seu comportamento está de acordo com o 
solicitado. Teste formal conduzido para determinar se um sistema satisfaz ou não seus critérios de aceitação e 
para permitir ao cliente determinar se aceita ou não o sistema. Validação de um software pelo comprador, pelo 
usuário ou por terceira parte, com o uso de dados ou cenários especificados ou reais. Pode incluir testes 
funcionais, de configuração, de recuperação de falhas, de segurança e de desempenho. 
Ver artigo principal: teste de operação 
Nessa fase o teste é conduzido pelos administradores do ambiente final em que o sistema ou software entrará 
ressaltar que essa fase é aplicável somente a sistemas de informação próprios de 
uma organização, cujo acesso pode ser feito interna ou externamente a essa organização. Nessa fase de teste 
devem ser feitas simulações para garantir que a entrada em produção do sistema será bem sucedida. Envolve 
cópia de segurança dos bancos de dados, etc.. Em alguns casos um sistema 
entrará em produção para substituir outro e é necessário garantir que o novo sistema continuará garantindo o 
Ver artigo principal: versão alfa Ver artigo principal: versão beta 
Em casos especiais de processos de desenvolvimento de software – sistemas operacionais, sistemas 
e outros softwares distribuídos em escala nacional e internacional – os testes requerem fases 
também especiais

Outros materiais