Buscar

GRA1557 PRÁTICAS DE ENGENHARIA DE SOFTWARE unidade 3

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 36 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 36 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 36 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

Continue navegando


Prévia do material em texto

21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630_… 1/36
PRÁTICAS DE ENGENHARIA DEPRÁTICAS DE ENGENHARIA DE
SOFTWARESOFTWARE
GERENCIAMENTO,GERENCIAMENTO,
CONFIGURAÇÃO E TESTECONFIGURAÇÃO E TESTE
DE DE SOFTWARESOFTWARE
Autor: Esp. Daniel Brandão
I N I C I A R
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630_… 2/36
introduçãoIntrodução
Arquitetura de software é o estudo da estrutura e desempenho em larga
escala dos sistemas de software. Aspectos importantes da arquitetura de um
sistema incluem a divisão de funções entre os módulos, os meios de
comunicação entre os módulos e a representação de informações
compartilhadas. A de�nição visa abranger esses usos distintos, mas
relacionados, enquanto encoraja uma de�nição mais rigorosa do que
constitui a organização fundamental de um sistema em domínios especí�cos.
Para um bom funcionamento, adotar estruturas que auxiliem na con�guração
e gerenciamento de projetos é fundamental. Nesta unidade, iremos mais a
fundo nas técnicas e tecnologias envolvidas no processo de gerenciamento e
con�guração de versões de software em um processo de entrega e integração
contínua - CD/CI (em inglês chamado de Continuous Delivery/Continuous
Integration), assim como de técnicas e automação de testes.
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630_… 3/36
Uma das boas práticas na gestão de projetos de software é o controle de
processos e de versionamento de código-fonte. Com um projeto bem de�nido
na fase de análise de sistemas, a primeira etapa como levantamento de
requisitos e boas práticas são estabelecidas, a �m de que a equipe de
desenvolvimento esteja a par do contexto em que estarão envolvidos no
projeto.
Com o avanço das tecnologias envolvidas na troca de mensagens em
sistemas, as aplicações e softwares precisaram evoluir e, com isso, o modo
como as equipes de desenvolvimento e os programadores full stack criam e
disponibilizam essas aplicações também precisou evoluir. As linguagens de
programação deixaram de ser puro código e passaram a ter toda uma base
por trás, com frameworks e servidores próprios para executar aquele código.
Com essa estrutura, a forma como se enviam os arquivos para um servidor,
como na web, precisou acompanhar tudo isso, evoluindo do uso simples do
protocolo FTP (File Transfer Protocol ou Protocolo de Transferência de Arquivo)
Gerenciamento deGerenciamento de
Versões deVersões de
SoftwareSoftware
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630_… 4/36
para o CD (Continuous Delivery ou Entrega Contínua) e CI (Continuous
Integration ou Integração Contínua).
Um projeto de software requer diferentes olhares, desde sua fase de ideação,
na prototipação inicial, passando por levantamento de requisitos,
re�namento desses requisitos, a construção de modelos de banco de dados,
o desenvolvimento em si, testes e mais testes. Uma das fases �nais é a
entrega do projeto, fase essa conhecida como deploy (do inglês, implementar).
É nesta última fase que o sistema passa a estar em um servidor, já como
ambiente de homologação e habilitado para testes em ambiente real que,
posteriormente, será liberado no chamado Ambiente de Produção. Este
ambiente é como chamamos o estado de uso do sistema por seus usuários. É
o ambiente onde o sistema está em execução de fato.
Com o sistema em produção, o que pode ocorrer após isso são as eventuais
manutenções ou melhorias, lançamento de novas versões e trabalhos do
gênero. Para Lopes et al. (2019, p. 2),
Cada etapa do processo não envolve somente o desenvolvedor e a
linguagem, mas também o ambiente onde os processos estão
ocorrendo, de forma que um mesmo produto de software assume
comportamentos diferentes de acordo com seu ambiente de
desenvolvimento. Isso porque durante seu desenvolvimento um
sistema precisa passar por uma série de testes, mudanças e
adequações [...].
Observe que a etapa de entrega é precedida de outras que também são de
total importância. A entrega ou implantação de uma aplicação também
necessita de cuidados especiais e deve contar com especialistas no processo,
de acordo com o grau de complexidade da estrutura de servidor empregada,
das tecnologias utilizadas no desenvolvimento e da quantidade de entregas
necessárias ao longo do processo de deploy.
Métodos Ágeis de Desenvolvimento
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630_… 5/36
Assim como um sistema não é criado apenas de uma forma, uma só
linguagem de programação e um mesmo banco de dados sempre, o modo de
criar projetos também possui diferentes vertentes. Os métodos ágeis de
desenvolvimento de software surgiram no �nal da década de 90, propondo
uma nova abordagem para organizar tais atividades (SATO, 2014, p. 2).
Esses métodos não trabalham apenas com a ideia da programação em si, mas
de todos os aspectos de um projeto, incluindo as entregas. Até então, as
tarefas de desenvolvimento e a parte operacional do sistema eram bem
divididas em times ou funções distintas. Enquanto um tem o interesse apenas
de pensar no desenvolvimento em si, visando ao código-limpo e requisitos
satisfeitos, o outro preza pela estabilidade do serviço e a persistência da
aplicação, sempre disponível ao usuário �nal.
Na tentativa de agilizar o processo e de não ter um abismo entre a equipe ou
pessoa responsável pela programação em si e quem irá testar e
posteriormente implantar a aplicação em servidor de produção, foram
surgindo novas visões e técnicas de trabalho entre os processos. Dessa
necessidade, surgiu o conceito de CI/CD – Continuous Integration/Continuous
Delivery (Integração Contínua e Entrega Contínua). Essa técnica diminui o
tempo entre cada deploy e passa a ter mais entregáveis ao longo do processo.
Sato (2013, p. 5) ainda a�rma que o aumento da frequência de deploys faz
com que a quantidade de mudanças em cada deploy diminua, reduzindo
também o risco associado a ele. Logo, com mais entregas em tempos mais
curtos entre si, haverá menos trabalho de correção, fazendo com que a
equipe consiga entregar um produto de mais qualidade com baixos riscos de
grandes manutenções futuras.
Entrega Contínua
CD (Continuous Delivery), como se chama o processo de Entrega Contínua de
uma aplicação, é o processo de entrega constante. Feita assim que pequenos
artefatos são desenvolvidos. No desenvolvimento de sistemas modulares, por
exemplo, cada módulo é uma parte do sistema. A aplicação é constituída de
partes menores onde cada uma representa um módulo, podendo ser dividido
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630_… 6/36
em: cadastro de clientes, catálogo de produtos, controle �nanceiro, recursos
humanos, por exemplo. Na técnica de Entrega Contínua (CD), ao invés de ser
submetida apenas a parte da aplicação ou a aplicação inteira de uma vez, ao
�nal do processo, as entregas ou submissões da aplicação em pequenas
etapas podem ser diárias, semanais ou em outra periodicidade.
Para Bernardo (2018, on-line), Entrega Contínua é uma abordagem na qual os
times de desenvolvimento lançam produtos de qualidade de forma frequente,
previsível e automatizada. Em vez de fazer grandes entregas de uma vez,
fazem várias pequenas e rápidas — reduzindo as chances de erros e
conquistando maior controle de qualidade. A prática se apresenta como uma
solução moderna de desenvolvimento de sistemas, visto que, com o
desenvolvimento sendo feito orientado a entregas, ao �nal de cada entrega, o
programador tem mais segurança. O que ele está criando passa por testes de
execução tanto em ambiente de desenvolvimento quanto no ambiente deprodução.
Esse processo é compreendido quando se utiliza o versionamento de código.
Ao se utilizar técnicas e ferramentas de controle de versão, há uma segurança
de que, caso algum erro ocorra durante o processo de deploy ou se alguma
das entregas feitas apresente defeito, a aplicação pode retornar a um estágio
anterior ao da entrega defeituosa, fazendo com que o erro seja reparado de
maneira mais rápida e prática. Muitas vezes, isso é detectado tão depressa
que o usuário do sistema em si nem percebe que houve um downgrade da
aplicação (voltar a um estado anterior).
Com a aplicação do conceito de Entrega Contínua (CD), alguns benefícios são
notados, como:
automatização do processo de deploy de uma aplicação;
melhora na produtividade do time de desenvolvimento;
encontro e correções de bugs mais rapidamente;
distribuição de atualizações mais rapidamente.
Podemos dizer que essas são as principais características do uso de CI/CD no
desenvolvimento e instalação de uma aplicação em servidor web. Uma tarefa
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630_… 7/36
geralmente ligada da CD é o provisionamento de servidor.
Segundo Sato (2014, p. 63),
O termo provisionamento é comumente usado por empresas de
telecomunicações e por equipes de operações para se referir às
etapas de preparação iniciais de con�guração de um novo recurso.
Por exemplo: provisionar um aparelho celular, provisionar acesso à
internet, provisionar um servidor, provisionar uma nova conta de
usuário, e assim por diante.
Em outras palavras, provisionar é prover previamente um ambiente ou
con�guração inicial de algum serviço para que o usuário possa utilizar sem ter
mais esse trabalho a cada novo aparelho. No caso de aplicações web, já é
comum utilizar servidores em nuvem ou servidores dedicados em empresas
terceirizadas. Nesse caso, o nível de provisionamento vai variar, podendo
utilizar o conceito de virtualização, com máquinas virtuais, atuando em um
mesmo servidor, onde toda a estrutura necessária em nível de software pode
ser feita ainda em ambiente de desenvolvimento e, posteriormente, ser
submetida completamente, já pronta e con�gurada, para o ambiente de
produção em servidor web.
praticarVamos Praticar
Leia o trecho:
“Muitas empresas de sucesso na internet – como Google, Amazon, Net�ix, Flickr,
GitHub e Facebook – perceberam que a tecnologia pode ser usada a seu favor e que
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630_… 8/36
o atraso no deploy para produção signi�ca atrasar sua habilidade de competir e se
adaptar a mudanças no mercado. É comum que elas realizem dezenas ou até
centenas de deploys por dia” (SATO, 2014, p. 4).
Essa linha de pensamento que tenta diminuir o tempo entre a criação de uma ideia
e sua implementação em produção também é conhecida como:
a) Engenharia de Software.
b) Arquitetura de Software.
c) Integração Contínua.
d) Entrega Contínua.
e) Métodos Ágeis.
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630_… 9/36
O ambiente de produção é como chamamos o ambiente de servidor web em
que a aplicação estará em execução e, em consequência, sendo utilizada pelo
usuário �nal da mesma. Após a submissão e as devidas parametrizações do
servidor, a aplicação deverá estar pronta para uso. Mas, como submeter os
arquivos da aplicação ao servidor? É isso que veremos a seguir, com duas
formas distintas de fazer a tarefa: com Entregas Contínuas ou um deploy
único.
Aplicação com Entregas Contínuas
Segundo Bernardo (2018, on-line), na integração contínua,
os desenvolvedores integram as suas mudanças ao branch principal
sempre que possível. [...] As mudanças são validadas com builds de
testes que rodam de forma automatizada, impedindo problemas na
hora de lançar mudanças nas integrações.
Integração eIntegração e
Con�guração deCon�guração de
SistemasSistemas
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 10/36
Geralmente ligada a um processo automatizado, as entregas e integrações
contínuas permitem que a equipe de desenvolvimento se preocupe menos
com as entrega em si e mais com sua tarefa principal, que é a de criar as
aplicações e seus testes. Esta metodologia permite ter equipes mais focadas
em programar propriamente, deixando algumas tarefas mais autônomas e
menos burocráticas, dando mais liberdade aos desenvolvedores.
Esta integração e entregas contínuas estão diretamente ligadas ao
versionamento e controle de código. O método mais comum de criar versões
de código é o uso do GIT. Serviços como GitHub e GitLab são os mais
conhecidos serviços que utilizam a metodologia da criação de versões de
arquivos em ambiente web. Esta prática com Git realiza a criação de
repositórios onde cada arquivo de um projeto é criado e submetido a um
servidor, onde será armazenado como cópia de seu estado atual, permitindo
assim que cada arquivo criado e alterado tenha a possibilidade de ser
revertido a um estado anterior. Logo, são criadas cópias ou versões do
arquivo, vindo daí o conceito de versionamento.
O controle de versões ou de código-fonte é uma forma de gerenciamento na
alteração de códigos em arquivos de uma aplicação. É como você ter um site
na web, já funcionando e sendo utilizado pelos usuários, mas se você precisar
adicionar mais uma opção ao menu. Você pode alterar o arquivo com o menu
localmente e, após a alteração, submetê-lo ao servidor web. Com isso, o site
será atualizado e a nova opção de menu estará disponível. Em um processo
de transferência de arquivo comum via FTP, por exemplo, o arquivo que
contém o menu originalmente será substituído pela nova versão. Com uso do
versionamento de código, tanto a nova versão do arquivo como a anterior,
estão disponíveis. Daí vem a ideia de versão de código.
Git
Git é um sistema de controle de versão de arquivos onde é possível
desenvolver projetos com diferentes pessoas contribuindo ao mesmo tempo,
criando versões de cada alteração sem riscos de alterações serem
sobrescritas (SCHMITZ, 2015). Esse sistema foi criado por Linus Torvalds, o
mesmo criador do núcleo (kernel) do sistema operacional Linux. A ideia do Git
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 11/36
é ter diferentes versões de um mesmo arquivo, de maneira independente um
do outro, podendo reverter a um estado anterior o arquivo sempre que
necessário. Cada atualização de arquivo é chamada de con�rmação. É
geralmente utilizado como uma aplicação por shell script ou prompt de
comando, com comandos básicos como Pull, Commit, Split e Merge.
Os maiores benefícios apresentados pelo uso do versionamento via Git são:
Acompanhamento histórico de alterações: é possível revisar como
as con�rmações foram alteradas ao longo do tempo, ver quando e
por quem as alterações foram feitas e reverter para uma
con�rmação anterior, se necessário. Esse histórico facilita a
identi�cação e a correção de bugs.
Trabalho em equipe: você pode compartilhar seu código facilmente
com outros colegas de equipe para revisão antes de con�rmar ou
mesclar um arquivo. Além disso, os recursos de rami�cação e revisão
permitem o desenvolvimento simultâneo. Várias pessoas podem
trabalhar no mesmo arquivo e resolver as diferenças nele
posteriormente.
Melhora na velocidade e produtividade da equipe: o Git facilita o
rastreamento de alterações no código. O desenvolvedor pode se
concentrar em escrever código, em vez de gastar tempo rastreando e
mesclando versões diferentes de sua equipe. Além disso, o Git
executa cálculos e armazena seu repositório principal localmente,
tornando-o mais rápido na maioria das operações.
Disponibilidade e redundância: o Git trabalha de maneira
distribuída,o que signi�ca que não existe um local central e único
onde tudo esteja armazenado. Em um sistema distribuído, existem
vários backups no caso de você precisar de um. Essa abordagem
também signi�ca que você pode trabalhar o�-line e con�rmar suas
alterações quando estiver tudo pronto.
Git é o padrão do setor: devido à sua popularidade, o Git se
transformou no padrão de muitos ambientes de desenvolvimento
integrado (IDEs) e por muitas ferramentas populares de
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 12/36
desenvolvedor, incluindo AWS CodeCommit, Jenkins e Travis. Existem
muitos recursos gratuitos do Git disponíveis.
A Figura 3.1 apresenta a estrutura de um repositório Git, baseado em um
�uxo de trabalho com diferentes rami�cações. 
#PraCegoVer: Fluxo de trabalho em um processo Git, Repositório do Grupo
de trabalho replica para o diretório do git clona para os arquivos locais com
branch. 
 
