Você está na página 1de 45

WBA0882_v1.

APRENDIZAGEM EM FOCO

DESIGN PATTERNS E GERÊNCIA


DE CONFIGURAÇÃO: DO PROJETO
AO CONTROLE DE VERSÕES
APRESENTAÇÃO DA DISCIPLINA
Autoria: Arthur Gonçalves Ferreira
Leitura crítica: Marco Ikuro Hisatomi

Olá, aluno! Na disciplina Design Patterns e gerência de configuração:


do projeto ao controle de versões, você aprenderá sobre conceitos
gerais de padrões de projetos. Vamos estudar seu surgimento,
sua aplicabilidade e seus padrões de projetos existentes. Você
aprenderá ainda sobre a gerência de configuração de software,
quais ferramentas são utilizadas para esse processo e seus desafios.
Por meio dos conteúdos propostos, um dos objetivos desta
disciplina é aperfeiçoar a competência e a habilidade do profissional
em TI.

Você estudará sobre as melhores práticas de controle de versões


de uma forma prática, utilizando ferramentas de controle de
versionamento. Além de todos esses conceitos, conhecerá como
integrar o design patterns com a gerência de configuração em
projetos de softwares, visualizando projetos propostos para
a aplicabilidade dos padrões de projetos com a gerência de
configuração.

Dessa forma, no final desta disciplina, você terá como competência


e habilidade conhecer e diferenciar os principais padrões de projeto
GoF, propiciando sua adoção em projetos de software; entender a
Gerência de Configuração, no que tange às atividades essenciais de
Controle de Mudança, Controle de Versão e Integração Contínua,
e como essa gerência pode ser aplicada no desenvolvimento de
software; reconhecer e utilizar ferramentas de controle de versão,
favorecendo a atividade de Controle de Versão no contexto da
Gerência de Configuração; e analisar projetos de software que

2
integrem Design Patterns e a Gerência de Configuração, visando à
qualidade.

Bons estudos!

INTRODUÇÃO

Olá, aluno (a)! A Aprendizagem em Foco visa destacar, de maneira


direta e assertiva, os principais conceitos inerentes à temática
abordada na disciplina. Além disso, também pretende provocar
reflexões que estimulem a aplicação da teoria na prática
profissional. Vem conosco!

3
TEMA 1

Design Patterns: conhecendo os


principais padrões
______________________________________________________________
Autoria: Arthur Gonçalves
Leitura crítica: Marco Ikuro Hisatomi
DIRETO AO PONTO

Os padrões de projetos, conhecidos também como design patterns,


são uma área muito utilizada na engenharia de software e têm
como objetivo solucionar problemas de desenvolvimento. A ideia é
poder utilizar um mesmo padrão em vários outros problemas, mas
é preciso tomar cuidado, pois o fato de você sempre utilizar ou já ter
utilizado um determinado padrão antes não significa que ele será
sempre a escolha correta quando for resolver um problema. Aqui
é importante olhar para os padrões de natureza semelhante e para
os padrões de um mesmo grupo; talvez seu problema possa ser
resolvido por um padrão da mesma família.

Embora os padrões de projetos não tenham sido inicialmente


criados para serem aplicados na resolução de problemas de
desenvolvimento de software, com o passar do tempo foi inevitável
que os conceitos criados pelo arquiteto Christopher Alexander
em 1977 passassem a ser utilizados para esse fim. A definição de
padrões de projeto daquela época pode ser aplicada em dias atuais,
quando temos que um padrão de projeto reúne problema, solução e
contexto. Sendo assim, todo padrão de projeto é uma solução para
um determinado problema e contexto.

Para a engenharia de software, o termo padrão de projeto só


ganhou um grande destaque quando os Gang of Four (Gangue/
bando dos quatro) escreveram o livro Padrões de Projeto: soluções
reutilizáveis de software orientado a objetos. É por isso que é muito
comum ouvir o termo “Padrões de projeto GoF”, fazendo referência
às iniciais do termo em inglês. A Figura 1 mostra os padrões de
projetos catalogados pelos autores do livro mencionado.

5
Figura 1 – Padrões de projeto
Padrões de criação

Padrões de estrutura

Padrões de comportamento

Fonte: elaborada pelo autor.

Nem todo problema de desenvolvimento de software deve ser


resolvido com a utilização de um padrão; na realidade, os padrões
de projetos devem ser vistos como soluções complexas. Portanto,
antes de tudo, é necessário verificar a necessidade ou não de se
utilizar algum padrão. Você deve observar se o problema existente
em seu sistema pode ser resolvido com uma implementação
mais simples ou se a melhor solução seria utilizar um padrão de
projeto, o que facilitaria no reuso e no aprendizado da equipe de
desenvolvimento.

6
Por outro lado, caso o problema do desenvolvimento de software
possa ser resolvido com um padrão, é necessário, antes de tudo,
que você estude todos os padrões para saber as características de
cada um. Dessa forma, saberá qual padrão deve ser utilizado em um
problema específico.

Referências bibliográficas
LEITE, A. F. Conheça os Padrões de Projeto. DevMedia, 2005. Disponível em:
https://www.devmedia.com.br/conheca-os-padroes-de-projeto/957. Acesso em:
20 abr. 2021.

PARA SABER MAIS

O padrão de projeto de criação tem como objetivo criar mecanismos


que controlem a criação de novos objetos em um desenvolvimento
de software. Um sistema que possui muitos objetos torna-se um
sistema muito complexo, com um nível alto desnecessário.

Os padrões de projeto de criação concentram-se exclusivamente no


controle completo de separação, mas não só na criação de objetos,
como também na conclusão e representação. O principal padrão
de projeto de criação é o factory method (Método de fábrica), cujo
objetivo é encapsular objetos, criando uma interface de sistema em
que a classe escolhe qual objeto deverá ser criado.

Um exemplo prático do padrão de projeto de criação factory method


