Baixe o app para aproveitar ainda mais
Prévia do material em texto
WBA0882_v1.0 APRENDIZAGEM EM FOCO DESIGN PATTERNS E GERÊNCIA DE CONFIGURAÇÃO: DO PROJETO AO CONTROLE DE VERSÕES 2 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 3 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! Design Patterns: conhecendo os principais padrões ______________________________________________________________ Autoria: Arthur Gonçalves Leitura crítica: Marco Ikuro Hisatomi TEMA 1 5 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. 6 Figura 1 – Padrões de projeto 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. Padrões de criação Padrões de estrutura Padrões de comportamento 7 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!”. 8 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: 9 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 10 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 desenvolvedorde 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 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 Indicações de leitura 11 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. 12 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. 13 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á 14 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. Gerência de configuração: atividades, ferramentas e desafios ______________________________________________________________ Autoria: Arthur Gonçalves Leitura crítica: Marco Ikuro Hisatomi TEMA 2 16 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. 17 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 Controle de configuração Controla versões de componentes de sistemas, garantindo registros e armazenamento das informações, além do gerenciamento adequado de mudanças. VersãoÉ uma instância de um item de configuração (IC), como projeto, código, dados de teste, documentos. Possui um identificador único, composto por um nome, seguido do número da versão. Baseline É um repositório que reúne um conjunto de versões de itens de configuração que compõem um sistema. Codeline Conjunto de versões de um componente de software e outros itens de configuração (projeto, código, dados de teste, documentos) dos quais esse componente depende. Release Versão de sistema liberada para uso. 18 Espaço de trabalho Área de trabalho privada em que o software pode ser modificado sem afetar outros desenvolvedores que possam estar usando ou modificando-o. Construção de sistema Processo de criação de uma versão de sistema executável 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 19 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. 20 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 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. Indicações de leitura 21 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. 22 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. 23 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. Controle de versões na prática com ferramentas de versionamento ______________________________________________________________ Autoria: Arthur Gonçalves Leitura crítica: Marco Ikuro Hisatomi TEMA 3 25 DIRETO AO PONTO As ferramentas de controle de versão são utilizadaspara 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. 26 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 nome" Comando utilizado para se identificar na ferramenta Git. O nome inserido deve ser o mesmo informado no cadastro do GitHub. 27 Git config --global user.email “SeuEmail@email.com” Comando utilizado para se 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. 28 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). 29 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. 30 LEITURA FUNDAMENTAL 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. Indicações de leitura 31 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. 32 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. 33 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. Integrando design patterns: gerência de configuração ______________________________________________________________ Autoria: Arthur Gonçalves Leitura crítica: Marco Ikuro Hisatomi TEMA 4 35 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 36 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 controle de mudanças Utiliza-se uma ferramenta, como Redmine, definindo a equipe e as tarefas para cada membro. Gerência de configuração de controle de construção de sistemas Utiliza-se uma ferramenta, como Jenkins. Desenvolvimento do sistema Define padrões a serem implementados. Gerência de configuração de controle de versões Adota uma ferramenta, como Git, 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 37 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áveispor 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. 38 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. 39 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. 40 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. 41 LEITURA FUNDAMENTAL 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. Indicações de leitura 42 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 43 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. 44 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. BONS ESTUDOS! Apresentação da disciplina Introdução TEMA 1 Direto ao ponto Para sabermais Teoria em prática Leitura fundamental Quiz Gabarito TEMA 2 Direto ao ponto Para saber mais Teoria em prática Leitura fundamental Quiz Gabarito TEMA 3 Direto ao ponto Para saber mais Teoria em prática Leitura fundamental Quiz Gabarito TEMA 4 Direto ao ponto Para saber mais Teoria em prática Quiz Gabarito Inicio 2: Botão TEMA 4: Botão TEMA 1: Botão TEMA 2: Botão TEMA 3: Botão TEMA 9: Inicio :
Compartilhar