Como apresentado pela �gura, o primeiro elemento representa o chamado
Working Directory, que é a pasta que contém os arquivos atuais, em que se
está trabalhando no momento. A segunda �gura representa o Index Stage,
uma área temporária de arquivos, que estarão preparados para realização do
commit (envio). A terceira imagem seria a Head, área de rami�cação dos
arquivos no repositório.
Figura 3.1 - Fluxo de trabalho em um processo Git 
Fonte: Elaborada pelo autor.
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 13/36
Para realização das operações, o ambiente Git propõe o uso de comandos,
como: Pull, Push, Merge, Clone, Commit, Branch, entre outros. Através de linha
de comando, você gerencia projetos inteiros ou arquivos especí�cos em um
ou mais repositórios.
i
saibamaisSaiba mais
O Git utiliza comandos básicos, uma espécie
de linguagem própria para troca de
informações e o cumprimento do �uxo de
processos dele mesmo. Alguns comandos
como Git init (utilizando para iniciar um
repositório), Git Pull (serve para baixar as
últimas alterações de um repositório), Git
Remote -V (para saber onde estão indo as
alterações sendo realizadas), Git Status
(comando que mostra se há alterações a
serem submetidas ao repositório), Git
Commit (comando que “comita”, ou seja,
envia arquivos novos ou alterados aos
servidores). Saiba mais sobre comandos Git
acessando o site.
ACESSAR
https://rogerdudler.github.io/git-guide/index.pt_BR.html
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 14/36
praticarVamos Praticar
O versionamento de código via GIT é uma forma de gerenciar código-fonte ou
arquivos de maneira a criar instâncias deles. Com esse sistema, é possível
compartilhar arquivos entre vários autores e colaboradores sob a segurança de
estar criando cópias de cada versão de arquivo. Sobre os benefícios de se utilizar o
versionamento via GIT, é correto o que se a�rma em:
a) Transferência de arquivos via Cliente FTP.
b) Redundância e backup único dos arquivos.
c) Uma tarefa executada exclusivamente pelo DevOps.
d) Aumento na velocidade e na produtividade no desenvolvimento.
e) Menor acoplamento entre equipes de desenvolvimento e produção.
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 15/36
O contexto do desenvolvimento de software engloba técnicas que buscam
agilizar o processo da criação de sistemas. Como temos visto, alguns passos
são importantes de serem contemplados no projeto de software com objetivo
de não apenas concluir um projeto, mas de manter a qualidade no produto
�nal, contando com menor tempo de desenvolvimento e a otimização do
trabalho da equipe de desenvolvimento. Um dos aspectos mais importantes é
o teste de software.
Geralmente, o teste de software é de�nido como uma atividade para veri�car
se os resultados reais correspondem aos resultados esperados e para
garantir que o sistema de software esteja livre de defeitos. Envolve a
execução de um componente de software ou de um sistema para avaliar uma
ou mais propriedades de interesse. O teste de software também ajuda a
identi�car erros, lacunas ou falta de requisitos, ao contrário dos requisitos
reais (PEZZÈ e YOUNG, 2018). Pode ser feito manualmente ou usando
ferramentas automatizadas. Alguns preferem dizer o teste de software como
um teste de caixa branca e caixa preta.
Teste de Teste de SoftwareSoftware
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 16/36
Existem diferentes técnicas de testes. A TLD ou Teste Depois do
Desenvolvimento é o processo mais comum na prática de construção de um
software (BARROS e JÚNIOR, 2019, p. 10). Assim como este, existem outros
como o TDD ou Desenvolvimento Orientado a Testes, com as tarefas de testes
sendo realizadas antes da criação de uma funcionalidade (BARROS e JÚNIOR,
2019).
Para Pezzè e Young (2018, p. 25), o teste completo de cada produto individual
pode não ser econômico, dependendo dos custos do teste, da con�abilidade
do processo de produção e dos custos de falhas em campo. Nesse contexto, é
importante compreender todos os tipos de testes para poder ponderar tanto
na estimativa de prazo quanto de custo que cada teste deverá gerar em torno
de um projeto de software. O teste é importante porque os erros do software
podem ser caros ou até perigosos, podendo causar perdas monetárias e
humanas, com exemplos históricos que podem até causar espanto.
Alguns dos casos mais emblemáticos são: erros em sistemas �nanceiros, bug
do milênio, falha de software embarcado em automóveis (que custa uma
fortuna com recalls), promoções em lojas virtuais vendendo produtos caros a
meros R$ 1,00, entre outros casos. Em todos os casos, alguns testes antes da
validação e implantação do software poderiam ter evitado milhões ou até
bilhões de prejuízo para empresas e até instituições públicas. A falta de um
planejamento e de um bom plano de testes pode custar caro, literalmente.
Plano de Testes
A melhor maneira de aplicar testes em software é começar elaborando um
plano de testes. Para Andrade e Viana (2016, on-line),
No ciclo de desenvolvimento de softwares, a realização de testes tem
espaço desde a fase de design até o lançamento do produto. Eles
conferem con�abilidade ao software, reorientam o desenvolvimento
do design e do código e poupam gastos desnecessários, quando
detectam erros nas fases iniciais do desenvolvimento de um software.
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 17/36
Para eles, para cada tipo de uso que o software deverá ter após desenvolvido,
existe um grau de necessidade e importância dos testes. O plano de testes se
trata da documentação dos testes de software cujo conteúdo deve contemplar
os critérios aceitos para o produto �nal, a �m de guiar os passos da execução
dos testes.
Assim como outras etapas da engenharia de software, os testes possuem
certi�cações que são concedidas por organizações internacionais que
trabalham especi�camente com qualidade, através de certi�cações
concedidas por organizações que avaliam o processo considerando modelos
de qualidade, como o Capability Maturity Model Integration (CMMI), assim
como a ISO-12207.
Segundo Pezzè e Young (2018, p. 29), nenhuma técnica de teste ou de análise
pode servir sozinha a todos os objetivos. As razões primárias para combinar
técnicas em vez de escolher uma técnica melhor são:
E�cácia para diferentes classes de erros. Por exemplo, condições de
corrida são muito difíceis de encontrar com teste convencional, mas
podem ser detectadas com análise estática.
Aplicabilidade em diferentes etapas do projeto. Por exemplo, pode-se
aplicar técnicas de inspeção inicialmente aos requisitose
representações de projeto que não são apropriadas para análises
mais automáticas.
Diferenças de objetivos. Por exemplo, teste sistemático (não
randômico) busca maximizar detecção de falhas, mas não pode ser
usado para medir con�abilidade. Para isso, teste estatístico é
necessário.
Compromissos entre custo e garantias. Por exemplo, pode-se utilizar
uma técnica relativamente custosa para garantir algumas
propriedades essenciais de componentes centrais (exemplo: um
kernel de segurança), enquanto que as mesmas técnicas seriam
caras demais para aplicar a todo o projeto.
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 18/36
Tipos de Testes
Normalmente, o teste é classi�cado em três categorias: Teste Funcional, Teste
Não Funcional ou Teste de Desempenho, Manutenção (Regressão e
Manutenção). A seguir, são descritas, de melhor forma, as três categorias de
teste:
O teste funcional, conhecido como teste caixa-preta, é caracterizado
por técnicas para derivar casos de teste a partir de especi�cações
funcionais. Dentro dos testes funcionais, temos: unidade, integração,
interoperabilidade, de aceitação do usuário, entre outros.
Os testes não funcionais, também chamado de teste caixa-branca,
buscam realizar a veri�cação da estrutura de software, através de
requisitos não necessariamente operacionais, mas de partes de
suporte e veri�cação de ambiente. Alguns dos tipos de testes não
funcionais geralmente aplicados são: de atuação, resistência, carga,
volume, escalabilidade, usabilidade.
Os testes de manutenção têm a ver com testes realizados para
veri�car algumas situações que podem ter gerado alteração ou mau
funcionamento em sistemas que já estão em uso. Os principais são:
de regressão e manutenção.
Além da classi�cação de testes, existem tipos de testes que são empregados
como metodologia ágil, na busca da automatização de testes, como TDD,
ATDD, DDD, BDD e outros, que serão apresentados a seguir.
DDD
O Domain-Driven Design, ou Design Orientado a Domínio, foi inicialmente
introduzido e popularizado pelo programador Eric Evans em seu livro Design
Orientado a Domínio: Atacando as Complexidade no Coração do Software
(2004). É a expansão e a aplicação do conceito que se aplica ao
desenvolvimento de software. Segundo Evans (2016), DDD visa facilitar a
criação de aplicativos complexos, conectando as partes relacionadas do
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 19/36
software em um modelo em constante evolução e concentra-se em três
princípios fundamentais:
Concentra-se no núcleo do domínio e domínio lógico.
Baseia-se em projetos complexos em modelos de domínio.
Colabora constantemente com domínios especializados, para
melhorar o modelo de aplicativo e resolver quaisquer domínios de
problemas relacionados e emergentes.
Domain-Driven Design também enfatiza fortemente a prática cada vez mais
popular de continuous integration (CI ou Integração Contínua) que solicita que
toda a equipe de desenvolvimento use um repositório de código
compartilhado e envie con�rmações diárias diariamente (se não várias vezes
ao dia). Um processo automático é executado no �nal do dia, que veri�ca a
integridade de toda a base de códigos, executando testes de unidade
automatizados, testes de regressão e similares, para detectar rapidamente
quaisquer problemas em potencial que possam ter sido introduzidos nas
con�rmações mais recentes.
TDD
Primeiramente, na abordagem de Desenvolvimento Orientado a Testes (TDD),
é desenvolvido o teste que especi�ca e valida o que o código fará. De maneira
simples, os casos de teste são criados antes da criação do código. O objetivo
do TDD é tornar o código mais claro, simples e sem erros.
O TDD começa com o design e o desenvolvimento de testes para todas as
funcionalidades de um aplicativo. A técnica instrui os desenvolvedores a
escrever um novo código somente se um teste automatizado falhar. Isso evita
a duplicação de código. A abordagem TDD é principalmente uma técnica de
especi�cação. Isso garante que seu código-fonte seja exaustivamente testado
no nível con�rmatório.
Existem dois níveis de TDD: Developer TDD e o TDD de aceitação (ATDD). O
primeiro trata escreve um teste de desenvolvedor único, ou seja, teste de
unidade e, em seguida, apenas o código de produção su�ciente para realizar
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 20/36
esse teste. O teste de unidade se concentra em todas as pequenas
funcionalidades do sistema. O Developer TDD é chamado simplesmente de
TDD. Já no ATDD, você escreva um único teste de aceitação. Este teste cumpre
os requisitos da especi�cação ou satisfaz ao comportamento do sistema.
Depois disso, você escreva apenas o código de produção/funcionalidade
su�ciente para realizar esse teste de aceitação. O teste de aceitação se
concentra no comportamento geral do sistema. O ATDD também era
conhecido como Desenvolvimento Comportamental (BDD). 
praticarVamos Praticar
Teste de software é um processo de veri�cação de um sistema para decidir se ele
atende aos requisitos especi�cados e produz os resultados desejados. Como
resultado, você identi�ca erros no produto de software. De acordo com os tipos de
teste de software, está correto o que se a�rma em:
a) TDD é um teste que se concentra no núcleo de domínio de um sistema.
b) BDD e TDD se trata do mesmo tipo de teste.
c) O teste caixa-branca é o tipo de teste de manutenção de software.
d) O teste caixa-preta também é conhecido como Teste Funcional.
e) Os testes devem ser aplicados apenas na fase final do desenvolvimento.
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 21/36
O gerenciamento de implantação de projetos de software abrange o
conhecimento, técnicas e ferramentas necessárias para gerenciar o chamado
deploy, a entrega em si de um produto de software.
Diferente da metodologia de entregas contínuas, é possível realizar uma
chamada entrega única. Este tipo de deploy é realizado, em geral, para
aplicações mais simples, com grau de tecnologias e com baixo acoplamento
em relação ao próprio servidor, ou seja, uma aplicação criada em uma única
linguagem, ou criada por uma só pessoa, de maneira simples, páginas webs
estáticas ou até dinâmicas, mas sem maiores complexidades.
Este tipo de implantação pode ser considerado mais simples, porém, se não
for feito da maneira correta, poderá apresentar falhas que comprometam a
execução de maneira correta. Mesmo sendo um método mais fácil de
implantação, requer o mínimo de cuidados e também deve submeter a testes
a aplicação após seu deploy. Independentemente de ser considerado mais
simples, requer cuidados semelhantes ao da Entrega Contínua, porém sem a
necessidade de mais de um pro�ssional envolvido no processo.
Implantação deImplantação de
SistemasSistemas
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 22/36
Utilizando Cliente FTP
Para realizar uma implantação de sistema neste método, é preciso utilizar
alguma ferramenta chamada Cliente FTP no processo. Este método nada mais
é do que transferir arquivos de um servidor ou máquina local para outra
máquina ou servidor, no caso de uma aplicação web o envio é para um
servidor web. Esse processo se utiliza de um protocolo de internet especí�co,
o FTP (File Transfer Protocol ou Protocolo de Transferência de Arquivo).
Existem vários softwares que auxiliam na transferência de arquivos neste
processo, podendo ser utilizadas tanto IDEs (Integrated Development
Environment ou Ambiente de Desenvolvimento Integrado), programas
especí�cos de Client FTP como Filezilla, SmartFTP, Transmit, Free FTP, entre
outros. Existe opção tanto para sistemas operacionaisWindows e Linux, como
MAC OS, entre outros. A �gura 3.2 mais à frente apresenta um exemplo de
um cliente FTP, o programa Filezilla no caso.
De modo geral, o protocolo FTP requer alguns argumentos para conectar uma
máquina local até um servidor ou outra máquina, a saber:
Host: é a URL (Uniform Resource Locator) ou o domínio do servidor,
que pode ser representado, por exemplo, pelo IP (Internet Protocol ou
Protocolo da Internet) no formato http://0.0.0.0 ou nome de domínio
no formato <http://dominio.com.br>.
Nome do usuário: esse é o nome de usuário criado no servidor que
dá acesso a um diretório ou ao diretório raiz de um servidor web.
Senha: a senha do usuário cadastrado no servidor.
Porta: é a liberação de acesso ou conexão, onde, para cada tipo de
conexão, uma porta pode ser usada. A porta padrão da web é a 21,
mas essa pode ser parametrizada de maneira personalizada.
A Figura 3.2 apresenta o detalhe da parte de cima do aplicativo Filezilla,
contendo os campos a serem preenchidos com Host, Usuário, Senha e Portal.
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 23/36
#PraCegoVer: Detalhe do Cliente FTP Filezilla, �lezila é um software cliente
fpt(�le transfer protocol – protocolo de transferência de arquivos), no �lezila
você con�gura o nome do Host (site hospedeiro), nome de usuário, senha e a
porta de comunicação. 
 