seria um sistema de cursos on-line, no qual existe um cadastro
prévio. O sistema solicita as informações pessoais do cliente, como
nome, sexo, CPF, telefone etc., e no final do cadastro o cliente já
pode acessar sua conta de forma imediata. É muito comum nesse
tipo de sistema aparecer, toda vez que o usuário efetua o log-in,
uma saudação parecida como “Olá, fulano, seja muito bem-vindo!”.

7
Geralmente a saudação é realizada com estruturas de decisão if,
mas podemos utilizar o factory method para guardar as informações
de sexo e nome, criando um objeto “homem” para realizar a
saudação correta; dessa forma, tudo fica guardado dentro do factory
method.

Se a linguagem de programação Java fosse utilizada para


desenvolver a ideia citada, teríamos:

public static void main(String args[]) {

FactoryUsuario factory = new FactoryUsuario();

String nome = “Fulano”;

String sexo = “M”;

factory.getPessoa(nome, sexo);

De forma geral, o padrão de projeto de criação factory method pode


ser representado conforme a figura a seguir:

8
Figura 2 – Padrão de projeto de criação factory method

Fonte: https://www.flickr.com/photos/m-i-k-e/6804688590. Acesso em: 9 ago. 2021.

Imagine que você é um desenvolvedor de uma empresa de aluguel


de veículos. Inicialmente esse sistema contava com apenas um tipo
de veículo disponível para aluguel. Dessa forma, necessariamente,
a maior parte de código desse sistema ficava guardado em uma
classe. Com o passar do tempo, a empresa cresceu e agora existe a
necessidade de expandir o sistema com a inclusão de outros tipos
de veículos para aluguel. Como resolver esse problema sem que seja
necessário mudar por completo o sistema ou sem deixar o código
demasiadamente confuso? A resposta seria o padrão de projeto
factory method.

O padrão de projeto factory method é muito implementado para


a resolução de problemas complexos, de sistemas robustos. Sua
utilização auxilia para que o código de um determinado sistema

9
não se expanda de uma forma descontrolada, mantendo uma boa
prática de programação, o que faz com que o sistema funcione de
acordo com os objetivos predefinidos pelo cliente.

TEORIA EM PRÁTICA

Um desenvolvedor de software está trabalhando em um projeto


muito complexo que tem como objetivo a criação de um sistema
web e-commerce. Nesse site o usuário deverá utilizar o sistema para
realizar consultas no catálogo de produtos, além de poder realizar
suas compras de forma tranquila, sem que o sistema apresente
nenhum problema.

Analise a situação descrita e aponte se é necessária a utilização de


um padrão de projeto. Caso a resposta seja positiva, análise qual
padrão de projeto melhor se adaptaria a esse projeto. Lembre-se
de que em um sistema e-commerce existe a possibilidade de muitas
conexões de navegação, o que levaria a uma grande quantidade de
duplicação de código nas páginas.

Para conhecer a resolução comentada proposta pelo professor,


acesse a videoaula deste Teoria em Prática no ambiente de
aprendizagem.

LEITURA FUNDAMENTAL
Indicações de leitura

Prezado aluno, as indicações a seguir podem estar disponíveis


em algum dos parceiros da nossa Biblioteca Virtual (faça o log
in por meio do seu AVA), e outras podem estar disponíveis em

10
sites acadêmicos (como o SciELO), repositórios de instituições
públicas, órgãos públicos, anais de eventos científicos ou
periódicos científicos, todos acessíveis pela internet.

Isso não significa que o protagonismo da sua jornada de


autodesenvolvimento deva mudar de foco. Reconhecemos
que você é a autoridade máxima da sua própria vida e deve,
portanto, assumir uma postura autônoma nos estudos e na
construção da sua carreira profissional.

Por isso, nós o convidamos a explorar todas as possibilidades da


nossa Biblioteca Virtual e além! Sucesso!

Indicação 1

O livro indicado aborda sobre os principais tópicos relacionados


a padrões de projetos. Nele, é possível conhecer os padrões de
criação, de comportamento e de estrutura, além de aumentar sua
habilidade por meio de estudos de casos disponibilizados.

GAMMA, E. et al. Padrões de projetos, soluções reutilizáveis


de software orientado à objetos. Tradução de Luiz A. Meirelles
Salgado. Porto Alegre: Bookman, 2008.

Indicação 2

O Capítulo 36 do livro indicado aborda o tema “Mais projeto de


objetos com padrões GoF”. Nele, o leitor é convidado a desvendar
mais sobre os 23 padrões catalogados pelos Gang of Four.

LARMAN, C.; KRUCHTEN, P. Utilizando UML e Padrões: Uma


Introdução à Análise e ao Projeto Orientados a Objetos e ao
Desenvolvimento Iterativo. 3. ed. Porto Alegre: Bookman, 2007.

11
QUIZ

Prezado aluno, as questões do Quiz têm como propósito a


verificação de leitura dos itens Direto ao Ponto, Para Saber
Mais, Teoria em Prática e Leitura Fundamental, presentes neste
Aprendizagem em Foco.

Para as avaliações virtuais e presenciais, as questões serão


elaboradas a partir de todos os itens do Aprendizagem em Foco
e dos slides usados para a gravação das videoaulas, além de
questões de interpretação com embasamento no cabeçalho
da questão.

1. Em 1977, surgiu o termo padrão de projeto com grande


aplicabilidade na área da construção civil. Com o tempo, sua
definição passou a ser aplicado em outras áreas, como na
engenharia de software. Dessa forma, atualmente é impossível
pensar em desenvolvimento de software sem pensar em
padrões de projetos, visto que têm grandes aplicabilidades
nessa área.

Com base nos seus conhecimentos e no texto anterior,


podemos definir padrões de projeto no desenvolvimento de
software como:

a. Os padrões de projetos podem ser aplicados no


desenvolvimento de software, porém um padrão só se aplica a
um determinado problema.
b. Um padrão de projeto se define como uma solução para um
problema dentro de um contexto.
c. O termo padrões de projetos ganhou força no
desenvolvimento de software graças aos Gang Of Five, quando
catalogaram cerca de 26 padrões de projetos.

12
d. Os padrões de projetos são ferramentas com soluções
simples; assim, não devemos utilizá-los para soluções de
problemas complexos.
e. O conceito de padrões de projetos está ligado à não
reutilização de um determinado padrão para mais de um
problema.

2. Nas áreas da engenharia e desenvolvimento de software,


os padrões de projetos são conhecidos como “padrões de
projetos GoF”, em que GoF são as iniciais do termo Gang of
Four (gangue dos quatro), uma alusão aos autores de um livro
sobre padrões de projetos lançado em 1994. Esse livro foi
um grande marco para os padrões de projetos, porque pela
primeira vez foram catalogados padrões de projetos com suas
respectivas características, separadas por grupos.

Com base nos seus conhecimentos e no texto anterior, os


grupos de padrões criados pelos Gang of Four são:

a. Criacionistas, evolucionistas e cristões.


b. Associativos, realistas e relativos.
c. De criação, estrutura e comportamento.
d. Criacionistas, de comportamento e relativos.
e. Associativos, de estrutura e realistas.

GABARITO

Questão 1 - Resposta B
Resolução: Um padrão de projeto possui necessariamente
três partes: problema, solução e contexto. O problema está

13
relacionado ao código que está sendo desenvolvido; a solução
é a escolha de um padrão; e o contexto está relacionado ao tipo
de aplicação.
Questão 2 - Resposta C
Resolução: Os padrões catalogados pela Gang of Four foram
inseridos nos grupos: padrões de projetos de criação, padrões
de projetos de comportamento e padrões de projetos de
estrutura, sendo possível citar um exemplo de cada grupo:
o padrão de projeto de criação Factory method; o padrão de
projeto de estrutura Adapter pattern; e padrão de projeto de
comportamento Mediator pattern. As demais alternativas estão
incorretas, pois não trazem os nomes corretos dos grupos.

14
TEMA 2

Gerência de configuração:
atividades, ferramentas e desafios
______________________________________________________________
Autoria: Arthur Gonçalves
Leitura crítica: Marco Ikuro Hisatomi
DIRETO AO PONTO

Engana-se quem pensa que não existe gerência de configuração de


software após o sistema ser entregue ao cliente, isso porque por
diversas vezes um software é vendido ao cliente com a promessa
fechada em contrato de que as modificações serão realizadas
para que se adequem às necessidades de utilização do cliente. É
dessa forma que a configuração de gerência de configuração de
software deve ser entendida, como uma ferramenta que auxilia no
processo de desenvolvimento, manutenção e mudança de software,
permitindo maiores chances de sucesso em projeto de software.

Quando falamos em desenvolvimento de software, uma das


primeiras preocupações que surgem está relacionada a sua gerência
de configuração. Analisar de que forma desenvolver um sistema,
levando em consideração o processo de projeto, de execução e o
pós-desenvolvimento, é um fator que constantemente preocupa
muitos desenvolvedores.

Criar programas, sistemas e softwares em geral tornou-se um


mercado muito promissor, porque a procura por esse serviço vem
crescendo cada vez mais nos últimos anos. Com isso, desenvolver
um software passou a ser mais complexo do que antes, aliando-se
ao crescimento de demanda, aos fatores evolução de tecnologias e à
busca por sistemas cada vez mais robustos.

A gerência de configuração de software reúne quatro atividades


essenciais: a gerência de configuração de mudanças, a gerência de
configuração de versões, a gerência de configuração de construção
de sistemas e a gerência de configuração de releases. Cada atividade
possui ferramentas que auxiliam no processo de desenvolvimento e
gerência de software.

16
Para entender melhor a gerência de configuração de software,
é necessário conhecer alguns conceitos básicos, algumas
terminologias consideradas essenciais. O Quadro 1 mostra os
conceitos básicos segundo a visão do autor Sommerville (2018):

Quadro 1 – Conceitos básicos de gerência de configuração de


softwares
Conceito Definição
Controla versões de componentes
de sistemas, garantindo registros e
Controle de configuração armazenamento das informações,
além do gerenciamento adequado
de mudanças.
É uma instância de um item de
configuração (IC), como projeto,
Versão código, dados de teste, documentos.
Possui um identificador único,
composto por um nome, seguido do
número da versão.
É um repositório que reúne um
Baseline conjunto de versões de itens de
configuração que compõem um
sistema.
Conjunto de versões de um
componente de software e
Codeline outros itens de configuração
(projeto, código, dados de teste,
documentos) dos quais esse
componente depende.
Versão de sistema liberada para
Release uso.

17
Área de trabalho privada em que
o software pode ser modificado
Espaço de trabalho sem afetar outros desenvolvedores
que possam estar usando ou
modificando-o.
Processo de criação de uma
versão de sistema executável
Construção de sistema com componentes e bibliotecas
adequados que o compõem.

Fonte: elaborado pelo autor.

Referências bibliográficas
BORGES, S. S. Apoio de gerência de configuração de software ao
ARAGAwCRe. Dissertação (Mestrado em Ciência da Computação) –
Universidade Federal de São Carlos, São Carlos, 2009.
MORAIS, I. S.; ZANI, A. Engenharia de software. Porto Alegre: SAGAH, 2017.
PRESSMAN, R. S. Engenharia de Software, uma abordagem profissional.
Tradução de Ariovaldo Griesi e Mario Moro Fecchio. 8. ed. Porto Alegre: AMGH,
2016.
SOMMERVILLE, I. Engenharia de Software. Tradução Luiz Cláudio Queiroz. 10.
ed. São Paulo: Pearson Education do Brasil, 2018.

PARA SABER MAIS

Na gerência e na configuração de software, existe um conceito muito


importante e constantemente mencionado pelos desenvolvedores
que é o item de configuração, conhecido também como IC. Um
IC é normalmente definido como sendo uma unidade básica de
informação controlada no gerenciamento de configuração de
software.

Geralmente, ele faz parte do ciclo de vida de um sistema, como


códigos-fontes, componentes, alguns relatórios ou até mesmo

18
hardwares e ferramentas. É muito importante escolher entre utilizar
ou não os IC em um sistema. Na realidade, é necessário analisar a
necessidade desse controle.

Qualquer informação relacionada a um item de configuração é


chamada de metadado, o qual contém qualquer tipo de informação
relevante no contexto em que o IC está inserido. Entre as
informações mais relevantes de um metadado, temos:

1. Nome.

2. Data de criação.

3. Local de armazenamento.

4. Quem criou.

A quantidade e o nível de informações de um IC dependem muito da


necessidade de cada projeto. Sistemas muito robustos requerem a
utilização de uma grande quantidade de IC, bem como de diversas
informações para cada item. Para sistemas mais simples, existem
poucos IC e, consequentemente, poucos metadados, o que significa
maior facilidade de manutenção. Por outro lado, poucos metadados
podem ocasionar insuficiência na resolução de problemas e nas
tomadas de decisão.

Referências bibliográficas
SOMMERVILLE, Ian. Engenharia de Software. Tradução Luiz Cláudio Queiroz.
10. ed. São Paulo: Pearson Education do Brasil, 2018.

19
TEORIA EM PRÁTICA

Uma determinada empresa de desenvolvimento web trabalha com


equipes de desenvolvedores para cada projeto específico em que é
contratada. Imagine que um dos desenvolvedores da equipe precise
editar um site hospedado em um servidor. Ele realiza o download
via FTP dos arquivos que irá editar e, em seguida, as alterações
solicitadas pelo cliente. Ao terminá-las, envia os arquivos alterados
para o servidor via FTP.

Analise a situação descrita e aponte o erro cometido pelo


desenvolvedor, levando em consideração que, enquanto ele
realizava as alterações nos arquivos, outro membro da equipe de
desenvolvimento desse projeto também poderia estar atuando
nesses mesmos arquivos.

Para conhecer a resolução comentada proposta pelo professor,


acesse a videoaula deste Teoria em Prática no ambiente de
aprendizagem.

LEITURA FUNDAMENTAL
Indicações de leitura

Prezado aluno, as indicações a seguir podem estar disponíveis


em algum dos parceiros da nossa Biblioteca Virtual (faça o log
in por meio do seu AVA), e outras podem estar disponíveis em
sites acadêmicos (como o SciELO), repositórios de instituições
públicas, órgãos públicos, anais de eventos científicos ou
periódicos científicos, todos acessíveis pela internet.

20
Isso não significa que o protagonismo da sua jornada de
autodesenvolvimento deva mudar de foco. Reconhecemos
que você é a autoridade máxima da sua própria vida e deve,
portanto, assumir uma postura autônoma nos estudos e na
construção da sua carreira profissional.

Por isso, nós o convidamos a explorar todas as possibilidades da


nossa Biblioteca Virtual e além! Sucesso!

Indicação 1

O Capítulo 25 do livro indicado aborda os principais tópicos


relacionados à gerência de configuração de softwares. Nele, é
possível conhecer as atividades de gerência de configuração de
softwares e algumas ferramentas de cada atividade.

SOMMERVILLE, Ian. Engenharia de Software. Tradução Luiz Cláudio


Queiroz. 10. ed. São Paulo: Pearson Education do Brasil, 2018.

Indicação 2

A dissertação de mestrado indicada apresenta conceitos sobre


gerência de configuração de software. Nela, você verá uma
aplicabilidade de gerência de configuração, além de conhecer
atividades, ferramentas e desafios da área.

BORGES, Simone de Sousa. Apoio de gerência de configuração


de software ao ARAGAwCRe. Dissertação (Mestrado em Ciência
da Computação) – Universidade Federal de São Carlos, São Carlos,
2009.

21
QUIZ

Prezado aluno, as questões do Quiz têm como propósito a


verificação de leitura dos itens Direto ao Ponto, Para Saber
Mais, Teoria em Prática e Leitura Fundamental, presentes neste
Aprendizagem em Foco.

Para as avaliações virtuais e presenciais, as questões serão


elaboradas a partir de todos os itens do Aprendizagem em Foco
e dos slides usados para a gravação das videoaulas, além de
questões de interpretação com embasamento no cabeçalho
da questão.

1. A gerencia de configuração de ___________envolve processos de


criação de um sistema essencialmente completos, que serão
executados por meio de ___________ de sistemas, além de
outras bibliotecas e arquivos.

As lacunas são preenchidas respectivamente por:

a. Construção de sistemas; componentes.


b. Versões; releases.
c. Mudanças; versões.
d. Releases; construção de sistemas.
e. Mudanças; componentes.

2. A gerência de configuração de software atua no auxílio de


desenvolvimento, na manutenção e nas mudanças que um
software possa sofrer, reunindo um conjunto de atividades
que auxiliam na adaptação de um sistema em relação às
possíveis mudanças que possam surgir.

22
As atividades de gerenciamento de configuração de software
reúnem quatro atividades essenciais, que são:

a. Gerência alternativa, de controle, mista e alternada.


b. Gerência interna, externa, plana e alterada.
c. Gerência de mudanças, de versões, de construção de sistemas
e de releases.
d. Gerência de comportamento, de relativos, de alternativos e
anônimos.
e. Gerência associativa, estrutura, realistas e normal.

GABARITO

Questão 1 - Resposta A
Resolução: A gerência de configuração de software aborda
quatro atividades, entre elas a gerência de configuração de
construção de sistemas, que executa processos de criação por
meio de componentes de sistemas. As demais alternativas
estão incorretas, pois nenhuma aborda a atividade de
construção de sistemas a importância dos componentes nesta.
Questão 2 - Resposta C
Resolução: As quatro atividades relacionadas à gerência
de projetos são as gerências de mudanças, de versões, de
construção de sistemas e de releases. As demais alternativas
estão incorretas, pois não trazem os nomes corretos das
atividades da gerência de configuração de software.

23
TEMA 3

Controle de versões na prática com


ferramentas de versionamento
______________________________________________________________
Autoria: Arthur Gonçalves
Leitura crítica: Marco Ikuro Hisatomi
DIRETO AO PONTO

As ferramentas de controle de versão são utilizadas para


auxiliar no processo de desenvolvimento de software. Com elas,
podemos controlar todos os passos dados em um projeto de
software, sendo possível monitorar o que está sendo alterado,
mantendo no repositório desde a primeira versão até a versão
mais atual do sistema. Assim, utilizar uma ferramenta de controle
de versão ajuda não só no controle de projetos simples, nos
quais possivelmente esteja atuando apenas um desenvolvedor,
mas também é fundamental para o controle de projetos mais
robustos e complexos, nos quais geralmente existe uma equipe de
desenvolvedores atuando em um mesmo repositório.

Existem diversas ferramentas de controle de versões, sendo


basicamente as mais utilizadas as open source, que são ferramentas
gratuitas. Como toda regra possui uma exceção, nem toda
ferramenta paga é melhor do que uma gratuita; nesse sentido, sem
dúvida nenhuma, a ferramenta de controle de versão mais utilizada
atualmente, no mundo inteiro, é a open source Git, com o auxílio da
plataforma GitHub.

Linus Torvald, criador dos sistemas operacionais Linux, é o


idealizador e criador da ferramenta de controle de versão Git,
criada em 2005. Três anos depois, em 2008, foi criada a plataforma
que iria auxiliar o Git no processo de controle de versão, o GitHub.
Essas duas ferramentas conseguem manter documentadas todas
as alterações de versões de um sistema. Com isso, um projeto
de software fica menos sujeito a erros por parte da equipe de
desenvolvedores, visto que todas as ações ficam registradas e as
versões mais antigas “congeladas”, para que se possa ter o controle
da evolução das versões de um determinado sistema.

25
O Git é uma ferramenta que deve ser instalada no seu computador
e reúne os programas Git Gui, com o qual o desenvolvedor pode
realizar ações por interface gráfica; Git Bash, que é um terminal
para a inserção de linhas de comandos, muito utilizado por usuários
habituados com sistemas Linux; e Git cmd, que também é um
terminal e realiza as mesmas operações que o Git Bash, porém é
mais utilizado por usuários habituados com os sistemas Windows,
pois é onde utilizam o command do Windows.

Com o Git, é possível criar repositórios locais, nos quais você


insere arquivos de um determinado projeto que será controlado
pela gestão de configuração de software por meio do repositório
remoto no GitHub. Uma vez que um item de software é enviado
para o repositório remoto, inicia-se o controle de versão, com o
congelamento do arquivo, e, assim, toda vez que algo é alterado
no repositório local, a modificação, a nova versão, deve ser enviada
para o repositório no GitHub, que manterá a versão anterior e a
nova versão, com os detalhes do que foi alterado.

Para utilizar a ferramenta Git pelo Git Bash, é necessário ter


conhecimento das linhas de comandos que são utilizadas para
realizar operações, como criação de repositório local e verificação de
status de modificação, enviadas da nova versão para o repositório
remoto. O Quadro a seguir mostra as principais linhas de comandos
digitadas no Git Bash.

Quadro 1 – Linhas de comando no Git Bash


Linha de comando Ação
Git config --global user.name "Seu Comando utilizado para se
nome" identificar na ferramenta Git. O
nome inserido deve ser o mesmo
informado no cadastro do GitHub.

26
Git config --global user.email Comando utilizado para se
“SeuEmail@email.com” identificar na ferramenta Git. O
e-mail inserido deve ser o mesmo
informado no cadastro do GitHub.
Git init Comando utilizado para criar um
novo repositório local.
Git status Comando utilizado para verificar o
status dos arquivos que constam
no repositório local. Apenas mostra
arquivos que ainda não foram
enviados para controle e arquivos
alterados.
Git add -A Comando utilizado para adicionar
todos os arquivos para controle de
versão.
Git commit -m Comando utilizado para iniciar o
processo de envio de arquivos do
repositório local para o repositório
remoto, em que o –m escreve uma
mensagem de descrição do arquivo
enviado, como commit -m “Linha 2
alterada”.
Git remote origin in Comando utilizado para indicar o
caminho do repositório remoto
que servirá para o congelamento
da versão. Esse caminho deve ser
copiado do repositório criado no
GitHub.
Git push -u origin master Comando final utilizado para enviar
os arquivos adicionados ao controle
de versão para o repositório remoto
no GitHub.

27
Git branch É umas das principais vantagens
do uso de uma ferramenta de
controle de versão e release de
itens de software, podendo ser
útil quando são feitas simulações
ou testes ou, até mesmo, quando
há desenvolvimento em paralelo
por equipes (squad ou tribe) de
software.
Fonte: elaborado pelo autor.

PARA SABER MAIS

O GitHub é uma plataforma on-line em que você deve se cadastrar


para criar uma conta. É com o e-mail e o log-in informados no
cadastro que você consegue identificar-se na ferramenta Git. Nesse
caso, é como se estivesse informando ao Git que você enviará
arquivos para controle de versão em um repositório no GitHub com
as credenciais informadas.

Da mesma forma que é importante saber manusear a ferramenta


Git, é de extrema importância que você saiba exatamente o que
fazer na plataforma GitHub. Primeiro de tudo, saiba que o Git
permite controlar a versão dos itens de software em um processo de
desenvolvimento. Então vamos ver o que você deve saber fazer no
GitHub:

1. Ter uma conta. Para isso, você deve se cadastrar e guardar o


username ou o e-mail e a senha para utilizar na ferramenta Git.
2. Saber criar um repositório para receber os arquivos que serão
controlados. Para isso, você deve clicar em new repositories,
opção que fica na página inicial go GitHub, ou na sua foto,
no canto superior direito do site, e escolher a opção your
repositories (seus repositórios).
28
3. Saber identificar seu repositório. Para isso, dê um nome,
guarde o link do caminho desse repositório, insira uma
descrição para um melhor controle e escolha se ele é de
domínio público ou privado.
4. Saber verificar as versões dos arquivos enviados para o
repositório, observando a descrição do que foi mudado em
cada uma.

Todos os commits ficam registrados no GitHub, no seu repositório


remoto, e saber identificá-los e acessá-los é fundamental para
realizar o controle correto das versões. O GitHub, utilizado com a
ferramenta Git, torna-se uma ferramenta poderosa para o controle
de versão de arquivos.

TEORIA EM PRÁTICA

Um desenvolvedor de sistemas está trabalhando em um projeto de


desenvolvimento de software e começou a utilizar o Git e o GitHub
para controlar as versões desse sistema. Por ser novato na utilização
dessa ferramenta, está tendo dificuldades ao enviar arquivos para
o controle de versão. Por exemplo, ao tentar aplicar o commit -m,
surge a mensagem de erro: nothing added to commit but untracked
files present.

Análise a situação descrita anteriormente e aponte o erro cometido


pelo desenvolvedor, levando em consideração todos os processos
que devem ser realizados no Git para enviar arquivos para o
controle de versão.

Para conhecer a resolução comentada proposta pelo professor,


acesse a videoaula deste Teoria em Prática no ambiente de
aprendizagem.

29
LEITURA FUNDAMENTAL
Indicações de leitura

Prezado aluno, as indicações a seguir podem estar disponíveis


em algum dos parceiros da nossa Biblioteca Virtual (faça o log
in por meio do seu AVA), e outras podem estar disponíveis em
sites acadêmicos (como o SciELO), repositórios de instituições
públicas, órgãos públicos, anais de eventos científicos ou
periódicos científicos, todos acessíveis pela internet.

Isso não significa que o protagonismo da sua jornada de


autodesenvolvimento deva mudar de foco. Reconhecemos
que você é a autoridade máxima da sua própria vida e deve,
portanto, assumir uma postura autônoma nos estudos e na
construção da sua carreira profissional.

Por isso, nós o convidamos a explorar todas as possibilidades da


nossa Biblioteca Virtual e além! Sucesso!

Indicação 1

O livro indicado aborda os principais tópicos relacionados ao


controle de versão com a ferramenta Git. Nele, é possível conhecer
as configurações iniciais da ferramenta e todas as linhas de
comandos que podem sem inseridas no Git Bash, como os tipos de
commit.

GEISSHIR, K. et al. Git version control. 2. ed. Birmingham: Packt,


2018.

30
Indicação 2

O livro indicado aborda os principais tópicos relacionados ao


controle de versão com a ferramenta Git. Nele, é possível conhecer
o processo de instalação do Git, o que é o Git e como criar
repositórios.

LASTER, B. Professional Git. Nova Jersey: John Wiley & Sons, 2016. v.
1..

QUIZ

Prezado aluno, as questões do Quiz têm como propósito a


verificação de leitura dos itens Direto ao Ponto, Para Saber
Mais, Teoria em Prática e Leitura Fundamental, presentes neste
Aprendizagem em Foco.

Para as avaliações virtuais e presenciais, as questões serão


elaboradas a partir de todos os itens do Aprendizagem em Foco
e dos slides usados para a gravação das videoaulas, além de
questões de interpretação com embasamento no cabeçalho
da questão.

1. O controle de versão de software é fundamental para projetos


__________ ou projetos desenvolvidos por ___________. Em uma
ferramenta de controle conseguimos criar ____________.

As lacunas são preenchidas respectivamente por:

a. Individuais; equipes; repositórios.


b. Simples; complexos; arquivos.
c. Complexos; simples; repositórios.
d. Pequenos; remotamente; arquivos.
31
e. Individuais; complexos; repositório.

2. As ferramentas de controle de versões de software são


essenciais para o desenvolvimento de software. Sem elas,
seria difícil imaginar o trabalho de um desenvolvedor, pois
existiriam muitos problemas no que se refere ao controle
dos itens criados e a sua manutenção. Dessa forma, elas
garantem:

a. O controle de versões de arquivos relacionadas ao


desenvolvimento de software.
b. Versões mais recentes de um arquivo, deletando versões
antigas.
c. Comentários apenas do que foi deletado.
d. O armazenamento das atualizações de versões por um
período, mas depois descartam todos os arquivos.
e. Não realizam controle de versão de arquivos muito grandes.

GABARITO

Questão 1 - Resposta A
Resolução: O controle de versões de software é fundamental
para projetos individuais ou desenvolvidos por equipes de
desenvolvedores. Qualquer ferramenta de controle de versão
consegue criar um repositório. As demais alternativas estão
incorretas, pois nenhuma preenche corretamente as lacunas do
enunciado.

32
Questão 2 - Resposta A
Resolução: As ferramentas de controle de versão de
software congelam os arquivos alterados, mantendo todas as
atualizações realizadas em um sistema. Dessa forma, é possível
manter as alterações comentadas para que o processo de
controle se torne mais seguro. As demais alternativas estão
incorretas, pois não fazem referência correta ao conceito de
ferramentas de controle de software.

33
TEMA 4

Integrando design patterns: gerência


de configuração
______________________________________________________________
Autoria: Arthur Gonçalves
Leitura crítica: Marco Ikuro Hisatomi
DIRETO AO PONTO

Diversos projetos de software integram padrões de projetos GoF


com o processo de gerência de configuração de software, porque
é necessário analisar um projeto como um todo, e não apenas
uma parte dele. Nesse sentindo, integrar padrões de projetos em
projetos de desenvolvimento de software, realizando a gerência de
configuração, faz parte de um processo íntegro, que garantirá um
projeto bem desenvolvido e controlado.

Projetos de software como aplicações web e projetos de


desenvolvimento de jogos eletrônicos utilizam padrões de projetos
para resolver problemas de desenvolvimento. Porém, antes de
decidir qual padrão será utilizado, existe a atuação da gerência de
configuração, que realiza a organização de todo o desenvolvimento.

É necessário escolher quais ferramentas serão utilizadas para


realizar o gerenciamento de controle de mudanças, de controle de
versões e de controle de construção de sistemas. É preciso definir
ainda a equipe que participará do desenvolvimento do projeto e
quais serão as atribuições de cada membro. O gerenciamento que
realiza esse controle é o gerenciamento de controle de mudanças.
Para auxiliá-lo, são utilizados ferramentas, programas ou sistemas
que atuam diretamente no controle de construção de sistemas.

A ferramenta Redmine é um exemplo de ferramenta que atua no


controle de mudanças. Nela, é possível criar projetos, cadastrar a
equipe que participará do projeto e as tarefas que cada membro
realizará. Dessa forma, todas as mudanças realizadas no projeto
serão controladas de forma organizada.

O gerenciamento de configuração de controle de versões mantém


congeladas todas as modificações realizadas no projeto e, assim

35
como a gerência de configuração de controle de mudanças, é
auxiliado por ferramentas que atuam diretamente nesse controle. A
mais utilizada para realizar esse processo é o Git, aliado ao GitHub.
Já o gerenciamento de configuração de controle de construção
de sistema está relacionado ao processo geral de construção de
sistema e é auxiliada por ferramentas de controle, sendo Jenkins a
mais conhecida.

Não é à toa que as ferramentas Redmine, Git e Jenkins são as mais


utilizadas no processo de desenvolvimento de software, visto que
existe forte relação de integração entre elas. Tanto no Redmine
quanto no Jenkins é possível integrar projetos guardados no
controle de versão realizado no Git e no GitHub.

O Quadro 1 mostra de que forma um projeto de aplicação web


ou desenvolvimento de jogos eletrônicos pode ser desenvolvido,
integrando padrões de projetos e gerência de configuração de
software.

Quadro 1 – Construção de projetos de software


Procedimento Ação
Gerência de configuração de Utiliza-se uma ferramenta, como
controle de mudanças Redmine, definindo a equipe e as
tarefas para cada membro.
Gerência de configuração de Utiliza-se uma ferramenta, como
controle de construção de sistemas Jenkins.
Desenvolvimento do sistema Define padrões a serem
implementados.
Gerência de configuração de Adota uma ferramenta, como Git,
controle de versões com o auxílio do GitHub, para o
controle de versões.
Fonte: elaborado pelo autor.

Fica claro que a integração de padrões de projetos com a gerência


de configuração de software torna-se extremamente necessária
36
em um projeto de software. Isso porque todo projeto de software
envolve etapas que precisam ser controladas, registradas e
comentadas; precisa ter suas mudanças, sua construção e suas
versões controladas; e utilizar padrões de projetos para auxiliar na
resolução de possíveis problemas que possam surgir em relação aos
códigos do projeto.

Referências bibliográficas
BIGARDI, G. B. Arquitetura e Desenvolvimento de software — Parte 12 —
Facade. 2019. Disponivel em: https://medium.com/@gbbigardi/arquitetura-e-
desenvolvimento-de-software-parte-12-facade-2a5ed5209325. Acesso em: 6
maio 2021.
GURU, R. Mediator. [s.d.]. Disponivel em: https://refactoring.guru/pt-br/design-
patterns/mediator. Acesso em: 1 jun. 2021.
MARTINS, C. Padrões de Projeto em Aplicações Web Desenvolvendo
projetos web consistentes baseados em reuso de soluções. 2012. Disponível
em: http://www.facom.ufu.br/~bacala/DAW/artigo2012-javamagazine107-
PadroesProjetoWeb.pdf. Acesso em: 9 ago. 2021.
PASSOS, U. Gestão de Projetos: Primeiros passos com o RedMine. DevMedia,
2015. Disponivel em: https://www.devmedia.com.br/gestao-de-projetos-
primeiros-passos-com-o-redmine/33905. Acesso em: 1 jun. 2021.
VALENTE, M. T. Engenharia de Software: Princípios e Práticas para
Desenvolvimento de Software com Produtividade. Minas Gerais: [s.n.], 2020. v.

PARA SABER MAIS

Alguns jogos eletrônicos têm como característica o checkpoint (ponto


de inspeção). Os checkpoints são aplicados em jogos com fases e
são responsáveis por gravar um ponto de retorno. Imagine que um
usuário esteja jogando um jogo desse gênero e já esteja em uma
fase bem avançada, mas tem apenas uma vida; isso significa que,
se ele perder, a famosa frase game over surgirá. Caso isso aconteça,
ele teria de começar tudo do zero? Não se o jogo contar com o
checkpoint.
37
No desenvolvimento de um projeto de jogo eletrônico, você pode
definir fases que devem possuir um checkpoint. Com isso, será
possível gravar naquele momento o estado atual do personagem
que você controla, como a fase, a quantidade de vidas e todos os
outros elementos que envolvem o personagem naquele momento.
Com essa ferramenta, se acontecer de o personagem morrer, o
usuário poderá retornar ao último checkpoint realizado.

A teoria parece ser bem simples, mas como resolver esse problema
na prática? Na realidade, nem na prática é tão complicado, porque,
como já sabemos, existem padrões de projetos para nos auxiliar,
sendo a ideia reutilizar uma solução já existente. Nesse caso, fica
fácil, já que existem diversos jogos que utilizam o checkpoint como
alternativa para os usuários.

Para criar checkpoints, muitos programadores utilizam o padrão


de projeto GoF de comportamento memento. Com ele, é possível
guardar o estado interno de um personagem. A Figura 1 mostra o
funcionamento desse padrão com a criação de um checkpoint.

38
Figura 1 – Criação de checkpoint com o padrão memento

Fonte: https://www.flickr.com/photos/m-i-k-e/6804689396. Acesso em: 9 ago. 2021.

Com isso, você aprendeu como utilizar o padrão de projeto


memento em seus projetos de desenvolvimento de jogos eletrônicos
e agora está apto a aplicar esse conhecimento, além de aplicar
outros padrões no seu projeto.

Referências bibliográficas
BIGARDI, G. B. Arquitetura e Desenvolvimento de software — Parte 12 —
Facade. 2019. Disponivel em: https://medium.com/@gbbigardi/arquitetura-e-
desenvolvimento-de-software-parte-12-facade-2a5ed5209325. Acesso em: 6
maio 2021.
GURU, R. Mediator. Refactoring guru. [s.d.]. Disponivel em: https://refactoring.
guru/pt-br/design-patterns/mediator. Acesso em: 1 jun. 2021.
MARTINS, C. Padrões de Projeto em Aplicações Web Desenvolvendo
projetos web consistentes baseados em reuso de soluções. 2012.

39
Disponível em: http://www.facom.ufu.br/~bacala/DAW/artigo2012-
javamagazine107-PadroesProjetoWeb.pdf. Acesso em: 9 ago. 2021.
PASSOS, U. Gestão de Projetos: Primeiros passos com o RedMine. 2015.
Disponivel em: https://www.devmedia.com.br/gestao-de-projetos-primeiros-
passos-com-o-redmine/33905. Acesso em: 1 jun. 2021.
VALENTE, M. T. Engenharia de Software: Princípios e Práticas para
Desenvolvimento de Software com Produtividade. Minas Gerais: [s.n.], 2020. v.
1.

TEORIA EM PRÁTICA

Uma determinada empresa de desenvolvimento contratou uma


equipe de programadores para desenvolver um jogo eletrônico
do gênero luta. Esse jogo precisa solucionar três problemas: rodar
em vários dispositivos, oferecer ao usuário a oportunidade de
salvar estados e tomar cuidado com a duplicação de código em
dispositivos que possuem poucos recursos. Além disso, a equipe
precisa utilizar a gerência de configuração de software para
desenvolver o projeto.

Analise a situação descrita e aponte de que forma a equipe utilizará


a gerência de configuração de software e como solucionará os três
problemas apresentados.

Para conhecer a resolução comentada proposta pelo professor,


acesse a videoaula deste Teoria em Prática no ambiente de
aprendizagem.

40
LEITURA FUNDAMENTAL
Indicações de leitura

Prezado aluno, as indicações a seguir podem estar disponíveis


em algum dos parceiros da nossa Biblioteca Virtual (faça o log
in por meio do seu AVA), e outras podem estar disponíveis em
sites acadêmicos (como o SciELO), repositórios de instituições
públicas, órgãos públicos, anais de eventos científicos ou
periódicos científicos, todos acessíveis pela internet.

Isso não significa que o protagonismo da sua jornada de


autodesenvolvimento deva mudar de foco. Reconhecemos
que você é a autoridade máxima da sua própria vida e deve,
portanto, assumir uma postura autônoma nos estudos e na
construção da sua carreira profissional.

Por isso, nós o convidamos a explorar todas as possibilidades da


nossa Biblioteca Virtual e além! Sucesso!

Indicação 1

O artigo indicado aborda um projeto orientado a objetos para


jogos em geral usando C # e XNA em padrão de projeto. Nele, é
possível conhecer a aplicação de padrões estruturais, de padrões
de criação e de padrões comportamentais para criar sprites de jogo,
gerenciar estado de jogo e sprites de jogo e ter diferentes colisões e
recompensas entre sprites ou entre sprites e mapa.

QU, J.; SONG, Y.; WEI, Y. Applying Design Patterns in Game


Programming. Athens: Department of Computer Science, 2013.

41
Indicação 2

O livro indicado aborda conceitos relacionados a padrões de


projetos. No Capítulo 6, você aprenderá como aplicar padrões de
projeto GoF em sistemas. Dessa forma, vai conhecer e diferenciar os
principais padrões de projeto, com seus grupos e representantes,
além de conhecer e entender a gerência de configuração de
software e como utilizar os padrões de projetos GoF com exemplos
de projetos propostos.

VALENTE, M. T. Engenharia de Software: Princípios e Práticas para


Desenvolvimento de Software com Produtividade. Minas Gerais:
[s.n.], 2020. v. 1. cap. 6.

QUIZ

Prezado aluno, as questões do Quiz têm como propósito a


verificação de leitura dos itens Direto ao Ponto, Para Saber
Mais, Teoria em Prática e Leitura Fundamental, presentes neste
Aprendizagem em Foco.

Para as avaliações virtuais e presenciais, as questões serão


elaboradas a partir de todos os itens do Aprendizagem em Foco
e dos slides usados para a gravação das videoaulas, além de
questões de interpretação com embasamento no cabeçalho
da questão.

1. Um projeto de software é constituído pela integração de


padrões de projeto GoF com a gerência de configuração de
software. Os padrões de projeto auxiliam na resolução de
problemas, permitindo a reutilização de código, o que deixa
a estrutura do documento mais organizada. Já a gerência de

42
configuração de software envolve atividades que controlam
todo o processo de desenvolvimento. Em projetos de
desenvolvimento de jogos eletrônicos, utilizamos o padrão
de projeto GoF ___________ para guardar o estado interno de
um___________.

Assinale a alternativa que completa adequadamente as


lacunas:

a. Prototype; classe.
b. Adapter; método.
c. Memento; objeto.
d. Builder; objeto.
e. Facade; classe.

2. A empresa TOMITA está sempre atenta para utilizar os


melhores recursos, com ferramentas. Com a integração
de padrões de projeto com gerência de configuração de
software, atua no processo de desenvolvimento de software,
como aplicações web e jogos eletrônicos, além de auxiliar
na manutenção e nas mudanças que um software possa
sofrer, reunindo um conjunto de atividades que auxiliam na
adaptação de um sistema em relação às possíveis mudanças
que possam surgir.

Na gerência de configuração de mudança, existe uma


ferramenta utilizada para realizar o controle de mudança, que
é:

a. Git.
b. Jenkins.
c. GitHub.

43
d. Redmine.
e. Rubi.

GABARITO

Questão 1 - Resposta C
Resolução: Em projetos de desenvolvimento de jogos
eletrônicos, utilizamos o padrão de projeto GoF memento para
guardar o estado interno de um objeto. As demais alternativas
estão incorretas, pois nenhuma completa corretamente o
enunciado.
Questão 2 - Resposta D
Resolução: A ferramenta Redmine é um exemplo de
ferramenta que atua no controle de mudanças. Nela, é possível
criar projetos, cadastrar a equipe que participará do projeto
e as tarefas que cada membro realizará dentro do projeto. As
demais alternativas estão incorretas, pois não trazem o nome
correto da ferramenta utilizada na gerência de configuração de
software.

44
BONS ESTUDOS!

Você também pode gostar