Uma vez que estejam preenchidos os campos com os dados corretos, basta
clicar o botão “Conexão rápida” ou na setinha ao lado para escolher outra
opção, com alguma outra conta já utilizada. Uma vez conectado, basta utilizar
a árvore de diretórios ao lado para acessar os arquivos locais e arrastar os
arquivos para a aba ao lado, de�nindo onde �carão os arquivos no servidor.
Com o Filezilla, o processo é realmente simples e, logo após você escolher um
arquivo ou pasta, deve arrastar para o lado servidor. Assim que o upload for
concluído, seus arquivos estarão acessíveis no endereço o qual foi submetido.
Por exemplo: http:// 0.0.0.0/arquivos. Ao término do envio, �carão listados os
diretórios (pastas) e os arquivos enviados, à direita. O Filezilla mostra detalhes
de log com tamanho do arquivo, tipo do arquivo, data de modi�cação, entre
outros detalhes. Todos esses elementos estão visíveis na Figura 3.3:
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 24/36
#PraCegoVer: Janela completa do Cliente FTP Filezilla, após conectar-se ao
site hospedeiro, é exibida a hierarquia de pastas na janela ao lado esquerdo
no meio da janela. E na parte inferior esquerda são exibidos os arquivos e
pastas do site hospedeiro. 
 
Com a aplicação devidamente con�gurada com banco de dados e outros
detalhes necessários, ela estará disponível para ser acessada via navegador
(caso seja uma aplicação web), ou por outro meio. Após isso, caso necessite
submeter alguma alteração da aplicação, basta conectar novamente e
submeter o arquivo alterado ou o novo arquivo de código-fonte criado. O
cliente FTP irá perguntar se você quer substituir o arquivo que já existe no
servidor e pronto. Sim, o processo é relativamente simples como parece, uma
vez que a forma de transferência real e a troca de mensagens via protocolos
de rede é algo transparente ao usuário via aplicação como os softwares de
cliente FTP. Assim, seus arquivos ou aplicação estarão atualizados e/ou
carregados no servidor ou máquina remota, estando sempre prontos a serem
novamente acessados.
Realizando Entregas e Integração
Contínua
Figura 3.3 - Janela completa do Cliente FTP Filezilla 
Fonte: Elaborada pelo autor.
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 25/36
Entregas Contínuas e de qualidade com tempo de ciclo curto precisam de um
alto grau de automação. Da necessidade de diminuir a distância entre equipe
de desenvolvimento e equipe operacional, surgiu a cultura DevOps. A escolha
das ferramentas certas para o ambiente ou projeto é importante quando você
muda para a cultura DevOps.
Com base em práticas enxutas e ágeis, o DevOps signi�ca automação de
processos no desenvolvimento e fornecimento de software. É quase
impossível descrever essa abordagem no estilo “receita de bolo”, mas de
modo geral podemos dizer que essa metodologia acaba por bene�ciar a
maioria dos desenvolvedores com a melhora na conexão dos
desenvolvedores e a parte operacional, antes mantidos isolados. Existem
muitas ferramentas de DevOps que podem auxiliar no processo de
implantação desta cultura, que ajuda bastante em como fazer isso acontecer.
saibamaisSaiba mais
O DevOps consiste em uma abordagem cada
vez mais comum para oferta de software em
que as equipes de desenvolvimento e de
operações colaboram para desenvolver,
testar, implantar e monitorar aplicativos com
velocidade, qualidade e controle.
Fonte: IBM (2019, on-line).
ACESSAR
https://www.ibm.com/br-pt/cloud/devops?
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 26/36
Um engenheiro DevOps é um pro�ssional que deve ser capaz de entender
todo o processo de desenvolvimento e seu ciclo de vida, aliado à experiência
de operar e administrar o sistema. Na verdade, se você parar para analisar ou
pesquisar pelo período remoto do início da prática de desenvolvimento web,
os primeiros pro�ssionais considerados analistas ou desenvolvedores web
tinham esta prática atual, de dominar tanto a parte de codi�cação (a prática
de programação em si) com a de con�guração e manutenção de uma
aplicação em servidor web.
No contexto geral, existem vários benefícios do uso da cultura DevOps no seu
processo de implantação e deploy de aplicações web. Dentre eles, estão:
Velocidade: operação em alta velocidade na inovação e entrega de
novas funcionalidades de sistemas.
Entrega rápida: aumento da frequência e ritmo de novos
lançamentos, tanto para novas aplicações quanto para correções de
problemas apresentados na execução da aplicação.
Con�abilidade: garante entregas mais rápidas e contínuas, gerando
con�ança e passando segurança ao usuário �nal.
Escalabilidade: a aplicação pode crescer sem que o serviço tenha
que �car indisponível, utilizando também a arquitetura por
microsserviços.
Colaboração melhorada: equipes de desenvolvimento e operação
trabalham mais próximas e de maneira colaborativa, compartilhando
responsabilidades e combinando �uxos de trabalho.
Segurança: operando rapidamente e utilizando controles de versões,
a cultura DevOps auxilia em manter uma aplicação sempre
atualizada e com uso de técnicas que garanta o acesso contínuo por
pro�ssionais capacitados.
Ferramentas DevOps
Para uma boa prática DevOps, é altamente indicado o uso de ferramentas
que auxiliem na produtividade da função. Existem algumas no mercado que
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 27/36
tem por objetivo eliminar algumas práticas mais trabalhosas, como a de
con�gurações extensas de servidores, desde o cuidado com o sistema
operacional, variáveis de ambientes, sistemas de arquivos, até a con�guração
de servidor web e de aplicação, banco de dados, entre outros.
Docker
Uma ferramenta bastante usual é o Docker. É uma tecnologia que permite a
criação de containers, onde o objetivo é você criar um container local,
con�gurado com todas as variantes citadas anteriormente, que preparam um
ambiente propício para a execução da aplicação criada (LOPES et al., 2019).
Esse container pode ser criado em uma máquina ou servidor local e, após a
criação da aplicação, pode ser submetido ao servidor web e ali será executado
como um nó de um servidor, sem precisar de praticamente nenhuma outra
con�guração. Isso faz com que a aplicação web dentro do container funcione
independentemente dosistema operacional do servidor web.
Jenkins
Segundo o site o�cial, o Jenkins é o principal servidor de automação de código
aberto que fornece centenas de plugins para dar suporte à construção,
implantação e automação de qualquer projeto (JENKINS, 2019, on-line). Com
grande apelo de uso em projetos e por equipes que adotam a prática de
entregas e integrações contínuas, esta ferramenta é capaz de automatizar
processos repetitivos, sendo um apoio ao processo contínuo de atualizar e
manutenção de aplicações em ambiente web.
A documentação do Jenkins explica bem como integrar a ferramenta a uma
aplicação de acordo com cada linguagem de programação. Na verdade, você
pode utilizar ferramentas de cada linguagem para integrar o processo de
entrega contínua do Jenkins. Com a ferramenta, o �uxo de entrega contínua
mais básico terá, no mínimo, três estágios que devem ser de�nidos em um
arquivo Jenkins: Compilar, Testar e Implementar. O último estágio, também
chamado de deploy, precisa ser devidamente precedido pelos estágios de
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 28/36
Compilar e Testar, para garantir que versão estável está sendo utilizada na
atividade de implantação de uma aplicação.
Para utilizá-lo como serviço, não há complicações. Basta baixar o instalador
no site o�cial e ter como requisito básico pelo menos 512Mb de memória
RAM e um espaço em disco de 10Gb, requisitos mínimos para a versão 1.4
(JENKINS, 2019, on-line).
Diversas empresas, de todos os portes, utilizam o Jenkins como forma o�cial
de automatizar seu �uxo de entregas contínuas. Desde gigantes como
Microsoft, Redhat, Github, Rackspace, até empresas locais de
desenvolvimento de sistemas e aplicações, principalmente sistemas para web.
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 29/36
Controle de Logs
Uma tarefa importante no �uxo de trabalho DevOps é o controle de logs. Com
um �uxo contínuo de atualizações e novas submissões de arquivos, vários
logs são gerados e precisam ser mantidos para um controle inteiro do
processo. A�nal, um log diz muito sobre o uso de um servidor, pois se trata de
reflitaRe�ita
Realizar o acompanhamento de
projetos, desde a fase de análise de
requisitos até seu deploy é uma tarefa
que requer bastante cuidado. Para
que o CI / CD seja e�caz, você precisa
vinculá-lo aos seus processos para
que ele seja iniciado quando um novo
código for con�rmado. Para poder
con�ar que seus testes serão precisos,
é necessário recriar o ambiente do
aplicativo em contêineres que
simulem o ambiente �nal onde o
software irá ser executado. Após a
conclusão dos testes, é importante
con�gurar um processo de
homologação para, aí sim, chegar à
implantação em ambiente de
produção.
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 30/36
discriminar detalhes de trabalhos em um ambiente, identi�cando: o que,
quem e quando foi feita alguma ação em determinado computador, sistema
ou servidor. Para o trabalho DevOps, algumas ferramentas são indicadas para
esse controle, como:
Flume: ferramenta sob a licença da Fundação Apache que controla o
�uxo de trabalhos em processos de software.
ELK: uma stack (pilha) de aplicações que inclui o uso das ferramentas
Elasticsearch, Logstash e Kibana, todas pertencentes à empresa
Elastic.
Fluentd: projeto de software criado pela empresa Treasure Data que,
além de manipular logs, serve como um coletor de dados de modo
geral, podendo ser utilizado para diversos �ns.
praticarVamos Praticar
As aplicações Web já não são mais tão simples como no início da popularização da
internet. Com recursos avançados, a começar da evolução das próprias linguagens
de programação, os requisitos de servidor de hospedagem aumentaram
consideravelmente. A entrega de software passou a ser contínua e o versionamento
de código quase que uma regra geral. A respeito das técnicas modernas de
implantação de software na Web, é correto a�rmar:
a) Entrega contínua é o envio de código-fonte via Cliente FTP.
b) DevOps é um sistema de arquivos distribuídos.
c) HTTP é o protocolo utilizado em aplicações para transferência padrão de arquivos para
servidores.
d) Integração contínua e entrega contínua são técnicas que trabalham em conjunto.
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 31/36
e) Um desenvolvedor Full Stack é um programador que também atua como DevOps.
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 32/36
indicações
Material
Complementar
FILME
Firewall - Segurança Em Risco
Comentário: O enredo trata da história de Jack Stan�eld
(Harrison Ford) como um especialista em sistema de
segurança bancária. Com a família do personagem
sequestrada, um criminoso exige que o pro�ssional
ache uma brecha no sistema criado por ele mesmo
para conseguir fraudar e desviar uma quantia
milionária de Dólares. Apesar de não ser tão recente, o
�lme traz um enredo bastante atual e possível que
envolve segurança pessoal e digital, boas práticas em
sistemas e o envolvimento com projetos de software.
Para conhecer mais sobre o �lme, acesse o trailer a
seguir.
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 33/36
T R A I L E R
LIVRO
Engenharia de software - uma abordagem
pro�issional
Roger Pressman
ISBN: 978-0-07-802212-8
Comentário: Esse livro foi escrito por uma das maiores
autoridades em se tratando de Engenharia de Software,
Roger Pressman. Partindo desde os princípios da
matéria, ele aborda o uso de diagramas em cada etapa
do processo de desenvolvimento de um sistema,
baseado em técnicas atuais de desenvolvimento e
implementação de software.
https://www.youtube.com/watch?v=B7fODdh-w-U
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 34/36
conclusão
Conclusão
Ao concluir a unidade, podemos dizer que durante o desenvolvimento de
software, tão importante quanto bem documentar cada etapa e saber utilizar
as ferramentas necessárias para se chegar ao produto, saber gerenciar os
processos e integrar ferramentas é primordial. Com o avanço das práticas de
desenvolvimento de software, novas culturas surgiram e se tornaram
importantes na busca de produtos de software de qualidade, destacando a
cultura DevOps como uma forma de automatizar processos outrora bastante
demorados. A implantação de sistemas baseada em Entrega e Integração
Contínuas também são excelentes formas de criar um ambiente mais
produtivo de desenvolvimento, encurtando espaço entre a equipe envolvida e
o alcance da meta, que sempre será o software de qualidade. Também vimos
como as técnicas de testes estão cada dia mais presentes nos ambientes de
desenvolvimento e como auxiliam na obtenção da qualidade do produto �nal,
estando presente em todas as etapas de desenvolvimento.
referências
Referências
Bibliográ�cas
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 35/36
ANDRADE, Ana Paula; VIANA, Phil. Criação e geração de planos de teste de
software. Disponível em:
https://www.ibm.com/developerworks/br/local/rational/
criacao_geracao_planos_testes_software/index.html. Acesso em: 16 fev. 2020.
BARROS, Gabryela Santana; JÚNIOR, Lielson R. Pereira. Análise experimental
entre as técnicas TDD e Test-Last no processo de manutenção corretiva
de software. Disponível em:
http://ri.ucsal.br:8080/jspui/bitstream/pre�x/879/1/
TCCGABRYELAELIELSON.pdf. Acesso em: 17 fev. 2020.
BERNARDO, Kaluan. Entrega Contínua – o queé e como aplicar. Disponível
em: https://www.opus-software.com.br/o-que-e-entrega-continua/. Acesso
em: 25 fev. 2020.
EVANS, Eric. Domain-Driven Design: atacando as complexidades no coração
do software. 3. ed. São Paulo: Alta Books, 2016.
JENKINS. Build great things at any scale. Disponível em: https://jenkins.io/.
Acesso em: 16 fev. 2020.
LOPES, Klerison Emmanuel; CAMPOS, Ronaldo Ribeiro de; PETRUCELLI, Erick
Eduardo; SORIANO, Gustavo Henrique. O processo de deploy automático
em ambientes de computação na nuvem: exemplo de utilização da
plataforma Jenkins. Disponível em:
https://revista.fatectq.edu.br/index.php/interfacetecnologica/article/view/545/361.
Acesso em: 15 fev. 2020.
PEZZÈ, Mauro; YOUNG, Michal. Teste e análise de software: processo,
princípios e técnicas. Porto Alegre: Bookman, 2018.
SATO, Danilo. DevOps na prática: entrega de software con�ável e
automatizada. 2. ed. São Paulo: Casa do Código, 2014.
SCHMITZ, Daniel. Tudo que você queria saber sobre Git e GitHub, mas tinha
vergonha de perguntar. Disponível em: https://tableless.com.br/tudo-que-
https://www.ibm.com/developerworks/br/local/rational/%20criacao_geracao_planos_testes_software/index.html
http://ri.ucsal.br:8080/jspui/bitstream/prefix/879/1/%20TCCGABRYELAELIELSON.pdf
https://www.opus-software.com.br/o-que-e-entrega-continua/
https://jenkins.io/
https://revista.fatectq.edu.br/index.php/interfacetecnologica/article/view/545/361
https://tableless.com.br/tudo-que-voce-queria-saber-sobre-git-e-github-mas-tinha-vergonha-de-perguntar/
21/06/2021 Ead.br
https://anhembi.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_670630… 36/36
voce-queria-saber-sobre-git-e-github-mas-tinha-vergonha-de-perguntar/.
Acesso em: 25 fev. 2020.
https://tableless.com.br/tudo-que-voce-queria-saber-sobre-git-e-github-mas-tinha-vergonha-de-perguntar/