Prévia do material em texto
13/03/2024, 01:46 UNINTER https://univirtus.uninter.com/ava/web/roa/ 1/20 FUNDAMENTOS DE DESIGN DE SISTEMAS AULA 1 13/03/2024, 01:46 UNINTER https://univirtus.uninter.com/ava/web/roa/ 2/20 Prof. Vinicius Pozzobon Borin CONVERSA INICIAL O objetivo desta etapa é ensinar-lhe os princípios básicos sobre os sistemas operacionais baseados em Linux. Vamos explorar tópicos como histórico, distribuições, além de aprender serviços e ferramentas essenciais. Não importa se você é novo no mundo do Linux ou se possui alguma experiência prévia, pois este curso tem como objetivo ajudá-lo a se sentir confortável e confiante ao trabalhar com esse sistema operacional poderoso. TEMA 1 – LINUX Linux é um sistema operacional de código aberto criado por Linus Torvalds em 1991. Linus estudava na Universidade de Helsinque e precisava de um sistema operacional para seu computador pessoal. Ele decidiu criar o seu próprio sistema, inspirado no Unix, e chamou-o Linux. Linus começou a trabalhar no projeto como um hobby, mas logo outros desenvolvedores se juntaram a ele e o projeto se expandiu rapidamente. O kernel do Linux foi lançado como software livre, o que significa que qualquer pessoa pode ver, modificar e distribuir o código fonte. Essa abertura permitiu que outros desenvolvedores contribuíssem para o projeto e ajudou a tornar o Linux uma das principais opções de sistema operacional para servidores e computadores pessoais até os dias atuais. Uma frase famosa de Linus Torvalds é: “Se você não pode explicar algo de forma simples, você não entende o assunto o suficiente”. Isso reflete a filosofia de simplicidade e facilidade de uso que ele queria que o Linux tivesse. O Linux inspirou-se no Unix. O Unix e o Linux são sistemas operacionais semelhantes, mas há algumas diferenças importantes. Enquanto o Unix é um sistema operacional proprietário, o Linux é de código aberto. Além disso, o Linux é considerado mais flexível e personalizável do que o Unix. 13/03/2024, 01:46 UNINTER https://univirtus.uninter.com/ava/web/roa/ 3/20 O mascote do Linux é conhecido como Tux, um pinguim (Figura 1). Ele foi criado por Larry Ewing em 1996 e se tornou um símbolo popular para representar o Linux. Frequentemente, ele é usado como logotipo de diversas distribuições Linux e é uma das imagens mais icônicas associadas ao sistema operacional. Figura 1 – Mascote do Linux, o Tux Crédito: Tae Mi/Shutterstock. Linux é um sistema operacional de código aberto, o que significa que qualquer pessoa pode ver, modificar e distribuir o código fonte. Isso é possível graças à licença utilizada no Linux, a GPL (General Public License), criada por Richard Stallman, fundador do Projeto GNU (veremos isso melhor mais à frente). Já o kernel Linux é o núcleo do sistema operacional, que gerencia as tarefas básicas do computador, como gerenciamento de memória e gerenciamento de arquivos. Porém, o kernel Linux por si só não é suficiente para ser utilizado como sistema operacional completo. Para isso, precisamos de softwares adicionais, como gerenciadores de janelas, programas de edição de texto e navegadores web etc. Esses softwares adicionais formam as distribuições Linux, como o Ubuntu, Debian e Fedora. Cada distribuição Linux tem suas próprias características e conjunto de softwares adicionais, permitindo que os usuários escolham a que melhor se adapta às suas necessidades. 13/03/2024, 01:46 UNINTER https://univirtus.uninter.com/ava/web/roa/ 4/20 1.1 KERNEL Um kernel é o núcleo de um sistema operacional. As principais funcionalidades do kernel incluem: Gerenciamento de memória: o kernel é responsável por alocar e liberar memória para os programas, garantindo que cada programa tenha acesso à memória que precisa; Gerenciamento de processos: o kernel é responsável por criar, gerenciar e finalizar processos, ou seja, as tarefas que os programas realizam. Ele garante que cada processo tenha acesso à CPU e memória de forma equitativa; Gerenciamento de arquivos: o kernel é responsável por gerenciar os arquivos no sistema, incluindo a criação, leitura, escrita e exclusão de arquivos; Gerenciamento de dispositivos: o kernel é responsável por gerenciar os dispositivos conectados ao computador, como discos rígidos, impressoras e dispositivos USB. Ele também controla o acesso a esses dispositivos, garantindo que os programas possam usá-los de forma segura. Figura 2 – Sistema operacional Fonte: Tanenbaum, 2008, p. 1. 1.2 PROJETO GNU O Projeto GNU é um projeto de software livre criado em 1983 por Richard Stallman, programador, escritor e ativista político americano, considerado um dos principais defensores do software livre e da liberdade digital. 13/03/2024, 01:46 UNINTER https://univirtus.uninter.com/ava/web/roa/ 5/20 Stallman, além de fundador do Projeto GNU, é também o criador da Fundação para o Software Livre. O objetivo do projeto é desenvolver um sistema operacional completo, livre de restrições de uso e modificação, que possa ser usado por qualquer pessoa. O projeto foi iniciado com o objetivo de criar um sistema operacional semelhante ao Unix, mas com código fonte aberto. O projeto GNU foi fundamental para o desenvolvimento do Linux, pois muitos dos componentes do Linux foram desenvolvidos como parte do projeto GNU. Existem distribuições Linux que são construídas inteiramente utilizando-se de componentes GNU, como o Debian, e são conhecidas como distribuições GNU/Linux. No entanto, nem todo o Linux é composto inteiramente de componentes GNU, algumas distribuições utilizam componentes de outros projetos de software livre e/ou proprietários. 1.3 FILOSOFIA LINUX A filosofia do software livre é baseada no princípio de que este deve ser livre para ser usado, estudado, modificado e distribuído. Isso significa que os usuários não devem ser restritos em suas ações com o software, como é o caso do software proprietário, cujos usuários não podem ver o código fonte e não têm permissão para modificá-lo. A filosofia do Linux é muito semelhante, pois o Linux é um sistema operacional de código aberto, o que significa que o código fonte está disponível para qualquer pessoa ver e modificar. Isso permite que outros desenvolvedores contribuam para o projeto e melhorem o sistema operacional. Outra parte importante da filosofia do Linux e do software livre é a colaboração e a comunidade. Como o código fonte está disponível para todos, muitas pessoas trabalham juntas para melhorar o software. Isso cria uma comunidade de desenvolvedores, usuários e empresas que cooperam para melhorar o software e torná-lo mais acessível para todos. 1.4 APLICAÇÕES DE LINUX O Linux é um sistema operacional versátil e utilizado em uma variedade de aplicações, desde dispositivos como smartphones e Smart TVs, até sistemas de grande porte como servidores e sistemas inteligentes. 13/03/2024, 01:46 UNINTER https://univirtus.uninter.com/ava/web/roa/ 6/20 Em servidores, devido à sua estabilidade, segurança e flexibilidade, muitas empresas e organizações utilizam o Linux como sistema operacional de servidor para aplicações como web hosting, e-mail, arquivos e banco de dados. Grandes empresas usam o Linux como sistema operacional para sistemas de nuvem, como o Amazon Web Services e o Google Cloud. Outra aplicação comum do Linux é em dispositivos móveis, como smartphones e tablets. Muitos fabricantes de dispositivos móveis utilizam o Linux como sistema operacional em seus dispositivos, incluindo o Android, que é baseado no Linux. Além disso, o Linux é usado em Smart TVs, dispositivos de streaming, como o Chromecast e mesmo a Raspberry Pi. O Linux também é usado em aplicações industriais, como sistemas de automação industrial, sistemas inteligentes transporte e sistemas de Internet das coisas (IoT). Isso se deve à sua estabilidade, segurança e capacidade de se adaptar às necessidades de diferentes aplicações. 1.5 FUNDAÇÕES LIGADAS AO LINUX A LinuxFoundation e a Free Software Foundation (FSF) são duas organizações ligadas ao desenvolvimento e promoção do Linux. A Linux Foundation é uma organização sem fins lucrativos que foi fundada em 2000. Ela tem como objetivo promover e proteger o Linux como um projeto de software livre e colaborativo. Ela patrocina o desenvolvimento do kernel Linux, organiza eventos para a comunidade Linux e fornece recursos para empresas que usam o Linux. A Free Software Foundation (FSF) é a organização sem fins lucrativos fundada por Richard Stallman em 1985. Ela tem como objetivo promover a utilização de software livre e garantir a liberdade dos usuários. A FSF criou a licença GPL, e patrocina o desenvolvimento de vários projetos de software livre, incluindo o Projeto GNU. Além disso, a FSF luta pela liberdade do software e promove a filosofia do software livre. TEMA 2 – LICENÇAS DE SOFTWARES Licenças de software são contratos legais que regulamentam a utilização, distribuição e modificação de software. Elas definem as condições e restrições sob as quais os usuários podem usar o software, bem como as responsabilidades dos desenvolvedores e distribuidores do software. 13/03/2024, 01:46 UNINTER https://univirtus.uninter.com/ava/web/roa/ 7/20 Existem diferentes tipos de licenças de software, incluindo licenças proprietárias, licenças gratuitas e licenças de software livre. Vamos agora conhecer um pouco mais as principais licenças existentes. 2.1 SOFTWARE LIVRE Software livre é um tipo de software cujo código-fonte está disponível para ser modificado e distribuído livremente pelos usuários. Isso significa que os usuários podem fazer alterações no software, distribuí-lo e até mesmo vender suas próprias versões, desde que respeitem suas condições da licença. Além disso, os usuários têm acesso ao código-fonte, o que permite que eles entendam como o software funciona e possam resolver eventuais problemas. Exemplos de software livre incluem o sistema operacional Linux, o browser Firefox, o editor de texto LibreOffice, o sistema de gerenciamento de banco de dados MySQL, entre outros. Alguns dos softwares mais conhecidos e utilizados no mundo são livres e são utilizados tanto por usuários comuns quanto por empresas e organizações governamentais. A filosofia do software livre é a de que todos devem ter acesso ao código-fonte e poder modificá-lo e distribuí-lo, sem restrições. 2.2 OPEN SOURCE Softwares open source são aqueles cujos códigos-fontes estão disponíveis para serem estudados, modificados e distribuídos pelos usuários. A principal diferença entre software livre e open source é que o primeiro se baseia na liberdade de uso, estudo, modificação e distribuição, enquanto o segundo na disponibilidade do código-fonte para ser utilizado de forma colaborativa. Embora o termo open source seja mais amplo e inclua softwares livres, nem todos os softwares open source são livres. Alguns deles podem ter restrições quanto às suas modificações e distribuições, enquanto outros podem ser vendidos como produtos comerciais. A filosofia do open source é a de que o compartilhamento do código-fonte permite a colaboração e o desenvolvimento de software mais inovador e de qualidade. Exemplos de softwares open source incluem o sistema operacional Android, o software de edição de vídeo Blender, o gerenciador de projetos Redmine, entre outros. Eles são desenvolvidos e mantidos por uma comunidade global de desenvolvedores e usuários. 2.3 COPYLEFT 13/03/2024, 01:46 UNINTER https://univirtus.uninter.com/ava/web/roa/ 8/20 Licenças com copyleft são uma categoria especial de licenças de software livre que garantem que as modificações e distribuições derivadas do software se mantenham iguais. Isso é feito através da exigência de que qualquer pessoa que distribua o software ou suas modificações deve fornecer o código-fonte e licenciar o software sob os mesmos termos da licença original. Exemplos de licenças com copyleft incluem a GPL v2 (General Public License), usada no Linux, a LGPL (Lesser General Public License) e a AGPL (Affero General Public License). Essas licenças são amplamente utilizadas em projetos de software livre, incluindo o Linux, o Firefox, o LibreOffice, o MySQL e muitos outros. Elas garantem que o software continue livre e acessível para todos, mesmo que seja modificado e distribuído por terceiros. 2.4 FREEWARE E SHAREWARE Freeware é um tipo de software gratuito, que é distribuído sem custo algum e pode ser usado, copiado e distribuído livremente pelos usuários. No entanto, o código-fonte do software geralmente não está disponível, o que significa que os usuários não podem modificá-lo ou distribuí-lo como uma versão modificada. Exemplos de freeware incluem o navegador Firefox, o editor de texto Notepad ++ e o software antivírus Avast. Já o Shareware é um tipo de software que é distribuído gratuitamente para teste e avaliação, mas que geralmente requer uma licença de uso paga para ser usado permanentemente. Esse tipo de software pode ser usado por um período limitado ou com certas restrições funcionais antes de precisar ser licenciado. Exemplos de shareware podem incluir jogos e softwares de grandes empresas, como o software de edição de fotos Adobe Photoshop. Em resumo, a diferença entre freeware e shareware é que o primeiro é completamente gratuito para usar e distribuir, enquanto este é gratuito para experimentar, mas requer uma licença de uso paga para ser usado permanentemente. 2.5 SOFTWARE PROPRIETÁRIO Software proprietário é um tipo de software que é controlado e licenciado por uma empresa ou indivíduo, que tem o direito exclusivo de distribuir, modificar e usar o software. Esse tipo de software geralmente vem com uma licença restritiva que proíbe a modificação, a distribuição e o uso 13/03/2024, 01:46 UNINTER https://univirtus.uninter.com/ava/web/roa/ 9/20 compartilhado do software por terceiros. Além disso, o código-fonte do software geralmente não está disponível ao público. Exemplos de software proprietário incluem o sistema operacional Windows da Microsoft, o software de edição de vídeo Adobe Premiere e o software de gerenciamento de projetos Microsoft Project. É importante notar que esses softwares são adquiridos mediante licenciamento, em que a compra da licença dá direito a uso, mas não à mmodificação do código fonte. 2.6 SOFTWARE AS A SERVICE (SAAS) Software as a Service (SAAS) é um modelo de entrega de software cujas aplicações são acessadas por meio da internet e geralmente são oferecidas por meio de assinatura. Isso significa que, em vez de instalar e gerenciar o software em seus próprios computadores, os usuários acessam a ele e a seus dados através da internet. A maioria dos provedores de SAAS oferecem acesso ao software por meio de um navegador web, ou aplicativos de smartphones, e os dados são armazenados em servidores remotos. Exemplos de SAAS incluem o Google Apps, Salesforce, Dropbox, Netflix, Spotify e Slack. Esses serviços oferecem funcionalidades como e-mails, armazenamento de arquivos, gerenciamento de vendas, vídeos, música e comunicação de equipe, respectivamente, e são acessados via internet, permitindo o acesso a qualquer lugar e dispositivo com conexão. Este modelo de negócio vem sendo cada vez mais anotado mundo afora. TEMA 3 – DISTRIBUIÇÕES LINUX Uma distribuição Linux é uma versão do sistema operacional Linux que inclui um conjunto de ferramentas e programas adicionais. Elas são criadas por diferentes organizações e comunidades, e cada uma tem seus próprios objetivos e características. Algumas distribuições Linux são projetadas para uso em desktops e laptops, enquanto outras são otimizadas para uso em servidores ou dispositivos embarcados. Veja, na Figura 3, o que compõe uma distribuição: Figura 3 – Distribuições Linux 13/03/2024, 01:46 UNINTER https://univirtus.uninter.com/ava/web/roa/ 10/20 Crédito: Vinicius Pozzobon Borin. Cada distribuição Linux tem sua própria filosofia e conjunto deferramentas, mas todas usam o mesmo kernel Linux. Algumas distribuições Linux são mais fáceis de usar para iniciantes, enquanto outras são mais adequadas para usuários avançados ou para fins específicos, como desenvolvimento de software ou uso em servidores. Algumas distribuições Linux são gratuitas e de código aberto, enquanto outras podem ser adquiridas comercialmente e oferecem suporte técnico e atualizações. Algumas distribuições Linux são desenvolvidas por comunidades, enquanto outras são desenvolvidas por empresas. Saiba mais Temos no mercado hoje centenas de distribuições. Acessando os links a seguir você encontra o catálogo delas, bem como os links para download: LWN.net. Disponível em: <https://lwn.net/>. Acesso em: 22 fev. 2023. DISTROWATCH. Disponível em: <https://distrowatch.com>. Acesso em: 22 fev. 2023. O kernel Linux, para criar sua própria distribuição, pode ser encontrado acessando-se o link a seguir: MIRRORS.KERNEL.ORG. Disponível em: <https://mirrors.edge.kernel.org/>. Acesso em: 22 fev. 2023. https://lwn.net/ https://lwn.net/ https://lwn.net/ https://distrowatch.com/ https://distrowatch.com/ https://distrowatch.com/ https://mirrors.edge.kernel.org/ https://mirrors.edge.kernel.org/ https://mirrors.edge.kernel.org/ 13/03/2024, 01:46 UNINTER https://univirtus.uninter.com/ava/web/roa/ 11/20 Na Figura 4 temos algumas das principais família e distribuições Linux. Figura 4 – As principais famílias e distribuições Crédito: Vinicius Pozzobon Borin. 3.1 DEBIAN A distribuição Debian é uma das mais antigas e respeitadas distribuições Linux. Ela foi criada em 1993 pelo programador Ian Murdock, com o objetivo de criar um sistema operacional livre e de código aberto que pudesse ser usado em várias arquiteturas de computador. Uma das principais características da Debian é o seu gerenciador de pacotes, o APT (Advanced Package Tool - .deb), que permite que os usuários instalem, atualizem e removam facilmente pacotes de software. Isso torna a administração do sistema muito mais fácil e eficiente. Outra característica interessante da Debian é o projeto Debian/Hurd, que visa criar uma versão da distribuição baseada no kernel Hurd (Sistema de núcleos da GNU), em vez do núcleo Linux. O Hurd é projetado para ser mais seguro e escalável que o Linux e oferece recursos avançados, como suporte a transações. Embora ainda não esteja completamente madura, a Debian/Hurd é uma ótima opção para aqueles interessados em experimentar novas tecnologias. O Debian vem com diferentes interfaces gráficas, sendo a principal delas o GNOME. Além disso, a distribuição Debian deu origem a diferentes outras distribuições, como o Ubuntu, Mint e o Kurumin 13/03/2024, 01:46 UNINTER https://univirtus.uninter.com/ava/web/roa/ 12/20 (distribuição brasileira). Outra variação é o Raspbian, otimizada para ser executada em dispositivos Raspberry Pi. Ele inclui pacotes específicos para Raspberry Pi, como o gerenciador de janelas PIXEL e o software Scratch para programação de dispositivos. 3.2 UBUNTU A distribuição Ubuntu é um sistema operacional baseado em Linux desenvolvido pela empresa sul africana chamada Canonical. Ele é projetado para ser fácil de usar e acessível para usuários iniciantes, e bom para usuário avançados também. O Ubuntu é baseado no Debian e usa o gerenciador de pacotes apt para instalar e gerenciar programas. O comando sudo surgiu com o Ubuntu. Ele é usado para dar privilégios de administrador ao usuário, permitindo que ele execute comandos que precisam de permissões elevadas. Além disso, o Ubuntu também é compatível com o WSL (Subsistema Windows para Linux) do Windows 10, o que permite que os usuários executem comandos Linux diretamente no Windows sem precisar de uma máquina virtual ou dual boot. Isso pode ser útil para desenvolvedores que precisam alternar entre o Windows e o Linux. 3.3 MINT A distribuição Linux Mint é uma versão baseada no Ubuntu que foi criada para fornecer uma experiência de usuário similar ao Windows, tornando-a uma boa opção para usuários que estão migrando do Windows para o Linux. O Linux Mint vem acompanhada de um ambiente de desktop chamado Cinnamon, que é projetado para ser fácil de usar e intuitivo. Ele inclui uma barra de tarefas e um menu iniciar semelhantes ao Windows, o que ajuda os usuários a se sentirem mais confortáveis enquanto se acostumam com o novo sistema operacional. Além disso, o Linux Mint vem com uma variedade de aplicativos populares pré-instalados, como o LibreOffice (uma alternativa gratuita ao Microsoft Office) e o Firefox (navegador da web), para que os usuários possam começar a trabalhar imediatamente após a instalação. 3.4 RED HAT 13/03/2024, 01:46 UNINTER https://univirtus.uninter.com/ava/web/roa/ 13/20 A distribuição Red Hat é baseada em código aberto e é amplamente utilizada em empresas e organizações de todos os tamanhos. Uma das principais características da distribuição Red Hat é o seu gerenciador de pacotes, o RPM (Red Hat Package Manager). Ele garante que todos os pacotes instalados estejam em conformidade com as políticas de segurança e estabilidade do sistema. É importante mencionar que a distribuição Red Hat não é gratuita. Ela é disponibilizada sob uma licença comercial, o que significa que os usuários precisam pagar por suporte e atualizações de segurança. No entanto, os usuários podem baixar e usar a distribuição gratuitamente, sem suporte técnico ou atualizações de segurança. TEMA 4 – TERMINOLOGIA LINUX O universo do Linux apresenta terminologias bastante particulares e que precisam ser conhecidas por quem trabalha com ele. Já aprendemos termos como kernel, distribuição e GNU. Mas vamos conhecer mais alguns deles agora. 4.1 PROCESSO DE BOOT O processo de inicialização de um computador, conhecido como boot, é uma sequência de etapas que acontecem quando você liga o seu computador. Ele começa com o carregamento do firmware, como o BIOS ou UEFI, que é um software básico armazenado na memória do computador que controla as funções básicas do hardware. O firmware verifica se o disco rígido e outros dispositivos de armazenamento estão conectados e funcionando corretamente, e então procura por um sistema operacional para carregar (boot loader). Se você estiver usando o Linux, o firmware irá procurar pelo arquivo de boot loader, se for no Linux, geralmente é o GRUB, que é responsável por carregar o kernel Linux. Uma vez que o kernel é carregado, ele inicia o processo de inicialização do sistema operacional, carregando os módulos de dispositivos e configurando as configurações de hardware. Em seguida, ele inicia os serviços do sistema, como o gerenciador de login, e finalmente, inicia a interface gráfica ou o prompt de comando, dando a você acesso ao seu sistema. 13/03/2024, 01:46 UNINTER https://univirtus.uninter.com/ava/web/roa/ 14/20 No Linux, existem vários boot loaders disponíveis, mas os mais comuns são o GRUB, LILO e ISOLINUX. O GRUB (Grand Unified Boot Loader) é o boot loader padrão para a maioria das distribuições Linux. Ele oferece uma interface amigável para selecionar o sistema operacional a ser iniciado e também fornece recursos avançados como a capacidade de editar a linha de comando do kernel antes do seu início. A Figura 5 apresenta em um diagrama a explicação de inicialização dada acima: Figura 5 – Processo de inicialização Crédito: Vinicius Pozzobon Borin. 4.2 SISTEMA DE ARQUIVOS Sistemas de arquivos são estruturas de dados que organizam e gerenciam arquivos em um dispositivo de armazenamento, como um disco rígido. Eles são responsáveis por criar, ler, atualizar e excluir arquivos, bem como gerenciar permissões de acesso e outras informações importantes. No Linux, os sistemas de arquivos mais comuns incluem o Ext4, o XFS, e o Btrfs. O Ext4 é amplamente utilizado e é o sistema de arquivos padrão para a maioria das distribuições Linux modernas. Ele oferece uma boa relação entre desempenho e capacidade de armazenamento, além desuportar arquivos de tamanho de até 16 TB (TeraBytes). O XFS é outro sistema de arquivos popular no Linux, especialmente para sistemas que trabalham com arquivos gigantescos. Ele oferece suporte a arquivos de até 9 EB (ExaBytes) e é usado em sistemas de arquivos de alta capacidade, como servidores de arquivos e sistemas de armazenamento de massa (big data). 13/03/2024, 01:46 UNINTER https://univirtus.uninter.com/ava/web/roa/ 15/20 Por fim, o Btrfs é um sistema de arquivos de nova geração, projetado para oferecer recursos avançados como snapshots, replicação e balanceamento de carga. Ele ainda não é tão amplamente utilizado quanto o Ext4 ou XFS, mas é considerado como uma boa opção para sistemas de arquivos de alta capacidade e que precisam de recursos avançados. Quadro 1 – Diferenças entre os tipos sistemas de arquivos e também de nomenclatura entre o ambiente Windows e o Linux Windows Linux Partição Disk1 /dev/sda1 Tipo de Sistema de arquivos NTFS/FAT EXT3/EXT4… Diretório base (onde o SO é armazenado) C:\ / Fonte: Borin, 2023. 4.3 X WINDOW SYSTEM E A INTERFACE GRÁFICA LINUX O X Window System, também conhecido como X ou X11, é um sistema de gerenciamento de janelas para sistemas Unix-like, como o Linux. Ele fornece uma camada de gerenciamento de janelas para aplicativos gráficos, permitindo que os usuários criem e gerenciem janelas, menus e outros elementos gráficos em uma interface gráfica de usuário. Os aplicativos se comunicam com o servidor X através de uma API (Application Programming Interface), chamada Xlib, que permite que os aplicativos criem e gerenciem janelas, desenhem elementos gráficos e gerem eventos de entrada, como cliques de mouse e teclas pressionadas. O X Window System é somente a camada inferior de toda a interface gráfica - Graphic User Interface (GUI), do Linux. Na Figura 6 vemos como a interface é construída: Figura 6 – Graphic User Interface (GUI) do Linux 13/03/2024, 01:46 UNINTER https://univirtus.uninter.com/ava/web/roa/ 16/20 Crédito: Vinicius Pozzobon Borin. Quando falamos de ambiente desktop e gerenciadores de janelas, precisamos citar Gnome e o KDE, que são os mais comuns de serem encontrados em distribuições Linux. Falando um pouco do Gnome, ele fornece uma interface gráfica de usuário completa, incluindo um gerenciador de janelas, barra de tarefas, painel e uma coleção de aplicativos para tarefas comuns, como navegação de arquivos, visualização de imagens, edição de texto e muito mais. O Gnome foi criado com o objetivo de oferecer uma interface amigável e acessível para o sistema operacional Linux. Ele é projetado para ser intuitivo e fácil de usar, com uma interface limpa e consistente, e é uma das principais opções de ambiente de desktop utilizadas no Linux. 4.4 LINHA DE COMANDO (TERMINAL) A linha de comando, também conhecida como terminal, é um meio de interagir com o sistema operacional por meio de comandos digitados em uma interface de texto. No Linux, a linha de comando é uma das formas mais poderosas e flexíveis de se trabalhar com o sistema operacional, permitindo que os usuários executem tarefas avançadas, como gerenciar arquivos, configurar o sistema, instalar e desinstalar programas, entre outras, sem a necessidade de uma interface gráfica. Além disso, os comandos digitados na linha de comando também podem ser automatizados através de scripts para realizar tarefas repetitivas ou complexas. A linha de comando é uma ferramenta importante para os administradores de sistemas e desenvolvedores, pois permite uma maior eficiência e automatização. 13/03/2024, 01:46 UNINTER https://univirtus.uninter.com/ava/web/roa/ 17/20 4.5 SHELL O shell é um interpretador de comandos que permite aos usuários interagir com o sistema operacional por meio da linha de comando. No Linux, existem vários tipos de shells disponíveis, cada um com suas próprias características e comandos. Alguns exemplos de shells comuns no Linux incluem o Bash (Bourne-Again Shell), o Zsh (Z Shell) e o Tcsh (Tenex C Shell). O Bash é o shell padrão na maioria das distribuições Linux e é muito popular entre os usuários. Ele fornece uma variedade de recursos, como autocompletar comandos e nomes de arquivos, histórico de comandos e suporte para scripts. TEMA 5 – SERVIÇOS NO LINUX E CERTIFICAÇÕES Vamos agora finalizar nossa etapa sobre Linux conversando sobre alguns tópicos distintos dentro Linux que você precisa conhecer. 5.1 SERVIÇOS NO LINUX Podemos simplificar a explicação e dizer que os serviços nada mais são do que programas que instalamos no Linux para desenvolver determinadas tarefas. Existem muitos serviços disponíveis para usuários de Linux, cada um com suas próprias características e funcionalidades únicas. Vamos citar alguns deles a seguir. Um dos principais serviços disponíveis no Linux é o LibreOffice, que é um pacote de aplicativos de escritório de código aberto que inclui um processador de texto, planilha eletrônica, apresentação, editor de desenhos e muito mais. Ele é compatível com arquivos do Microsoft Office e é uma excelente opção para aqueles que precisam trabalhar com documentos e planilhas. Outro serviço popular no Linux é o Mozilla Firefox. Este é um navegador web de código aberto que oferece uma variedade de recursos, como a capacidade de adicionar extensões e personalizar a interface do usuário. Além disso, o Firefox é conhecido por ser mais seguro e privado do que outros navegadores populares, o que o torna uma excelente escolha para usuários preocupados com a privacidade. 13/03/2024, 01:46 UNINTER https://univirtus.uninter.com/ava/web/roa/ 18/20 Podemos citar inúmeros outros serviços para Linux, e que também existem no Windows, como o editor de imagens GIMP, player de vídeos VLC e o gravador de vídeos, OBS Studio. Figura 7 – Exemplos de serviços no Linux 5.2 JOGOS NO LINUX Um dos objetivos desta etapa é também instigar você a usar o Linux no seu dia a dia, mesmo que para entretenimento, até que se acostume com ele e talvez o adote como seu sistema operacional principal no futuro. Assim, nada mais justo do que comentar um pouco sobre como jogar games em Linux. Jogos em Linux são uma ótima opção para aqueles que desejam jogar em um sistema operacional livre e de código aberto. Existem muitos jogos disponíveis para Linux, desde jogos indie até jogos AAA. No entanto, alguns jogos não são nativos para Linux e precisam ser executados utilizando-se de um software de emulação, como o Wine ou o Proton. O Wine permite que você execute programas do Windows no Linux. Ele é compatível com uma ampla variedade de jogos e aplicativos, mas pode exigir alguma configuração e otimização para funcionar corretamente. Já o Proton é uma versão do Wine desenvolvida pela Valve (criadora da Steam) para melhorar a compatibilidade de jogos do Windows com o Linux. Ele já vem com configurações otimizadas e é 13/03/2024, 01:46 UNINTER https://univirtus.uninter.com/ava/web/roa/ 19/20 mais fácil de usar que o Wine. 5.3 CERTIFICAÇÕES LINUX As certificações e provas de certificação na área da computação são uma excelente maneira de demonstrar suas habilidades e conhecimentos em um determinado campo ou tecnologia. Elas são frequentemente exigidas por empregadores e podem ajudar a abrir portas para novas oportunidades de carreira. Além disso, as certificações podem ajudá-lo a se manter atualizado com as últimas tendências e desenvolvimentos em sua área de interesse. Existem várias organizações que oferecem certificações em diferentes áreas da computação, como programação, segurança, banco de dados e redes. Alguns exemplos incluem a Microsoft, a Cisco e a Oracle. Cada organização tem seus próprios requisitos para a certificação, que podem incluir a realização de cursos de treinamento, experiência prévia e aprovação em uma prova de certificação. A importância das certificações varia de acordo com a área de trabalho, mas geralmente é uma prova de sua competência e habilidade para trabalhar com tecnologiasespecíficas. Isso pode ajudar a diferenciá-lo de outros candidatos em uma entrevista de emprego ou aumentar suas chances de promoção. Além disso, as certificações podem ajudá-lo a se manter atualizado com as últimas tendências e desenvolvimentos em sua área de interesse e aumentar sua confiança no seu trabalho. A Linux Professional Institute (LPI) é uma organização sem fins lucrativos que oferece certificações para profissionais de sistemas Linux. A LPI é reconhecida mundialmente como líder em certificação Linux e tem como objetivo ajudar os profissionais a provar suas habilidades e conhecimentos em sistemas Linux. A LPI oferece quatro níveis de certificação: Linux Essentials, LPIC-1, LPIC-2 e LPIC-3. A Linux Essentials não é obrigatória, e foi feita para quem não conhece nada de Linux. O LPIC-1 é a certificação básica e abrange os conhecimentos necessários para instalar, configurar, usar o terminal e administrar sistemas Linux. O LPIC-2 é a certificação intermediária, e a LPIC-3 é a certificação avançada e abrange tópicos especializados, como virtualização e segurança avançada. Na Figura 8 vemos a sequência dessas certificações. Figura 8 – Certificações Linux da LPI 13/03/2024, 01:46 UNINTER https://univirtus.uninter.com/ava/web/roa/ 20/20 FINALIZANDO Ao longo desta etapa demos nossos primeiros passos com o Linux. Caso você nunca tenha utilizado esse sistema operacional, espero que tenha se interessado e instigado você a conhecê-lo melhor, pois é amplamente utilizado no mercado de tecnologia. Caso já tenha experiência com ele, espero que tenha trazido a você mais algum conhecimento que você ainda não tinha. REFERÊNCIAS LINUX.ORG. Disponível em: <https://www.linux.org/>. Acesso em: 22 fev. 2023. SILVA, R. L. Linux: guia de instalação e administração. São Paulo: Novatec, 201 TANENBAUM, A. S. Sistemas operacionais modernos. 4. ed. São Paulo: Pearson Prentice Hall, 2008. 13/03/2024, 01:47 UNINTER https://univirtus.uninter.com/ava/web/roa/ 1/16 FUNDAMENTOS DE DESIGN DE SISTEMAS AULA 2 13/03/2024, 01:47 UNINTER https://univirtus.uninter.com/ava/web/roa/ 2/16 Prof. Vinicius Pozzobon Borin CONVERSA INICIAL O objetivo desta etapa é oferecer um aprofundarmento no Ubuntu, conhecendo a sua estrutura de diretórios e a linha de comando do Linux. Os objetivos específicos são: conhecer a estrutura de diretórios do Linux; aprender os comandos de manipulação de diretorios e arquivos; conhecer comandos do sistema; conhecer comandos de instalação de pacotes; e conhecer permissões, acessos e seus comandos no Linux. TEMA 1 – ESTRUTURA DE DIRETÓRIOS DO LINUX O Windows e o Linux são sistemas operacionais diferentes que utilizam estruturas de arquivos distintas para organizar arquivos e pastas. No Windows, os arquivos são organizados em uma única estrutura de diretórios e os diretórios são representados como pastas. Cada pasta pode conter arquivos e outras pastas, permitindo que os usuários naveguem pelas estruturas de diretórios para encontrar o arquivo desejado. O diretório raiz do Windows, por padrão, é o C:\, onde todos os outros diretórios estão alocados. A Figura 1 apresenta um exemplo de diretórios Windows. Figura 1 – Diretórios do Windows 13/03/2024, 01:47 UNINTER https://univirtus.uninter.com/ava/web/roa/ 3/16 Já no Linux, a estrutura de diretórios é hierárquica e baseada em raízes. A raiz é representada pelo símbolo "/" e todos os outros diretórios são organizados em relação a ela. O Linux usa uma estrutura de diretórios rigorosa, com pastas específicas para cada tipo de arquivo. Vamos conhecer as principais a seguir. 1.1 DIRETÓRIO BIN O diretório "/bin" no Linux é usado para armazenar arquivos binários executáveis, ou seja, programas que podem ser executados diretamente pelo sistema. É similar ao Arquivos de Programas do Windows, com programas comuns que são frequentemente usados pelos usuários e pelo próprio sistema. Além disso, o "/bin" é um dos diretórios incluídos no caminho de pesquisa do sistema, o que significa que o sistema automaticamente procura nesse diretório quando o usuário executa um comando no terminal. Isso garante que os programas comuns estejam sempre disponíveis para o usuário, independentemente da pasta atual em que ele está trabalhando. 1.2 DIRETÓRIO BOOT O diretório "/boot" no Linux é responsável por armazenar arquivos necessários para o processo de inicialização do sistema. Esses arquivos incluem o kernel do Linux, arquivos de configuração e drivers de dispositivos. Durante o processo de inicialização, o sistema carrega os arquivos contidos no "/boot" para configurar e inicializar o hardware. Depois, carrega o kernel do sistema. O diretório "/boot" é 13/03/2024, 01:47 UNINTER https://univirtus.uninter.com/ava/web/roa/ 4/16 importante, pois ele é necessário para que o sistema operacional funcione corretamente, considerando aqui que arquivos corrompidos ou ausentes podem impedir o processo de inicialização. Por isso, é importante que os arquivos no "/boot" sejam mantidos atualizados e protegidos contra danos ou modificações acidentais. 1.3 DIRETÓRIO DEV O diretório "/dev" (devices) no Linux é usado para representar dispositivos de hardware presentes no sistema. Nele, cada dispositivo é representado por um arquivo especial, conhecido como arquivo de dispositivo, que permite que o sistema e os programas acessem o dispositivo de hardware. Os arquivos de dispositivo são usados para realizar operações de leitura e escrita no dispositivo, bem como para controlar o seu comportamento. O diretório "/dev" é importante porque é usado como um ponto central para o acesso a todos os dispositivos de hardware no sistema, incluindo discos rígidos, unidades de CD-ROM, dispositivos de entrada, como teclados e mouses, entre outros. Além disso, os arquivos de dispositivo no "/dev" são usados por vários programas de sistema para a realização de tarefas, como montar partições de disco ou acessar dispositivos de rede. A nomenclatura de discos no Linux é baseada na convenção de letras maiúsculas para discos rígidos internos e letras minúsculas para dispositivos removíveis. Cada dispositivo de armazenamento é representado por um arquivo especial no diretório "/dev", como "/dev/sda" para o primeiro disco rígido interno, "/dev/sdb" para o segundo, e "/dev/sdc" para dispositivos removíveis, como pen drives. Além disso, as partições de um disco rígido são identificadas com um número adicional, como "/dev/sda1" para a primeira partição do disco rígido "/dev/sda". Essa convenção é usada pelo sistema operacional para identificar e acessar dispositivos de armazenamento de maneira consistente. 1.4 DIRETÓRIO ETC O diretório "/etc" no Linux é usado para armazenar arquivos de configuração do sistema e de programas instalados no sistema. Os arquivos de configuração controlam como o sistema operacional e os programas se comportam, incluindo configurações de rede, definições de usuário, informações de autenticação e outros detalhes importantes. 13/03/2024, 01:47 UNINTER https://univirtus.uninter.com/ava/web/roa/ 5/16 O diretório "/etc" é acessado frequentemente por administradores de sistema, para a realização de tarefas como configurar serviços de rede, adicionar ou remover usuários, ou ainda alterar configurações de programas instalados. Além disso, os arquivos de configuração no "/etc" são usados pelo sistema operacional durante o processo de inicialização para definir as configurações necessárias para o funcionamento correto do sistema. 1.5 DIRETÓRIO HOME O diretório "/home" no Linux é usado para armazenar os arquivos pessoais e de configuração de cada usuário do sistema. Cada usuário tem o seu próprio diretório dentro do "/home", geralmente com o mesmo nome do usuário. Por exemplo, "/home/vinicius" para o usuário "vinicius". Esses diretórios são usados para armazenar arquivos pessoais, como documentos, imagens, músicas e outros, bem como arquivosde configuração específicos para o usuário. O diretório "/home" é uma parte importante da estrutura de arquivos do Linux, pois permite que cada usuário tenha os seus próprios arquivos e configurações em separado dos demais usuários e do sistema operacional. Isso oferece separação de responsabilidades entre usuários e protege contra a perda de dados ou configurações importantes, caso ocorra algum problema com o sistema operacional ou com outros usuários. Além disso, a estrutura de diretórios do "/home" permite que os usuários tenham acesso aos seus arquivos a partir de qualquer conta, desde que estejam logados no sistema. O diretório equivalente ao "/home" no Windows é geralmente o diretório "C:\Users". Assim como o "/home" no Linux, o diretório "C:\Users" também armazena os arquivos pessoais e de configuração para cada usuário do sistema. Cada usuário tem o seu próprio diretório dentro do "C:\Users". Em termos de funcionamento, o diretório "C:\Users" no Windows e o diretório "/home" no Linux servem para a mesma finalidade: separam os arquivos pessoais e de configuração de cada usuário para fornecer segurança e facilidade de acesso aos arquivos. 1.6 OUTROS DIRETÓRIOS LINUX Por fim, vejamos mais alguns diretórios importantes do Linux Ubuntu. 13/03/2024, 01:47 UNINTER https://univirtus.uninter.com/ava/web/roa/ 6/16 root: diretório raiz para o usuário administrador (root); armazena arquivos e configurações exclusivas para o usuário root. lib: diretório que armazena bibliotecas compartilhadas usadas pelo sistema operacional e pelos aplicativos. media: diretório usado para montar dispositivos externos, como discos rígidos externos ou dispositivos de mídia removíveis. mnt: diretório similar ao "/media", usado para montar dispositivos de armazenamento temporários. opt: diretório usado para armazenar aplicativos adicionais que não fazem parte do sistema operacional padrão – o Google Chrome, por exemplo, usa este diretório. proc: diretório virtual que fornece informações sobre o sistema e o processo em execução. run: diretório usado para armazenar informações de tempo de execução para o sistema e os aplicativos. sbin: diretório que armazena comandos binários usados para manter e configurar o sistema operacional – é a pasta bin do super usuário. tmp: diretório usado para armazenar arquivos temporários para o sistema e os aplicativos. usr: diretório que armazena aplicativos, documentação e outros arquivos compartilhados usados pelo sistema e pelos usuários. var: diretório que armazena arquivos que variam, como logs de sistema, arquivos de e-mail e outros arquivos de dados dinâmicos. TEMA 2 – COMANDOS DE MANIPULAÇÃO DE DIRETÓRIOS O terminal é a interface de linha de comando que permite aos usuários interagir com o sistema operacional Linux. Através do terminal, os usuários podem executar comandos para realizar tarefas como gerenciar arquivos, instalar softwares, gerenciar processos e realizar configurações do sistema. O terminal do Linux é uma ferramenta poderosa e flexível, amplamente utilizada por administradores de sistemas e desenvolvedores. Além de ser mais rápido e eficiente em comparação a interfaces gráficas, o terminal permite aos usuários automatizar tarefas repetitivas e executar tarefas em lote com facilidade. Além disso, muitas distribuições Linux incluem recursos adicionais, como autocompletar comandos, histórico de comandos e shell diferentes para escolha. 13/03/2024, 01:47 UNINTER https://univirtus.uninter.com/ava/web/roa/ 7/16 Vamos começar a conhecer os comandos de manipulação de diretórios em Linux. 2.1 COMANDO LS O comando ls é um dos comandos mais básicos e amplamente utilizados no terminal Linux. A sigla ls significa list (listar). Ela é usada para listar os arquivos e diretórios em um diretório. A sintaxe básica do comando ls é: ls [opções] [caminho/diretório] Alguns dos principais parâmetros do comando ls incluem: -l, de arquivos e data de modificação; -a, que mostra todos os arquivos, incluindo aqueles ocultos que começam com um ponto (.); e -h, que exibe o tamanho dos arquivos em uma formatação humanamente legível. Um exemplo de uso do comando ls é listar os arquivos e diretórios em um diretório específico: ls ~/Downloads Este comando irá exibir todos os arquivos e diretórios na pasta de downloads do usuário corrente. 2.2 COMANDO CD A sigla cd significa change directory (mudar diretório), sendo usada para mudar o diretório de trabalho atual. A sintaxe básica do comando cd é: cd [caminho/diretório] Alguns dos principais parâmetros do comando cd incluem: "." (ponto), que representa o diretório atual; ".." (ponto ponto), que representa o diretório pai (um nível acima do diretório atual); e "~" (til), que representa o diretório home do usuário corrente. Um exemplo de uso do comando cd é mudar para o diretório home do usuário corrente: cd ~ 13/03/2024, 01:47 UNINTER https://univirtus.uninter.com/ava/web/roa/ 8/16 2.3 COMANDO MKDIR O comando mkdir é utilizado para criar novos diretórios em sistemas operacionais Linux. A sigla mkdir significa make directory (criar diretório). A sintaxe básica do comando mkdir é: mkdir [nome_do_diretório] Alguns dos principais parâmetros do comando mkdir incluem: -p, que permite criar diretórios aninhados, ou seja, diretórios dentro de outros diretórios; e -m, que permite definir as permissões para o novo diretório. Um exemplo de uso do comando mkdir é criar um diretório chamado novo_diretorio, como: mkdir novo_diretorio 2.4 COMANDO RMDIR O comando rmdir é utilizado para remover diretórios vazios em sistemas operacionais Linux. A sigla rmdir significa remove directory (remover diretório). A sintaxe básica do comando rmdir é: rmdir [nome_do_diretório] Alguns dos principais parâmetros do comando rmdir incluem: -p, que permite remover diretórios aninhados, ou seja, diretórios dentro de outros diretórios; e -v, que exibe mensagens na tela sobre as ações realizadas pelo comando. Um exemplo de uso do comando rmdir" é remover um diretório chamado diretorio_a_ser_removido rmdir diretorio_a_ser_removido Este comando irá remover o diretório diretorio_a_ser_removido se ele estiver vazio. Se o diretório não estiver vazio, o comando apresentará uma mensagem de erro. 2.5 COMANDO RM 13/03/2024, 01:47 UNINTER https://univirtus.uninter.com/ava/web/roa/ 9/16 O comando rm é utilizado para remover arquivos e diretórios. A sigla rm significa remove (remover). A sintaxe básica do comando rm é: rm [nome_do_arquivo_ou_diretório] Alguns dos principais parâmetros do comando rm incluem: -r ou -R, que permite remover diretórios e seus conteúdos recursivamente; -f, que força a remoção sem confirmação ou mensagem de erro; e -v, que exibe mensagens na tela sobre as ações realizadas pelo comando. Um exemplo de uso do comando rm é remover um arquivo chamado arquivo_a_ser_removido: rm arquivo_a_ser_removido Este comando irá remover o arquivo arquivo_a_ser_removido e não exibirá nenhuma mensagem na tela. Observe que, ao usar o comando rm, não é possível desfazer a ação – portanto, é importante tomar cuidado ao usá-lo. 2.6 COMANDO PWD O comando pwd (print working directory) é utilizado para imprimir o caminho completo da pasta atual no sistema. A sintaxe é simples, sem a necessidade de parâmetros. Ao executar esse comando, o terminal irá mostrar o caminho absoluto da pasta atual. Por exemplo, se o usuário estiver na pasta /home/user/docs, o comando pwd retornará /home/user/docs. Esse comando é útil para verificar em que pasta o usuário se encontra no momento e também para construir caminhos absolutos a partir da pasta atual. TEMA 3 – COMANDOS DE GERENCIAMENTO DE PACOTES O gerenciamento de pacotes é uma das principais características do sistema operacional Linux. Trata-se de um dos aspectos mais importantes na administração de sistemas. O sistema de gerenciamento de pacotes permite que os usuários instalem, atualizem, removam e gerenciem facilmente os programas e bibliotecasinstalados no sistema. 13/03/2024, 01:47 UNINTER https://univirtus.uninter.com/ava/web/roa/ 10/16 Os pacotes no Ubuntu são arquivos .deb que contêm informações sobre a instalação, a configuração e as dependências de software. O gerenciador de pacotes do Ubuntu, o apt, é responsável por baixar e instalar os pacotes necessários para o sistema, além de garantir que as dependências sejam resolvidas corretamente. Além disso, o apt também permite que os usuários atualizem todo o sistema, ou apenas pacotes específicos, de maneira fácil e segura. 3.1 COMANDO APT A sintaxe básica é: apt [opções] [comando] [pacote1] [pacote2] ... Os principais parâmetros incluem: update: atualiza a lista de pacotes disponíveis; upgrade: atualiza os pacotes já instalados para sua versão mais recente; install: instala um pacote; remove: remove um pacote; list: descobre se o pacote está instalado ou não, e qual a sua versão; e search: procura por um pacote no repositório. Um exemplo de uso é: sudo apt update sudo apt install vlc Este exemplo atualiza a lista de pacotes disponíveis e instala o pacote vlc, referente ao VLC Player. É importante lembrar que o comando sudo é necessário para executar comandos como administrador. 3.2 COMANDO DPKG O comando dpkg é um gerenciador de pacotes para sistemas operacionais baseados em Debian, como o Ubuntu. É útil para instalar pacotes fora do repositório padrão do sistema. O próprio Google Chrome é um exemplo que precisa ser instalado dessa maneira. A sintaxe básica é: dpkg [opções] nome_do_pacote 13/03/2024, 01:47 UNINTER https://univirtus.uninter.com/ava/web/roa/ 11/16 Alguns dos principais parâmetros são: -i (instalar): instala um pacote específico; -r (remover): remove um pacote específico; -l (listar): lista todos os pacotes instalados; e -S (buscar): busca por um pacote específico. TEMA 4 – COMANDOS DE PROCESSOS Em um sistema operacional Linux, um processo é uma instância em execução de um programa ou aplicação. Cada processo tem a sua própria identificação única (PID), espaço de endereçamento virtual, informações de status e recursos alocados, como memória RAM e CPU. Quando um usuário executa um comando ou inicia um aplicativo, um novo processo é criado. Processos podem estar em background ou em foreground¸ termos usados para descrever a prioridade e a forma como os processos são executados em um sistema operacional Linux. Processos em foreground estão sendo executados atualmente, recebendo a entrada do teclado e saída de tela. Já os processos em background estão sendo executados em segundo plano, sem interação com o usuário. Processos em background são úteis para tarefas que precisam ser executadas, mas não precisam de atenção imediata, como downloads ou backup. Já um job é uma tarefa específica executada no terminal do Linux. Os jobs são basicamente processos executados no terminal, como a execução de um comando de background ou a suspensão de um processo. Os jobs são identificados por um número de job (JID). O usuário pode acessar o status dos jobs ativos, suspender ou retomar a execução usando os comandos de gerenciamento de jobs do shell. 4.1 COMANDO PS O comando ps no Linux é utilizado para exibir informações sobre processos ativos no sistema. A sintaxe básica do comando é: ps [OPÇÕES] Alguns dos principais parâmetros utilizados com o comando ps incluem: 13/03/2024, 01:47 UNINTER https://univirtus.uninter.com/ava/web/roa/ 12/16 -a: mostra todos os processos, incluindo aqueles de outros usuários; -e: mostra todos os processos, como o parâmetro -a; -f: exibe a árvore de processos; e -u: exibe informações sobre os processos de um determinado usuário. 4.2 COMANDO TOP O comando top no Linux é um utilitário para monitorar processos. Ele mostra uma lista interativa de processos que estão sendo executados no sistema, incluindo informações como CPU, memória, nome do processo e tempo de execução. Vejamos a sintaxe básica do comando: top [OPÇÕES] Alguns dos principais parâmetros do comando top são: -d: especifica a frequência de atualização da lista de processos; -p: especifica quais processos deseja-se visualizar; -u: especifica um usuário específico para exibir processos; e -h: mostra ajuda com informações sobre os parâmetros do comando. 4.3 COMANDO JOBS O comando jobs no Linux é usado para exibir a lista de jobs em segundo plano em uma sessão de terminal atual. Ele não apresenta parâmetros. A sua sintaxe é simplesmente jobs. Exemplo de uso: $ sleep 100 & $ jobs [1]+ Running sleep 100 & Neste exemplo, o comando sleep 100 & coloca o processo sleep em segundo plano, enquanto o comando jobs mostra que há um job em segundo plano, com o número 1, que está em execução. 4.4 COMANDOS FG E BG 13/03/2024, 01:47 UNINTER https://univirtus.uninter.com/ava/web/roa/ 13/16 Os comandos fg (foreground) e bg (background) são usados para controlar processos em execução no terminal do Linux. O comando fg é usado para trazer um processo em background para o foreground – ou seja, o processo passa a ser o principal em execução no terminal. Já o comando bg é usado para enviar um processo para background, quando o processo continua a ser executado, mas agora em segundo plano, permitindo que o usuário execute outros processos no terminal sem interromper o processo em background. 4.5 COMANDO KILL O comando kill do Linux é usado para encerrar ou interromper processos. A sintaxe básica desse comando é: kill [OPÇÕES] PID Onde PID é o número de identificação do processo que se deseja encerrar ou interromper. Alguns dos principais parâmetros utilizados com o comando kill são: -l: lista os sinais que podem ser enviados para os processos; -s: envia o sinal SIG para o processo; e -9: envia o sinal de interrupção SIGKILL, que é usado para forçar o encerramento de um processo. Um exemplo de uso do comando kill é: kill -9 1456 Neste exemplo, o comando envia o sinal SIGKILL (9) para o processo com PID 1456, forçando o seu encerramento. TEMA 5 – COMANDOS DE ACESSO E PERMISSÕES As permissões de acesso no Linux são uma forma de controlar quem pode acessar arquivos e diretórios em um sistema de arquivos Linux. Isso permite que os administradores de sistemas atuem como gerentes de segurança de arquivos, protegendo arquivos sensíveis e concedendo acesso apenas a usuários confiáveis. 13/03/2024, 01:47 UNINTER https://univirtus.uninter.com/ava/web/roa/ 14/16 Em um sistema Linux, cada arquivo ou diretório é associado a um usuário proprietário e a um grupo de usuários. O proprietário, também chamado de dono (owner) do arquivo ou diretório, é o usuário responsável pelo arquivo ou diretório. Apenas ele pode realizar determinadas operações no arquivo ou diretório, como modificá-lo ou excluí-lo. O user ID (identificador de usuário) é um número único atribuído a cada usuário no sistema. Ele identifica de forma única cada usuário, sendo utilizado para controlar o acesso a arquivos e diretórios. Quando um arquivo ou diretório é criado, o usuário atualmente logado é definido como o proprietário e o user ID desse usuário é armazenado com o arquivo ou o diretório. No Linux, um grupo é uma coleção de usuários com acesso a um ou mais arquivos ou diretórios. Quando um arquivo ou diretório é criado, ele é atribuído a um grupo específico. O group ID (GID) é o número único que identifica o grupo ao qual o arquivo ou diretório pertence. O GID pode ser usado para conceder ou restringir o acesso ao arquivo ou diretório para os usuários que fazem parte do grupo. Por exemplo, se um arquivo pertencer a um grupo "projeto", os usuários que fazem parte desse grupo podem receber permissões de leitura, escrita ou execução para esse arquivo, dependendo das permissões definidas. 5.1 TIPOS DE PERMISSÕES DE ACESSO Existem três tipos de permissões de acesso para arquivos e diretórios: leitura, escrita e execução. A permissão de leitura (r - read) permite que o arquivo ou diretório seja lido pelo usuário.Em diretórios, permite listar conteúdo com o comando ls, por exemplo. A permissão de escrita (w - write) permite que o arquivo ou diretório seja modificado pelo usuário. Em diretórios, podemos gravar arquivos dentro dele. Ainda, um arquivo ou diretório só pode ser apagado se tiver permissão de escrita. A permissão de execução (x - execute) permite que o arquivo seja executado como um programa. Permite que um diretório seja acessado através do comando cd. Essas permissões são sempre atribuídas a três entidades diferentes: dono, grupo e outros. Cada entidade pode ter permissões de leitura, escrita e execução diferentes para o mesmo arquivo ou diretório. Vejamos um exemplo de permissões em um arquivo: 13/03/2024, 01:47 UNINTER https://univirtus.uninter.com/ava/web/roa/ 15/16 -rwxr-xr-- vinicius users nomeArquivo 1° caractere: define o tipo do arquivo (um "d" é um diretório; um "l“, um link a um arquivo no sistema; um "-" é um arquivo comum). (2-4)° caractere: permissões do dono do arquivo (vinicius). (5-7)° caractere: permissões do grupo do arquivo (users). (8-10)° caractere: permissões de outros usuários ao arquivo. 5.2 O ROOT (SUPERUSUÁRIO) O root é o usuário administrador no sistema Linux. Ele tem permissões totais sobre o sistema, incluindo acesso a todos os arquivos e diretórios, bem como a capacidade de executar comandos com privilégios elevados. Isso significa que o root pode fazer mudanças significativas no sistema, incluindo instalação de software, configuração de serviços e gerenciamento de usuários. É importante que o uso da conta root seja feito com precaução, pois uma ação mal intencionada ou equivocada pode causar problemas graves no sistema. É recomendável que o usuário root seja utilizado somente em situações específicas e que a maioria das tarefas sejam realizadas por outro usuário com permissões restritas. 5.3 COMANDO CHMOD O chmod é um comando utilizado para mudar as permissões de acesso de um arquivo ou diretório. A sintaxe geral para o comando chmod é: chmod [OPÇÕES] MODO ARQUIVO/DIRETÓRIO O quadro apresenta a nomenclatura utilizada nesse comando. Quadro 1 – Comando chmod Caractere Significado Caractere Significado u Usuário r Leitura g Grupo w Escrita o Outros x Execução 13/03/2024, 01:47 UNINTER https://univirtus.uninter.com/ava/web/roa/ 16/16 a Todos + Adiciona permissão - Remove permissão Exemplo de uso: para dar permissões de leitura e escrita para o dono e o grupo, e apenas permissões de leitura para outros usuários em um arquivo chamado arquivo.txt, você pode usar o seguinte comando: chmod u+rw,g+rw,o+r arquivo.txt FINALIZANDO O terminal do Linux é uma ferramenta essencial para o gerenciamento do sistema operacional. Ele permite aos usuários controlar o sistema através de comandos, oferecendo uma ampla gama de opções, como gerenciamento de arquivos e diretórios, instalação e gerenciamento de pacotes, gerenciamento de processos e gerenciamento de permissões de acesso. É importante que qualquer usuário de Linux saiba utilizar o terminal, pois ele é uma ferramenta poderosa e flexível para resolver problemas, automatizar tarefas e aprimorar a sua eficiência. 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 1/19 FUNDAMENTOS DE DESIGN DE SISTEMAS AULA 4 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 2/19 Prof. Winston Fung CONVERSA INICIAL No processo de desenvolvimento de um sistema ou aplicativo, existe uma estrutura fundamental que orienta as decisões sobre tecnologias, desempenho, escalabilidade, interoperabilidade, compatibilidade e desempenho – essa é a Arquitetura de Software. Ela fornece o esquema essencial e os princípios de design que não apenas definem a organização do sistema, mas também ditam como ele vai evoluir ao longo do tempo. Compreender a Arquitetura de Software é, portanto, uma peça- chave para o desenvolvimento eficaz e a longevidade dos sistemas de software. Vamos conhecer essas definições e algumas arquiteturas de sistemas de informações. TEMA 1 – ARQUITETURA DE SOFTWARE No cenário em constante evolução da tecnologia, o desenvolvimento de sistemas e aplicativos tornou-se uma tarefa complexa e desafiadora. Com sistemas tornando-se cada vez mais complexos, surge a necessidade de se adotar uma estrutura robusta que garanta a definição adequada de tecnologias, desempenho, escalabilidade, interoperabilidade, compatibilidade e desempenho – a Arquitetura de Software. Essa arquitetura busca orientar a concepção de um sistema de software estruturado, levando em consideração as necessidades do cliente e as tecnologias associadas. A ideia é que o sucesso do desenvolvimento de um sistema dependa de uma documentação bem definida de todos os seus aspectos, facilitando a comunicação entre a equipe de desenvolvimento e garantindo que a aplicação atenda aos padrões necessários para funcionar de forma eficaz. 1.1 O QUE É UM PADRÃO NA ARQUITETURA DE SOFTWARE? 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 3/19 Dentro da Arquitetura de Software, um padrão arquitetural é o elemento responsável por orientar uma visão alinhada aos negócios. Esse padrão serve como uma bússola, direcionando as decisões relacionadas ao projeto de software, definindo suas utilidades, linguagens, tecnologias e o relacionamento entre os subsistemas na construção de soluções para a aplicação. 1.2 O SURGIMENTO DA ARQUITETURA DE SOFTWARE A discussão sobre estruturas sistêmicas começou no final dos anos 1960, quando cientistas começaram a debater formas de estruturar um sistema antes do seu desenvolvimento. Contudo, a Arquitetura de Software só ganhou um panorama mais formal e reconhecido na década de 1990, com a publicação do livro Software architecture: perspectives on an emerging discipline, por Mary Shaw e David Garlan, da Carnegie Mellon University. Nele, Shaw e Garlan apresentam várias perspectivas sobre a arquitetura de software, destacando sua importância na coordenação de grandes equipes de desenvolvimento e no gerenciamento de complexidades sistêmicas. Além disso, a Arquitetura de Software tem desempenhado um papel cada vez mais crucial na definição de padrões e melhores práticas na engenharia de software. A norma ISO/IEC/IEEE 42010:2011, por exemplo, foi estabelecida com o objetivo de definir padrões para a criação, análise e descrição de arquiteturas de software. Essa norma representa um marco significativo na evolução da Arquitetura de Software, demonstrando seu reconhecimento e valor dentro da comunidade de engenharia de software. A evolução do campo da Arquitetura de Software também foi moldada pela rápida evolução da tecnologia. Por exemplo, a transição para a computação em nuvem no século XXI tem tido grandes implicações para a Arquitetura de Software, exigindo novas abordagens e padrões para o design e a gestão de sistemas de software distribuídos. Enquanto a Arquitetura de Software pode ter começado como uma maneira de gerenciar a complexidade e coordenar equipes de desenvolvimento, ela se tornou uma disciplina, com um corpo de conhecimento, padrões e práticas que continuam a evoluir para atender às demandas de um cenário tecnológico em constante mudança. 1.3 O PROFISSIONAL EM ARQUITETURA DE SOFTWARE 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 4/19 O papel do profissional em Arquitetura de Software vai além de meramente programar. Esse profissional deve oferecer soluções para corporações por meio do desenvolvimento de sistemas de tecnologia da informação que melhorem o desempenho das empresas. Para isso, é necessário compreender os negócios da corporação, ter uma postura colaborativa e ter conhecimento em diversas tecnologias, serviços, normas, legislações, cloud computing e muito mais. As habilidades desejadas de um Arquiteto de Software incluem: Conhecimento do domínio e tecnologias relevantes; Compreensãode questões técnicas para o desenvolvimento de sistemas; Conhecimento de técnicas de levantamento de requisitos e de métodos de modelagem e desenvolvimento de sistemas; Entendimento das estratégias de negócios das empresas; Conhecimento de processos, estratégias e produtos das empresas concorrentes; Capacidade de analisar, compreender, propor e criar formas inovadoras de negócios e soluções computacionais. Ao dominar essas habilidades, o Arquiteto de Software torna-se um profissional indispensável no desenvolvimento de soluções tecnológicas que atendam às demandas do mercado e impulsionem o crescimento dos negócios. TEMA 2 – ESTILO ARQUITETURAL O estilo arquitetural é uma maneira de se pensar sobre a organização e o design de um sistema de software. Ele molda a maneira como vemos o sistema como um todo, permitindo a definição clara de como os componentes do sistema estão organizados e interagem entre si. O estilo arquitetural é essencial para descrever a estrutura macroscópica de um sistema de software e pode influenciar fatores como eficiência, flexibilidade, segurança e usabilidade do sistema. O estilo arquitetural serve para caracterizar a arquitetura de software de um sistema, possibilitando a 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 5/19 Identificação de componentes: o arquiteto identifica quais são os principais elementos que têm funcionalidades bem definidas, como um componente de cadastro de informações de usuários e um componente de autenticação de usuários em uma aplicação web; Identificação de mecanismo de interação: a comunicação entre objetos por meio de troca de mensagens constitui uma forma por meio da qual os componentes de software interagem entre si; Identificação de propriedades: o arquiteto pode analisar as propriedades oferecidas por cada estilo baseado na organização dos componentes e nos mecanismos de interação. Por exemplo, considere a arquitetura de um aplicativo web. Podemos identificar vários componentes principais: um componente de interface do usuário, um componente de gerenciamento de sessão, um componente de banco de dados etc. Cada um desses componentes tem um papel bem definido – o componente de interface do usuário é responsável por interagir com o usuário, o componente de gerenciamento de sessão é responsável por controlar o acesso do usuário ao sistema, e o componente de banco de dados é responsável por armazenar e recuperar dados. A maneira como esses componentes interagem é um aspecto crucial do estilo arquitetural. Em uma arquitetura de três camadas, por exemplo, o componente de interface do usuário interage com o componente de gerenciamento de sessão, que, por sua vez, interage com o componente de banco de dados. Essa estrutura permite uma separação clara de responsabilidades e facilita a manutenção e a evolução do sistema. 2.1 POR QUE O ESTILO ARQUITETURAL É IMPORTANTE? À medida que os sistemas de software se tornam mais complexos, a necessidade de níveis mais altos de abstração se torna cada vez mais crucial. O estilo arquitetural fornece essa abstração, ajudando os envolvidos no projeto a entender a estrutura geral do sistema e a se comunicar efetivamente sobre ela. Por exemplo, em um projeto de grande escala, pode ser útil utilizar um estilo arquitetural baseado em microsserviços. Isso permite que diferentes equipes trabalhem em diferentes serviços, cada um com sua própria base de código e estrutura de dados, o que pode aumentar a produtividade e facilitar a manutenção do sistema. 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 6/19 2.2 VANTAGENS DO ESTILO ARQUITETURAL A adoção de um estilo arquitetural apropriado traz várias vantagens. Ele fornece suporte para atributos de qualidade, como desempenho, segurança e confiabilidade, ajudando a garantir que o sistema atenda a seus requisitos não funcionais. Além disso, um estilo arquitetural bem definido facilita a diferenciação entre diferentes arquiteturas, tornando mais fácil para as partes interessadas entenderem as características únicas de cada sistema. Além disso, um bom estilo arquitetural pode reduzir o esforço necessário para entender e manter o projeto, já que proporciona uma visão clara da organização do sistema. Ele também pode facilitar o reuso de arquitetura e conhecimento em novos projetos, acelerando o desenvolvimento e reduzindo o risco de erros. Destacam-se as seguintes vantagens: Suporte a atributos de qualidade (ou requisitos não funcionais); Diferenciação entre arquiteturas; Menos esforço para entender o projeto; Reuso de arquitetura e conhecimento em novos projetos; Suporte ao planejamento e a gerência da manutenção e integridade da solução. O estilo arquitetural fornece suporte para o planejamento e a gerência da manutenção do sistema, ajudando a garantir a integridade da solução ao longo do tempo. Por exemplo, se um sistema é projetado com um estilo arquitetural baseado em componentes, é mais fácil planejar e gerenciar atualizações e melhorias para cada componente individualmente, em vez de ter que atualizar todo o sistema de uma vez. Dessa forma, o estilo arquitetural é uma ferramenta crucial para projetar, implementar e manter sistemas de software eficientes e eficazes. Ele permite uma compreensão clara da estrutura geral do sistema, facilita a comunicação entre as partes interessadas e ajuda a garantir que o sistema atenda às suas necessidades e requisitos. TEMA 3 – DOCUMENTAÇÃO DA ARQUITETURA DE SOFTWARE 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 7/19 A documentação da arquitetura de software é um elemento crucial do desenvolvimento de sistemas, atuando como um registro duradouro das decisões e estruturas que moldam um sistema de software. Como o Software Engineering Institute da Carnegie Mellon University observa, a documentação da arquitetura de software "fala pelo arquiteto, hoje, amanhã e daqui a 20 anos" (“Software architecture documentation speak for the architect, today, tomorrow and 20 Years from now”). Essa documentação é o elo entre a concepção do sistema e sua implementação, manutenção e evolução. Dessa forma, a documentação de software é uma parte vital de qualquer projeto de desenvolvimento de software. Ela serve como um mapa, orientando os desenvolvedores e ajudando- os a entender a estrutura, as funções e os processos do software. Para quem está iniciando os estudos, a documentação pode parecer um detalhe secundário em comparação ao próprio código. No entanto, é preciso enfatizar que a documentação de software é tão crucial quanto o código. É por meio dela que se descreve o que o software faz, como ele o faz e por que faz daquela forma, permitindo que outras pessoas entendam e trabalhem com o software de maneira mais eficaz. Com frequência, ocorrem situações em que as arquiteturas de software são criadas sem uma documentação efetiva, resultando em uma comunicação inadequada. Isso significa que os desenvolvedores e outros envolvidos no sistema não têm acesso a uma representação adequada da arquitetura. Na documentação, destaca-se a criação de documentos que: Definem as atividades que serão realizadas; São os primeiros artefatos a agregar qualidade; São os melhores artefatos nas primeiras fases do desenvolvimento; São elementos-chave para a posterior manutenção do sistema. A documentação de software é tão importante que existe uma norma internacional dedicada a ela, a ISO/IEC/IEEE 42010:2011. Essa norma define um conjunto de diretrizes sobre como a documentação de software deve ser criada, o que deve incluir e como deve ser organizada, ajudando a equipe de desenvolvimento a criar documentação de alta qualidade que possa atender às necessidades de uma variedade de partes interessadas. 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 8/19 No entanto, apesar de sua importância, a documentação de software ainda é frequentemente negligenciada ou tratada como umincômodo. Essa é uma mentalidade que deve ser desafiada. Uma boa documentação de software não apenas facilita o trabalho dos desenvolvedores, mas também permite que o software seja mantido e evoluído ao longo do tempo de uma forma sustentável. Além disso, ela pode ser uma ferramenta valiosa para a comunicação entre diferentes partes interessadas, desde gerentes de projeto e usuários até outros desenvolvedores e membros da equipe. Embora a documentação de software possa parecer um tópico árido e teórico, é na verdade uma parte fundamental do desenvolvimento de software e uma habilidade que vale a pena aprender e dominar. Afinal, um código bem escrito pode ser uma obra de arte, mas sem uma documentação adequada, ele pode ser tão inacessível e inútil quanto uma obra de arte trancada em um cofre. 3.1 PRINCÍPIOS DE UMA BOA DOCUMENTAÇÃO DE SOFTWARE A documentação eficaz da arquitetura de software é uma tarefa complexa e desafiadora. É preciso equilibrar o nível de detalhes, clareza, organização e atualização da documentação. Aqui estão alguns princípios fundamentais para a criação de documentação de arquitetura de software eficaz: Documentar o ponto de vista do usuário: a documentação deve ser escrita tendo em mente as pessoas que vão utilizá-la. Elas podem ser desenvolvedores, gerentes de projeto, analistas de qualidade ou partes interessadas do negócio. É importante usar uma linguagem clara, evitar jargões desnecessários e fornecer informações relevantes para cada tipo de usuário; Evitar ambiguidades: a documentação deve ser precisa e inequívoca. Evitar o uso de termos vagos ou confusos e garantir que os conceitos sejam claramente definidos e consistentemente usados em toda a documentação; Usar um modelo ou template: a documentação deve ser organizada de maneira padrão para facilitar a navegação e a compreensão. Um modelo bem projetado pode ajudar a garantir que todas as áreas importantes sejam cobertas e que a informação seja apresentada de forma clara e coerente; Evitar repetições desnecessárias: embora alguma redundância possa ser útil para fins de clareza, a repetição desnecessária pode tornar a documentação confusa e difícil de navegar. No entanto, em alguns casos, a redundância pode ser aceitável, por exemplo, quando é necessário entender o contexto ou a relação entre as informações; 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 9/19 Documentar as razões para as decisões tomadas: é importante registrar não apenas as decisões tomadas, mas também as razões por trás delas. Isso pode incluir discussões sobre alternativas consideradas e rejeitadas, bem como a lógica por trás da decisão final; Manter a documentação atualizada: a documentação deve refletir o sistema como ele é, não como era. Isso significa que a documentação deve ser atualizada sempre que o sistema for modificado; Revisar a documentação criada: a revisão da documentação por pares pode ajudar a garantir que ela seja clara, precisa e completa; Tornar a documentação acessível a todos os participantes do projeto: todos os que estão envolvidos no projeto devem ter acesso à documentação. Isso inclui não apenas a equipe de desenvolvimento, mas também os interessados, como os gerentes de projeto, cliente e os usuários finais. 3.2 ISO/IEC/IEEE 42010:2011 A norma ISO/IEC/IEEE 42010:2011, também conhecida como "Sistemas e engenharia de software – Arquitetura de descrição", desempenha um papel crítico no campo da Arquitetura de Software. Ela estabelece um padrão para a descrição da arquitetura de sistemas e softwares, proporcionando um modelo conceitual que permite aos arquitetos de software descrever e comunicar efetivamente a arquitetura de um sistema. Vale destacar que a norma não se limita a especificar um formato ou estrutura específica para uma descrição da arquitetura. Em vez disso, ela define um conjunto de conceitos e relações que formam a base para tais descrições. Isso dá aos arquitetos de software a liberdade de adaptar a norma às suas necessidades específicas, enquanto garante que a descrição da arquitetura seja consistente, compreensível e útil para todas as partes interessadas. Figura 1 – Mapeamento sobre descrição de arquitetura de software com base na ISSO/IEC/IEEE 42010:2011 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 10/19 Fonte: ISO/IEC/IEEE 42010:2011. A ISO/IEC/IEEE 42010:2011 baseia-se em várias visões para documentar a de um sistema. As "visões" são como diferentes lentes por meio das quais podemos examinar a arquitetura de um sistema, cada uma focada em um aspecto específico. Por exemplo, a visão lógica trata da funcionalidade do sistema, a visão de desenvolvimento foca na integração de componentes, a visão de processo trata da gestão da implementação e a visão física lida com funcionalidades para o usuário final. Ao utilizar essas visões, é possível validar o design da arquitetura em relação aos casos de uso do sistema. Isso garante que a arquitetura seja capaz de suportar todos os requisitos do sistema, tanto funcionais quanto não funcionais. Em um cenário de futuro, em que a arquitetura de software deve lidar com desafios crescentes, como computação em nuvem, microsserviços e inteligência artificial, a norma ISO/IEC/IEEE 42010:2011 continua sendo uma ferramenta valiosa. Ao garantir uma documentação clara, consistente e eficaz da arquitetura de software, ela ajuda a garantir que os sistemas sejam construídos de maneira eficiente e eficaz, prontos para enfrentar os desafios do futuro. 3.3 AS VIEWS DA ISO/IEC/IEEE 42010:2011 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 11/19 A norma ISO/IEC/IEEE 42010:2011 nos introduz a quatro tipos distintos de 'views': Lógica, Desenvolvimento, Processo e Física. Cada uma dessas 'views' enfoca um aspecto específico do sistema, permitindo aos arquitetos, desenvolvedores e outras partes interessadas entender diferentes facetas do sistema. Figura 2 – Representação das visões de arquitetura de software segundo a ISO/IEC/IEEE 42010:2011 Crédito: Winston Sem Lun Fung/Freepik. Visão Lógica: essa visão concentra-se na funcionalidade do sistema. Ela descreve os principais elementos funcionais do sistema, suas responsabilidades, propriedades e interfaces; Visão de Desenvolvimento: essa visão aborda a estrutura do software, incluindo seus componentes e subcomponentes. Isso é particularmente útil para os desenvolvedores que estão construindo e integrando o software; Visão do Processo: essa visão trata do aspecto dinâmico do sistema, incluindo o processamento de tarefas, concorrência e sincronização; Visão Física: essa visão descreve a infraestrutura necessária para o sistema, incluindo hardware, software de sistema e redes. Essas visões, juntas, fornecem uma visão completa e compreensiva do sistema e sua arquitetura. Cada uma delas é relevante para diferentes partes interessadas e serve a diferentes propósitos. A 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 12/19 ISO/IEC/IEEE 42010:2011 fornece um padrão útil e eficaz para a documentação da arquitetura de software. TEMA 4 – OS DIFERENTES MODELOS ARQUITETURAIS Os modelos arquiteturais de software são uma forma de organizar os elementos funcionais de um sistema de software. Eles ajudam a definir a estrutura geral de um sistema, especificando como as diferentes partes de um sistema vão interagir. Existem vários modelos arquiteturais que são comumente usados, e a escolha de um modelo depende das necessidades específicas do sistema em questão. 4.1 ARQUITETURA EM CAMADAS (LAYERED PATTERN) A arquitetura em camadas organiza um sistema em um conjunto de camadas, cada uma das quais fornece serviços para a camada acima dela. Esse modelo de arquitetura é especialmente útil para o desenvolvimento de sistemas complexos, pois permite que diferentes partes do sistema sejam desenvolvidas e atualizadas de forma independente. Figura 3 – Exemplo de Arquiteturaem camadas Fonte: Fung, 2023. Pense na arquitetura em camadas como um bolo de vários andares. Cada andar do bolo é como uma camada no seu software. 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 13/19 Cada camada tem uma responsabilidade específica, e cada uma se comunica com as camadas acima e abaixo dela. Por exemplo, em um aplicativo de e-commerce: a camada inferior (como a base do bolo) pode ser a camada de dados, que lida com tudo relacionado ao armazenamento e recuperação de informações do banco de dados. O próximo andar do bolo é a camada de negócios, que processa as regras do e-commerce, como calcular descontos ou verificar a disponibilidade de estoque. O andar superior do bolo é a camada de apresentação, que lida com a interação com o usuário – tudo o que o usuário vê e com o que interage no site. 4.2 ARQUITETURA CLIENTE-SERVIDOR (CLIENT-SERVER PATTERN) A arquitetura cliente-servidor é um modelo em que um servidor fornece serviços, e um ou mais clientes consomem esses serviços. O servidor mantém e gerencia a maior parte dos recursos de dados e funções de negócios, enquanto o cliente é responsável por solicitar esses serviços e apresentar os resultados ao usuário. Figura 4 – Exemplo da arquitetura cliente-servidor Fonte: Fung, 2023. A arquitetura cliente-servidor é como um restaurante. O cliente (você, pedindo comida) faz um pedido (solicita um serviço), e o servidor (o garçom) atende ao pedido e traz a comida (o serviço). No 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 14/19 mundo dos softwares, o "cliente" é o seu computador ou aplicativo, e o "servidor" é o sistema remoto que está fornecendo os dados ou serviços que o cliente solicitou. Por exemplo, quando você acessa seu e-mail por meio de um aplicativo, seu aplicativo (o cliente) solicita ao servidor de e-mail (o servidor) para baixar suas novas mensagens. 4.3 ARQUITETURA MODEL-VIEW-CONTROLLER PATTERN (MVC) O padrão de arquitetura MVC divide uma aplicação em três partes interconectadas. Isso é feito para separar representações internas da informação do sistema das maneiras como a informação é apresentada e aceita do usuário. Figura 5 – Exemplo da arquitetura MVC Fonte: Fung, 2023. No mundo do software: O "Modelo" é onde os dados e as regras de negócios são armazenados; A "Visão" é como os dados são apresentados – é a interface do usuário; O "Controlador" é o que conecta a Visão e o Modelo. Ele atualiza a Visão quando o Modelo muda e atualiza o Modelo quando o usuário interage com a Visão. 4.4 ARQUITETURA DE MICROSSERVIÇOS (MICROSERVICES PATTERN) 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 15/19 A arquitetura de microsserviços é um estilo de arquitetura que estrutura uma aplicação como uma coleção de serviços que são: Altamente manuteníveis e testáveis; Livremente acoplados, ou seja, cada serviço pode ser atualizado independentemente dos outros; Independentes, o que permite que cada serviço seja implantado independentemente; Capazes de serem desenvolvidos e implantados por pequenas equipes. Figura 2 – Exemplo de arquitetura de microsserviços Fonte: Fung, 2023. A arquitetura de microsserviços é como um conjunto de blocos de construção de Lego. Cada bloco (microsserviço) tem uma função específica e pode ser usado para construir várias estruturas diferentes (aplicativos). Se você quiser mudar ou atualizar algo, você pode simplesmente substituir ou mudar alguns blocos, sem ter que desmontar toda a estrutura. Um exemplo de uso de microsserviços pode ser encontrado na Netflix. Eles utilizam essa arquitetura para suportar a escalabilidade e a continuidade de seus serviços de streaming. Cada parte do serviço da Netflix (recomendação de filmes, gerenciamento de contas de usuário, streaming de vídeos) é gerenciado por um microsserviço independente. Isso significa que, mesmo se uma parte do sistema falhar, as outras partes do sistema podem continuar funcionando normalmente. TEMA 5 – O FUTURO DA ARQUITETURA DE SOFTWARE 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 16/19 Olhando para o futuro da arquitetura de software, podemos prever uma profunda influência de tecnologias emergentes, como computação em nuvem, inteligência artificial (IA) e microsserviços. Esses avanços estão remodelando a maneira como construímos e interagimos com os sistemas de software. 5.1 COMPUTAÇÃO EM NUVEM A computação em nuvem é como uma biblioteca gigante que contém todos os tipos de livros (ou nesse caso, dados) que você pode acessar a qualquer momento, desde que tenha uma conexão com a Internet. Isso remove a necessidade de ter um armário de livros enorme (um servidor físico) em casa. Assim como a biblioteca, a computação em nuvem permite que as empresas movam suas operações para a "nuvem" – servidores virtuais hospedados na Internet. Isso significa que os sistemas não estão mais restritos ao ambiente de uma empresa. Em vez disso, eles podem ser acessados de qualquer lugar, a qualquer momento. Por exemplo, um software de gerenciamento de projetos baseado em nuvem permite que as equipes colaborem em projetos de qualquer lugar do mundo, em vez de estarem confinadas a um escritório físico. 5.2 INTELIGÊNCIA ARTIFICIAL A inteligência artificial é como um supercomputador que aprende com as experiências e é capaz de tomar decisões informadas com base nesse aprendizado. No mundo dos softwares, a IA pode ser usada para automatizar tarefas complexas, analisar grandes volumes de dados e melhorar a eficiência operacional. Por exemplo, os chatbots de atendimento ao cliente, alimentados por IA, podem responder automaticamente às perguntas frequentes dos clientes, liberando os representantes humanos para lidar com consultas mais complexas. A IA também está sendo usada para prever tendências e comportamentos do consumidor, ajudando as empresas a tomarem decisões mais informadas. 5.3 MICROSSERVIÇOS 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 17/19 Os microsserviços são como uma equipe de especialistas, cada um focado em um aspecto específico de um projeto. Em vez de ter um único time tentando fazer tudo, temos vários times pequenos (microsserviços), cada um lidando com uma parte do projeto. No mundo do software, isso significa que um aplicativo é dividido em pequenos serviços independentes que podem ser desenvolvidos, implantados e escalados individualmente. Isso facilita a manutenção e atualização do sistema, pois um problema em um serviço não afeta os outros. Por exemplo, um aplicativo de comércio eletrônico pode ter um microsserviço para lidar com pedidos de clientes, outro para gerenciar o inventário e outro para processar pagamentos. Cada microsserviço pode ser desenvolvido e atualizado independentemente, melhorando a eficiência e a produtividade. O futuro da arquitetura de software é promissor e cheio de possibilidades infinitas. À medida que continuamos a inovar e avançar, é vital que os futuros engenheiros de software entendam essas tendências emergentes e aprendam a adaptá-las às suas práticas de desenvolvimento. Essa é a chave para criar soluções de software robustas, escaláveis e eficientes que atendam às demandas em constante mudança do mundo digital. FINALIZANDO Nesta etapa, analisamos os diferentes aspectos da arquitetura de software, desde a compreensão dos estilos arquiteturais, a importância de uma documentação adequada e a exploração dos modelos arquiteturais predominantes até a consideração das tendências futuras. O estudo ampliou a nossa percepção de como a arquitetura de software pode ser efetivamente utilizada para impulsionar a qualidade e a eficiência do desenvolvimento de sistemas. Visitamos a importância dos estilos arquiteturais na estruturação do sistema, a maneira como os componentes são identificados e interagem entre si e as propriedades que caracterizam cada estilo. Esclarecemos também a importância da documentaçãoda arquitetura de software, em que os princípios de uma boa documentação foram destacados, bem como a explanação da norma ISO/IEC/IEEE 42010:2011, que orienta a estruturação da documentação de arquitetura. 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 18/19 Aprofundamos nossa compreensão dos diferentes modelos arquiteturais, com ênfase nos padrões arquiteturais em camadas, cliente-servidor, MVC e microsserviços. Cada um desses modelos, conforme explicado, tem sua própria força e é aplicável a diferentes contextos de sistemas. Olhamos também para o futuro da arquitetura de software, com destaque para o papel da computação em nuvem, inteligência artificial e microsserviços no desenvolvimento de sistemas modernos. Essas tecnologias emergentes estão proporcionando novas oportunidades para otimizar o desenvolvimento de software e enfrentar desafios complexos. Assim, concluímos que o desenvolvimento de sistemas estruturados com uma arquitetura claramente documentada e disponibilizada para todos os participantes do projeto, aliado ao uso adequado de tecnologias modernas e emergentes, é essencial para minimizar os riscos associados ao desenvolvimento e à manutenção do sistema. Além disso, esse processo habilita o melhor aproveitamento das tecnologias, o compartilhamento efetivo de conhecimento entre a equipe e, finalmente, a produção de sistemas de software robustos e eficientes que atendam às necessidades do usuário e às demandas do mercado em constante mudança. REFERÊNCIAS FOWLER, M. Padrões de arquitetura de aplicações corporativas. Porto Alegre: Bookman, 2007. FREEMAN, E.; FREEMAN, E. Use a cabeça! Padrões e projetos. 2. ed. Rio de Janeiro: Alta Books, 2009. GAMMA, E. et al. Padrões de projetos: soluções reutilizáveis de software orientados a objetos. Porto Alegre: Bookman, 2007. NEIL, T. Padrões de design para aplicativos móveis. São Paulo: Novatec, 2012. 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 19/19 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 1/27 FUNDAMENTOS DE DESIGN DE SISTEMAS AULA 5 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 2/27 Prof. Winston Fung CONVERSA INICIAL Vamos explorar os fundamentos do design de experiência do usuário (UX) e interface do usuário (UI). Durante esta etapa, iremos analisar conceitos-chave, como entrevistas, ideação, brainstorming e técnicas de criação, até chegarmos à etapa crucial da prototipação. Nosso objetivo é compreender a importância de atender às necessidades dos clientes, gerar ideias inovadoras e transformá-las em protótipos tangíveis. Essa experiência nos proporcionará o aprendizado necessário para desenvolver interfaces de sistemas eficazes e satisfatórias. TEMA 1 – O QUE É UX A tarefa de desenvolver um software é um empreendimento multidisciplinar, exigindo a colaboração de profissionais de várias áreas, como programadores, analistas de sistemas, especialistas em banco de dados e designers. Essa equipe precisa compreender e incorporar práticas fundamentais de design digital centrado no usuário em seu trabalho, garantindo que a experiência do usuário (UX), funcionalidade e usabilidade estejam na vanguarda do processo de desenvolvimento. A usabilidade em software não pode ser subestimada. O sistema criado deve ser mais do que apenas funcional; deve também proporcionar uma experiência agradável ao usuário. Por isso, é essencial abordar todo o processo de desenvolvimento com uma compreensão profunda do usuário, com o objetivo de oferecer experiências que atendam às expectativas na comunicação entre a empresa e o usuário final. Em outras palavras, o UX é fundamental para garantir uma interação adequada e eficaz com o sistema. Ao abordar o desenvolvimento de um sistema computacional, é vital ter uma perspectiva centrada no usuário. O design digital centrado no usuário e a garantia de usabilidade são aspectos essenciais para a criação de uma experiência de usuário positiva. 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 3/27 A importância de uma boa experiência do usuário (UX) em produtos e serviços, bem como uma experiência do usuário bem projetada, pode fazer a diferença entre um produto ou serviço bem- sucedido e um que é esquecido ou abandonado. Para ilustrar isso, considere o exemplo da Netflix. A Netflix é mais do que um serviço de streaming de filmes e séries; ela vende uma experiência de uso. Seu ambiente é prático e simples, com uma disposição intuitiva de opções e um design atraente que torna a utilização uma experiência agradável. Essa atenção cuidadosa à UX é uma parte significativa do que fez da Netflix uma líder global em streaming de entretenimento. Portanto, uma UX eficaz, intuitiva e agradável pode aumentar a satisfação do usuário, o engajamento e, em última análise, o sucesso do produto ou serviço. 1.1 CRIAÇÃO DA UX Don Norman, psicólogo cognitivo e arquiteto de experiência do usuário, é amplamente reconhecido como o criador do termo UX, cunhado durante sua passagem pela Apple na década de 1990. No seu influente livro "The Design of Everyday Things", lançado em 1988, Norman enfatiza a importância do desenvolvimento iterativo e de um relacionamento harmonioso entre usuário e produto. O objetivo central é que o design deve facilitar a interação do usuário com o produto, minimizando potenciais conflitos e complexidades. Nesse mesmo contexto, a Apple desempenhou um papel fundamental na materialização do conceito de UX, trazendo-o para o mundo concreto dos dispositivos e softwares. A empresa estabeleceu um padrão para a criação de ambientes de trabalho mais intuitivos e focados na experiência do usuário. Os primeiros computadores da Apple, apesar de revolucionários para a época, eram comparativamente difíceis de utilizar. No entanto, com o tempo, eles evoluíram para dispositivos mais práticos e esteticamente agradáveis. As telas ficaram maiores e o design mais elegante, levando em consideração a usabilidade e a estética em iguais medidas. Hoje, os dispositivos Apple, como o iMac e o MacBook, são conhecidos por suas telas amplas e limpas e um ambiente de trabalho quase sem cabos, proporcionando uma experiência completa para 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 4/27 o usuário. Essa atenção cuidadosa ao detalhe e à experiência do usuário é uma marca registrada da Apple e tem sido um fator-chave em seu sucesso contínuo. A evolução da Apple no campo da UX culminou na apresentação do iPhone em 2007. Steve Jobs, CEO da Apple na época, não apenas introduziu um novo dispositivo, mas uma experiência de usuário completa e única. O iPhone rapidamente se tornou um objeto de desejo, graças à sua funcionalidade robusta, design elegante e experiência de usuário imersiva. A interface do usuário (UI) do iPhone foi projetada para ser visualmente agradável e prática de usar. Com seus ícones distintos e interface tátil intuitiva, facilita o reconhecimento e a interação do usuário, estabelecendo um novo padrão para a experiência do usuário em dispositivos móveis. A jornada da Apple no desenvolvimento de uma UX excepcional demonstra a importância de centrar o design no usuário e a relevância da experiência do usuário no sucesso de um produto. 1.2 UX E UI Embora Experiência do Usuário (UX) e Interface do Usuário (UI) sejam conceitos intimamente relacionados e muitas vezes confundidos, eles têm diferenças fundamentais e se referem a diferentes aspectos do design de produtos. A UX abrange toda a experiência que o usuário tem ao interagir com um produto ou serviço. Isso vai além da experiência na tela e inclui todas as interações que o usuário tem com o produto, desde o processo de descoberta e aquisição do produto, até o suporte pós-venda. A UX visa aperfeiçoar a jornada do usuário, tornando-a mais eficiente, agradável e intuitiva. Uma boa UX éessencial para fidelizar e atrair novos clientes. Por outro lado, a UI se concentra especificamente na interface que o usuário interage ao usar um produto ou serviço. O trabalho de design de UI envolve a criação de interfaces agradáveis, intuitivas e fáceis de usar. A UI fornece os meios pelos quais o usuário interage com o produto, e uma UI bem projetada pode tornar essa interação mais eficiente e gratificante. Figura 1 – Principais diferenças entre UX e UI Design 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 5/27 Um exemplo disso seria um site de comércio eletrônico. A UI envolveria o design da página do produto, o carrinho de compras e o processo de finalização da compra. A UX, por outro lado, cobriria a facilidade com que os usuários podem encontrar o produto que estão procurando, a clareza das descrições dos produtos, a facilidade do processo de finalização da compra e a rapidez com que podem receber assistência se tiverem problemas. Apesar das suas diferenças, UX e UI são complementares e devem trabalhar em conjunto para fornecer uma experiência completa e integrada ao usuário. Ao desenvolver softwares e aplicativos, é essencial encontrar um equilíbrio entre as necessidades do usuário (UX) e as demandas do negócio, ao mesmo tempo que se oferece uma interface agradável e prática (UI). Ambos são fundamentais para criar um produto que não apenas atenda às necessidades do usuário, mas também ofereça uma experiência positiva e envolvente. 1.3 UX NOS SOFTWARES E APLICATIVOS 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 6/27 Ao desenvolver softwares e aplicativos, um desafio crucial é encontrar um ponto de equilíbrio entre as necessidades do usuário e as necessidades do negócio. É um processo de balanceamento que visa compreender e conectar o usuário ao produto ou serviço, levando em consideração tanto os requisitos do usuário quanto os impactos na empresa. Para alcançar essa harmonia, é crucial conhecer profundamente o usuário, incluindo suas motivações, frustrações e desejos. O objetivo não é apenas desenvolver um produto que seja utilizado, mas, sim, criar uma experiência positiva, motivadora e que gere satisfação naquele que irá usá-lo. Figura 2 – Diagrama de viabilidade, desejabilidade e capacidade técnica Fonte: Winston Sen Lun Fung, 2023. Ao tratar dessa questão, um modelo útil para considerar é o diagrama de viabilidade, desejabilidade e capacidade técnica. Este modelo divide o processo de design do produto em três componentes interconectados: 1. viabilidade de negócio: a solução deve ser sustentável para a empresa e permitir sua expansão e evolução. Isso inclui considerações financeiras, de mercado e estratégicas; 2. capacidade técnica: refere-se ao domínio tecnológico e ao conhecimento necessários para implementar a solução. Isso envolve o uso de tecnologias apropriadas, práticas de engenharia de software e capacidade de implementar e manter a solução; 3. desejabilidade: refere-se à capacidade da solução de atender às necessidades e desejos dos usuários. A solução deve ser desejável, fornecer valor e resolver um problema do usuário ou 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 7/27 melhorar sua experiência de alguma maneira. Vamos considerar o iPhone como exemplo novamente. Ele atingiu o equilíbrio entre viabilidade de negócio, capacidade técnica e desejabilidade. A Apple conseguiu criar um produto que é altamente desejável (com seu design elegante e funcionalidades inovadoras), tecnicamente viável (usando tecnologia de ponta) e viável para o negócio (gerando lucros significativos e solidificando a posição da Apple no mercado de smartphones). O objetivo é posicionar a solução no centro desses três círculos, onde a viabilidade de negócio, a capacidade técnica e a desejabilidade se cruzam. Isso resultará em um produto que não apenas atende às necessidades dos usuários, mas também é viável para o negócio e é tecnicamente sólido. Isso cria uma base sólida para o sucesso a longo prazo do produto e contribui para uma experiência agradável e eficaz. TEMA 2 – CONHECENDO SEU USUÁRIO O desenvolvimento de um software ou aplicativo de sucesso requer mais do que apenas habilidades técnicas e uma ideia inovadora. É necessário ter um profundo entendimento do usuário final, pois é para ele que o produto ou serviço é destinado. É crucial conhecer as motivações, frustrações e desejos dos clientes, bem como compreender como conectá-los ao produto ou serviço em desenvolvimento. A experiência vai além do simples uso do produto; é sobre a emoção e a satisfação que o usuário sente ao interagir com o produto ou serviço. Portanto, entendê-lo é uma etapa vital que pode determinar o sucesso ou o fracasso do projeto. 2.1 DIAGRAMA DA VIABILIDADE, DESEJABILIDADE E CAPACIDADE Ao planejar o desenvolvimento de um software ou aplicativo, devemos considerar três componentes cruciais: viabilidade: este aspecto se refere ao potencial de sustentabilidade do projeto. Um produto ou serviço deve não apenas ser financeiramente viável, mas também ter a capacidade de gerar receita contínua e permitir a evolução do produto no futuro. Por exemplo, um aplicativo de transporte como a Uber precisava ser financeiramente viável para ser lançado, mas também precisava ter um modelo de negócios sustentável para continuar a gerar receita e crescer; 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 8/27 capacidade técnica: este componente se refere à capacidade tecnológica de criar a solução dentro de um período especificado. Não se trata apenas da tecnologia atualmente disponível, mas também de quais soluções podem ser desenvolvidas para melhorar a experiência do cliente. Considerando novamente o exemplo da Uber, o aplicativo precisava não só de uma interface amigável, mas também de tecnologias como GPS e processamento de pagamentos integrados; desejabilidade: este é o aspecto que concentra todas as necessidades do usuário. A desejabilidade refere-se à forma como um produto ou serviço atende aos desejos e necessidades do usuário, tornando-o atraente para o público-alvo. Isso pode incluir tudo, desde a facilidade de uso até a estética do produto. A desejabilidade é frequentemente o que diferencia um produto bem-sucedido de um de fracasso. Um produto pode ser tecnicamente avançado e viável, mas se não for desejável para os usuários, não terá sucesso. O objetivo é encontrar o equilíbrio perfeito entre esses três componentes para criar uma solução que seja boa tanto para o negócio quanto para o usuário. Este é o ponto onde a solução ideal é encontrada. Para exemplificar, podemos considerar o Waze, um aplicativo popular de navegação. O Waze consegue equilibrar a viabilidade (um modelo de negócios sustentável), a capacidade técnica (uso de GPS e comunicação em tempo real) e a desejabilidade (usuários se beneficiam das informações de trânsito em tempo real e podem evitar congestionamentos). Ao entender e considerar a viabilidade, a capacidade técnica e a desejabilidade, conseguimos criar um produto que não só satisfaz as necessidades do usuário, mas também é sustentável e tecnicamente viável. Este equilíbrio é fundamental para o sucesso. 2.2 CONHECENDO O SEU USUÁRIO – ENTREVISTA Falar com o usuário é parte fundamental nas diversas etapas do desenvolvimento de um serviço ou produto. Identificar a real necessidade de uma pessoa ou grupo de pessoas é uma ferramenta para compreender o que pode ser alterado e melhorado no produto ou serviço. A entrevista permite compreender de fato o seu usuário e como ele se sente sobre certo tópico, assunto ou funcionalidade. É uma forma barata, simples e eficiente de obter retorno sobre uma etapa do projeto e pode ser repetida diversas vezes. Por meio dessa interação direta é possível obter insights valiosos para aprimorar o software e proporcionar uma experiência de uso mais satisfatória. 13/03/2024, 01:49 UNINTERhttps://univirtus.uninter.com/ava/web/roa/ 9/27 2.2.1 Como preparar a entrevista Para preparar uma entrevista eficaz, é necessário determinar o público-alvo, identificando as pessoas que utilizam o software em questão. É importante construir um roteiro de perguntas que seja abrangente e objetivo, abordando aspectos como a funcionalidade desejada, as dificuldades encontradas no uso de sistemas similares, as preferências do usuário em termos de interface e recursos, entre outros. É fundamental evitar enviesar as respostas do entrevistado, oferecendo um ambiente acolhedor e seguro para que ele se sinta à vontade para expressar suas opiniões e experiências. 2.2.2 O público Ao determinar o público para as entrevistas, é relevante considerar o perfil dos usuários do software em questão. Isso inclui características demográficas, nível de experiência técnica, preferências e hábitos de uso. Buscar a participação de especialistas na área pode trazer perspectivas complementares e insights valiosos para o processo de desenvolvimento. A diversidade de usuários entrevistados permite capturar uma ampla gama de necessidades e garantir que o software seja projetado levando em conta diferentes perspectivas. Na preparação da entrevista, é importante definir o público-alvo, que, neste caso, seriam pessoas que viajam com frequência. Podemos considerar diferentes perfis, como viajantes a negócios, famílias ou mochileiros, para obter uma visão abrangente das suas necessidades e desejos. 2.2.3 O roteiro O roteiro da entrevista desempenha um papel crucial na obtenção de informações relevantes sobre o software e a experiência de uso desejada. Ele deve ser elaborado com base nos objetivos da pesquisa de usuário, levando em consideração as questões-chave a serem abordadas. Durante a entrevista, é recomendado utilizar perguntas abertas, iniciadas com "como" e "por que", que estimulem o entrevistado a compartilhar suas experiências, opiniões e percepções. O roteiro também deve evitar perguntas que possam ser respondidas com simples "sim" ou "não", buscando obter respostas mais detalhadas e aprofundadas. No roteiro, é importante explorar aspectos como a utilidade do software para o usuário, os problemas enfrentados no uso de sistemas similares, as expectativas em relação à interface, recursos desejados, fluxo de trabalho ideal, entre outros. A partir dessas perguntas, é possível obter insights 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 10/27 sobre as funcionalidades que são mais valorizadas, os pontos de dor a serem resolvidos e as oportunidades de melhoria. Por exemplo, ao desenvolver um aplicativo de entrega de alimentos, o roteiro da entrevista pode incluir perguntas sobre a facilidade de uso do aplicativo, a eficiência na busca de restaurantes, a personalização de pedidos, as opções de pagamento e a satisfação geral com a experiência de entrega. Essas perguntas ajudam a entender as necessidades e preferências dos usuários, orientando o desenvolvimento do software de forma mais precisa e direcionada. 2.2.4 Comportamento O comportamento do entrevistador desempenha um papel crucial na obtenção de informações de qualidade durante a entrevista. É importante estabelecer uma conexão empática com o entrevistado, demonstrando interesse genuíno em compreender suas necessidades e experiências. O entrevistador deve criar um ambiente acolhedor, encorajando o entrevistado a compartilhar suas opiniões de forma aberta e honesta. Um exemplo de prática desejável é fazer perguntas claras e objetivas, permitindo que o entrevistado se expresse livremente. Por exemplo, ao entrevistar usuários de um aplicativo de viagens, o entrevistador pode perguntar: "Como você se sente ao navegar pelo aplicativo em busca de destinos de viagem? Quais recursos você considera mais importantes ao planejar uma viagem?". Além disso, o entrevistador deve adotar uma postura de escuta ativa, prestando atenção às respostas do entrevistado e fazendo perguntas adicionais para aprofundar a compreensão. Isso demonstra interesse genuíno pelo ponto de vista do entrevistado e cria um ambiente de confiança. Outro exemplo de prática recomendada é evitar influenciar as respostas do entrevistado. O entrevistador deve evitar fazer afirmações que possam direcionar as respostas do entrevistado ou expressar opiniões pessoais. Em vez disso, é importante permitir que o entrevistado compartilhe suas experiências e perspectivas de forma autêntica. Ao seguir essas diretrizes durante o processo de entrevista, é possível obter informações valiosas sobre o software, as necessidades dos usuários e suas expectativas em relação à experiência de uso. Esses insights fornecem uma base sólida para o desenvolvimento de um software que atenda de forma eficaz e satisfatória, resultando em uma experiência positiva e engajadora. 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 11/27 TEMA 3 – IDEAÇÃO A ideação é uma etapa crucial no processo de desenvolvimento de produtos e serviços. Ela se refere ao processo de elaborar e organizar ideias com o objetivo de encontrar soluções inovadoras para os problemas identificados durante a pesquisa com o usuário. Durante a fase de ideação, é fundamental envolver um grupo multidisciplinar, composto por profissionais de diferentes áreas, como designers, desenvolvedores, especialistas em usabilidade, entre outros. Essa diversidade de conhecimentos e perspectivas enriquece o processo, permitindo a geração de diversas opções e alternativas para resolver os desafios identificados. Durante as sessões de ideação, os participantes são encorajados a pensar de forma livre e criativa, sem limitações ou julgamentos prematuros. O objetivo é gerar o maior número possível de ideias, explorando diferentes abordagens e soluções para os problemas levantados. O foco deve ser na quantidade, em vez da qualidade das ideias nessa fase inicial. Um exemplo de atividade de ideação é a realização de um brainstorming, onde os participantes são estimulados a compartilhar suas ideias de forma espontânea e sem restrições. O facilitador da sessão pode propor desafios específicos ou perguntas abertas para direcionar a discussão. Durante o brainstorming, as ideias podem ser anotadas em um quadro branco ou em notas adesivas, facilitando a visualização e a organização posteriormente. Após a etapa de ideação, as ideias geradas são avaliadas e refinadas para selecionar as melhores soluções a serem desenvolvidas. É importante lembrar que nem todas as ideias geradas durante a ideação serão viáveis ou adequadas para o contexto do projeto, mas a diversidade de opções permite encontrar as mais promissoras. Em resumo, a ideação é o processo de elaborar e organizar ideias com o objetivo de encontrar soluções inovadoras para os problemas identificados durante a pesquisa com o usuário. Envolver um grupo multidisciplinar e utilizar técnicas como o brainstorming são práticas comuns nessa etapa. A ideia é gerar uma grande quantidade de ideias, explorando diferentes abordagens, e posteriormente avaliar e refinar as opções mais promissoras. 3.1 BRAINSTORMING 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 12/27 O brainstorming é uma técnica amplamente utilizada para a geração de ideias e soluções inovadoras. É uma forma criativa de buscar respostas para problemas e desafios enfrentados por equipes multidisciplinares. Com base nos textos fornecidos, vamos sintetizar as informações e destacar as etapas do brainstorming, fornecendo exemplos quando aplicável. Passos para uma reunião de brainstorming: definir o problema: antes de iniciar o processo de geração de ideias, é importante estabelecer claramente o problema que precisa ser solucionado. Essa definição serve como base para orientar o foco e a direção das ideias geradas. Por exemplo, se o problema é melhorar a usabilidade de um aplicativo de compras on-line, a equipe pode se concentrar em encontrarmaneiras de simplificar o processo de checkout ou melhorar a navegação do aplicativo; montar um grupo multidisciplinar: um grupo diversificado de pessoas com diferentes experiências e habilidades é fundamental para estimular uma variedade de perspectivas e ideias. Profissionais de áreas como design, desenvolvimento, marketing e atendimento ao cliente podem contribuir com insights valiosos. Por exemplo, ao criar website, a equipe pode incluir designers de interface, desenvolvedores front-end, especialistas em experiência do usuário (UX) e especialistas em otimização de mecanismos de busca (SEO) para abordar diferentes aspectos do projeto; explique as regras: é essencial estabelecer regras claras para o processo de brainstorming. Essas diretrizes ajudam a garantir uma atmosfera colaborativa e produtiva. Algumas regras comuns incluem: a. uma conversa por vez: para garantir que todas as vozes sejam ouvidas, cada pessoa deve ter a oportunidade de expressar suas ideias sem interrupções; b. quantidade de ideias importa: inicialmente, o foco deve ser na geração de um grande volume de ideias, sem se preocupar com sua qualidade ou viabilidade imediata; c. construir sobre a ideia dos outros: os participantes são incentivados a adicionar, expandir ou melhorar as ideias propostas por seus colegas. Isso promove uma colaboração mais rica e impede o bloqueio criativo; d. encorajar ideias "doidas": ideias consideradas incomuns ou pouco convencionais muitas vezes podem levar a soluções inovadoras. Todos os participantes devem se sentir à vontade para compartilhar suas ideias, independentemente de sua aparente viabilidade inicial; 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 13/27 e. ser visual: o uso de elementos visuais, como esboços, diagramas ou representações gráficas, pode ajudar a transmitir ideias de forma mais clara e facilitar a compreensão e a colaboração do grupo; f. manter o foco: os participantes devem se concentrar no problema definido no início e evitar desviar-se para assuntos irrelevantes durante a sessão de brainstorming; g. não fazer críticas nem julgamentos: durante a fase de ideação, todas as ideias são bem- vindas e não devem ser criticadas ou julgadas. Isso cria um ambiente seguro e encorajador para a livre expressão de pensamentos. geração de ideias: nesta etapa, o objetivo é gerar o maior número possível de ideias relacionadas ao problema definido. Alguns pontos a serem considerados durante esta fase são: a. estabelecer um tempo máximo: definir um limite de tempo para a geração de ideias ajuda a manter a dinâmica e o ritmo da sessão. Por exemplo, pode ser definido um prazo de 10 minutos para que todos os participantes escrevam o máximo de ideias que conseguirem; b. anotar as ideias exatamente como foram faladas: todas as ideias propostas devem ser registradas sem alterações ou julgamentos imediatos. Isso garante que todas sejam consideradas e discutidas posteriormente; c. manter a ordem com uma ideia apresentada por vez: para evitar interrupções e permitir que cada ideia seja adequadamente ouvida e discutida, é recomendado seguir uma ordem na apresentação das ideias. Por exemplo, cada membro da equipe pode ter sua vez para compartilhar uma ideia, enquanto os outros ouvem e anotam; d. toda a ideia apresentada deve ser ouvida por todos: é importante que todas as ideias sejam ouvidas e consideradas pela equipe, independentemente de sua viabilidade ou originalidade aparente. Isso promove um ambiente de respeito e valorização das contribuições de todos os membros. conclusão do processo: após a fase de geração de ideias, é necessário realizar uma análise e seleção das melhores propostas. Algumas etapas que podem ser seguidas incluem: a. esclarecer o significado de todas as ideias: é importante garantir que todas as ideias sejam compreendidas por todos os membros da equipe. Caso haja dúvidas ou ambiguidades, elas devem ser esclarecidas antes de prosseguir para a próxima etapa; b. descartar ideias não úteis: nem todas as ideias geradas serão viáveis ou relevantes para a solução do problema em questão. Nessa etapa, é necessário avaliar as ideias de forma 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 14/27 crítica e descartar aquelas que não contribuem para a solução ou que são impraticáveis; c. agrupar as ideias em categorias: com base em temas comuns ou características compartilhadas, as ideias podem ser agrupadas em categorias. Isso facilita a identificação de padrões e ajuda na análise das possibilidades; d. eliminar ideias duplicadas: se várias ideias semelhantes foram propostas, é importante eliminar duplicações e manter apenas uma representação dessas ideias no processo de seleção final; e. transformar ideias similares em uma única: caso haja ideias semelhantes ou que abordem o mesmo aspecto, elas podem ser combinadas e refinadas em uma única proposta. Isso ajuda a simplificar o processo de seleção; f. selecionar as melhores ideias/soluções: após a análise e organização das ideias, a equipe deve escolher as melhores propostas que têm potencial para resolver o problema identificado. Essas ideias selecionadas serão posteriormente desenvolvidas e implementadas. Na imagem a seguir, temos um resumo do processo de brainstorming. Figura 3 – Representação do processo de brainstorming Fonte: Winston Sen Lun Fung, 2023. Por meio dessas etapas do brainstorming, as equipes podem aproveitar a diversidade de conhecimentos e experiências para gerar ideias criativas e encontrar soluções inovadoras. O 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 15/27 brainstorming não apenas promove a colaboração entre os membros da equipe, mas também encoraja a livre expressão de pensamentos e a construção coletiva das ideias. Considere o seguinte exemplo: Vamos imaginar uma empresa de desenvolvimento de aplicativos móveis que está enfrentando o desafio de melhorar a experiência do usuário em seu aplicativo de compras on-line. A equipe decide realizar uma reunião de brainstorming para gerar ideias e soluções inovadoras. Aqui está como as etapas do brainstorming podem ser aplicadas neste caso: Definir o problema: o problema identificado é a necessidade de melhorar a usabilidade do aplicativo de compras on-line para tornar a experiência do usuário mais intuitiva e agradável. Montar um grupo multidisciplinar: a equipe é composta por um designer de interface, um desenvolvedor front-end, um especialista em UX e um representante do departamento de atendimento ao cliente. Essa diversidade de conhecimentos e perspectivas enriquece o processo de brainstorming. Explique as regras: antes de iniciar a sessão, o facilitador explica as regras do brainstorming: a. uma conversa por vez: cada membro da equipe terá a oportunidade de compartilhar suas ideias sem interrupções; b. quantidade de ideias importa: o objetivo é gerar o maior número possível de ideias, sem se preocupar com a qualidade ou viabilidade inicial; c. construir sobre a ideia dos outros: todos são encorajados a adicionar, expandir ou melhorar as ideias propostas pelos colegas; d. encorajar ideias "doidas": ideias consideradas incomuns ou pouco convencionais são bem- vindas, pois podem levar a soluções inovadoras; e. ser visual: desenhos, esboços ou esquemas podem ser utilizados para auxiliar na visualização e comunicação das ideias; f. manter o foco: a equipe deve se concentrar na melhoria da usabilidade do aplicativo de compras on-line; g. não fazer críticas nem julgamentos: todas as ideias são aceitas sem críticas ou julgamentos prematuros. 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 16/27 Geração de Ideias: durante a sessão de brainstorming, a equipe segue as diretrizes estabelecidas. Eles estabelecem um tempo máximo de 15 minutos para a geração de ideias e anotam todas as sugestões exatamente como foram faladas. Alguns exemplos de ideias propostas podem ser:implementar um fluxo de compra simplificado, com menos etapas e formulários mais intuitivos; introduzir uma função de pesquisa avançada para facilitar a descoberta de produtos específicos; adicionar um recurso de recomendação personalizada com base no histórico de compras do usuário; melhorar a velocidade de carregamento do aplicativo para uma experiência mais ágil; incluir tutoriais interativos para orientar os usuários sobre como usar os recursos do aplicativo. Conclusão do processo: após a geração de ideias, a equipe passa para a etapa de análise e seleção: a. esclarecer o significado de todas as ideias: os membros da equipe discutem e esclarecem qualquer dúvida sobre as ideias propostas; b. descartar ideias não úteis: algumas ideias podem ser consideradas inviáveis ou pouco relevantes para a melhoria da usabilidade do aplicativo e são descartadas; c. agrupar as ideias em categorias: as ideias são agrupadas em categorias, como melhorias de interface, otimização de desempenho e recursos adicionais; d. eliminar ideias duplicadas: se houver ideias semelhantes, elas são combinadas em uma única proposta; e. selecionar as melhores ideias/soluções: a equipe realiza uma votação ou discussão para selecionar as ideias consideradas mais promissoras para aprimorar a usabilidade do aplicativo. Ao seguir essas etapas do brainstorming, a equipe de desenvolvimento de aplicativos móveis pode obter uma ampla variedade de ideias e soluções inovadoras para melhorar a experiência do usuário em seu aplicativo de compras on-line. 3.2 CRAZY 8S Inovações em UX e UI são evidentes com a implementação de técnicas avançadas, como o "Crazy Eights", lançado pelo Google Ventures em 2010. O principal objetivo desse método é permitir a rápida geração de múltiplas soluções por membros da equipe, encorajando discussões produtivas e eficazes de problemas e favorecendo uma abordagem rápida e iterativa na materialização de soluções. 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 17/27 Figura 4 – Representação do método Crazy 8s do Google Ventures Crédito: Wasteresley Lima. A seguir, a descrição do método "Crazy Eights": preparação: no início, cada integrante deve possuir uma folha A4 e algum material para escrever. A folha é dobrada em três partes, gerando oito painéis; desenho de ideias: cada integrante recebe oito minutos para esboçar oito ideias distintas, uma para cada painel. Os esboços são rápidos e sem preocupações com perfeição, o objetivo principal é a geração de um leque amplo de ideias; apresentação: após os esboços, cada integrante compartilha suas ideias com o grupo. Isso proporciona a todos a chance de entender diferentes perspectivas e inspirar novas ideias; votação: após todas as apresentações, os integrantes votam nas ideias que consideram mais promissoras. A votação pode ser realizada de diversas formas, mas geralmente cada participante coloca um adesivo ou faz uma marcação nas ideias que mais aprecia; iteração: com base na votação, os integrantes podem selecionar as ideias mais promissoras para aprimorar ou até mesmo combinar várias ideias em uma única solução. O processo se inicia com a pesquisa sobre o assunto de interesse. Cada membro da equipe busca, de forma independente, informações relevantes, analisando o que os concorrentes estão fazendo, realizando pesquisas com usuários e consultando outros materiais. A equipe define um tempo para essa atividade, geralmente de 20 minutos. 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 18/27 Posteriormente, a partir dos materiais e informações coletados, cada integrante do time destaca as ideias, assuntos e aspectos mais relevantes. Essa fase culmina com cada membro da equipe desenhando rapidamente oito variações da ideia em oito minutos, um processo que auxilia o time a sair da zona de conforto e explorar ideias além das mais óbvias. Cada membro da equipe desenha suas ideias em uma folha A4 dividida em oito partes. O uso de cores e figuras não é necessário, o foco principal é na representação visual do problema. Desenhar no papel tem a vantagem de ser mais rápido e permite que todos os membros da equipe (não apenas designers) possam contribuir e compartilhar suas ideias e ajudar a conceber a solução, evitando retrabalho. "Crazy Eights" é eficaz por forçar os participantes a pensar rapidamente e explorar uma variedade de ideias. Ao limitar o tempo para cada esboço, os participantes são incentivados a pensar de forma mais criativa e menos crítica. Como cada participante trabalha individualmente, cada um tem a oportunidade de contribuir com suas próprias ideias, evitando que as vozes mais dominantes monopolizem a discussão. Após essa fase de desenho, a equipe seleciona as ideias mais promissoras dos oito esboços. Recomenda-se descartar os esboços com as ideias menos promissoras para manter o foco nas melhores. Depois, as ideias são categorizadas para facilitar a análise. Ideias semelhantes são unidas em uma única ideia, e quaisquer duplicadas são eliminadas. Esse processo de geração de ideias, que inclui pesquisa, desenho e seleção de ideias, pode ser repetido várias vezes em uma mesma reunião para gerar múltiplas soluções para um problema. Essa é uma abordagem que equilibra a eficácia do brainstorming com a eficiência do trabalho individual, permitindo que uma equipe explore diversas opções rapidamente e de maneira colaborativa. Ao final, a equipe será capaz de apresentar soluções inovadoras e eficazes para o problema em questão. Apesar de "Crazy Eights" ser uma ferramenta poderosa para a geração de ideias, ainda é necessário avaliar e aperfeiçoar essas ideias por meio de discussões em grupo, prototipagem e testes com usuários. Isso garante que as soluções propostas sejam não apenas criativas, mas também práticas e eficazes. Veja o exemplo da aplicação do método "Crazy Eights": 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 19/27 Imagine uma equipe de desenvolvedores de um aplicativo de entrega de comida que deseja melhorar a experiência do usuário. Eles decidem usar a técnica do "Crazy Eights" para gerar novas ideias. Pesquisa: primeiro, cada membro da equipe realiza uma pesquisa independente, analisando outros aplicativos de entrega de comida, lendo feedbacks dos usuários e pesquisando novas tendências no mercado. A equipe define 20 minutos para essa atividade. Desenho de ideias: em seguida, usando as informações coletadas, cada membro da equipe desenha rapidamente oito variações de ideias em oito minutos. Um membro pode desenhar um novo layout para a página inicial, outro pode desenhar um novo método de pagamento, enquanto outro pode esboçar uma nova maneira de classificar restaurantes. Apresentação: depois de esboçar as ideias, cada membro apresenta suas ideias para o grupo. Isso permite que todos entendam o pensamento por trás de cada ideia e possam se inspirar um no outro. Votação: a equipe então vota nas ideias que consideram mais promissoras. Nesse exemplo, a equipe pode usar adesivos coloridos para votar, com cada cor representando um grau diferente de entusiasmo. Iteração: com base nos votos, a equipe pode escolher as ideias mais populares para desenvolver ainda mais. Por exemplo, eles podem combinar a ideia de um novo layout com a de um novo método de pagamento. Esse processo ilustra como o "Crazy Eights" pode ser usado para gerar uma variedade de ideias rapidamente e de forma colaborativa. Além disso, destaca a importância da pesquisa, da colaboração e da iteração no desenvolvimento de soluções eficazes e inovadoras. 3.3 MESCRAI O Mescrai é uma metodologia de ideação estruturada que ajuda a diversificar e desenvolver novas ideias a partir de uma base existente. O acrônimo Mescrai representa Modificar, Eliminar, Substituir, Combinar, Rearranjar, Adaptar e Inverter. Cada letra da sigla Mescrai representa um tipo de alteração que pode ser realizada, a saber: modifique – envolve fazer alteraçõesem um elemento existente do design, como aumentar ou diminuir um botão, ou adicionar ou remover um elemento; 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 20/27 elimine – se refere à remoção de um elemento do design, criando uma variação da ideia original; substitua – sugere a troca de um elemento por outro, como substituir um botão por uma imagem, ou uma imagem por um texto; combine – propõe a união de diferentes elementos ou ideias, potencialmente de outros designs, para criar algo; rearranje – envolve mudar a disposição dos elementos no design, como mover um elemento para a esquerda ou para a direita; adapte – pede para incorporar elementos de outros contextos, como um design de desktop em uma tela mobile, e vice-versa; inverta – encoraja a visualização do design de uma nova perspectiva, trocando a ordem ou a posição dos elementos. Esses conceitos podem ser aplicados em conjunto com outras técnicas de ideação, como o "Crazy Eights". Enquanto o "Crazy Eights" desafia a equipe a sair da zona de conforto e explorar ideias não convencionais, o Mescrai fornece uma estrutura para variar e adaptar essas ideias. Agora, considere um exemplo prático da aplicação do Mescrai: uma barra de pesquisa em um website, como o do Submarino. Suponha que os usuários estejam tendo dificuldade em identificar o campo de busca. Podemos aplicar o Mescrai para gerar um conjunto de ideias que poderiam resolver esse problema. Modificar – poderíamos aumentar o tamanho da barra ou do ícone de busca para melhorar sua percepção; Eliminar – poderíamos remover objetos chamativos ao redor da barra de busca para facilitar seu reconhecimento; Substituir – embora não tenhamos uma ideia específica agora, a ideia seria trocar um elemento por outro; Combinar – poderíamos adicionar um texto auxiliar dentro do campo de busca para convidar o usuário a usar a ferramenta, mostrando exemplos de como interagir com ela; Rearranjar – mudar a posição da barra de busca poderia oferecer uma nova experiência de interação; Adaptar – poderíamos adicionar um rótulo no botão de pesquisa com uma palavra de ação para ajudar os novos usuários a entender onde clicar para concluir a interação; [1] 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 21/27 Inverter – mudar o ícone de lupa para a esquerda permitiria ao usuário identificar a finalidade do campo sem ter que ler todas as informações presentes nele. Dessa forma, a metodologia Mescrai, utilizada em conjunto com outras técnicas de ideação, pode ajudar a expandir e diversificar as soluções de design, resultando em uma experiência de usuário aprimorada. TEMA 4 – PROTÓTIPOS A prototipação é uma prática indispensável no universo do design UX, usada para criar e validar soluções de forma ágil e assertiva. O ato de prototipar serve como um meio para materializar um conceito ou ideia que inicialmente se encontra apenas no plano das ideias dos designers, tornando-o palpável e facilitando sua comunicação com clientes e usuários. Bill Moggridge, um dos fundadores da Ideo, conceituada empresa de design, visualiza o protótipo como uma expressão do design que é desenvolvida antes da existência da solução final. Para ele, o protótipo é um método inovador de visualizar e testar soluções de design antecipadamente, prevenindo gastos desnecessários e esforços excessivos. Mas por que devemos prototipar? Prototipar é a oportunidade de dar vida a algo que existia apenas em nossa imaginação e transmitir essa realidade para nossos clientes e usuários. É a chance de manifestar uma ideia, uma funcionalidade, uma interação e recolher feedbacks e resultados para avaliar se os objetivos ou requisitos foram atingidos. O protótipo é uma ferramenta que permite avaliar e decidir quais ações devem ser tomadas: se a ideia original será mantida, se necessita de ajustes ou se deve ser totalmente descartada para um novo começo. No desenvolvimento de soluções, o custo de uma mudança em um projeto aumenta exponencialmente com o passar do tempo. Portanto, adotar a prototipação, especialmente durante as fases iniciais do projeto, pode reduzir os custos e mitigar falhas durante a implementação. 4.1 PROTOTIPAÇÃO 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 22/27 Existem várias formas de protótipos que podem variar de acordo com o estágio do projeto e a audiência que irá avaliá-los. Eles podem ir desde uma explicação verbal, um storyboard mostrando a sequência de ações em uma página, desenhos manuais de uma tela, até protótipos de alta fidelidade que fornecem uma experiência quase idêntica ao produto final. Os protótipos podem ter três níveis principais de fidelidade: baixa, média e alta. A fidelidade tem relação direta com a proximidade do resultado final. Protótipos de baixa fidelidade, como esboços no papel, são ideais para testar ideias iniciais. Já os protótipos de alta fidelidade, como mockups interativos, com estilos e fluxos de navegação definidos, são úteis para testar a usabilidade e a eficácia de soluções mais desenvolvidas. 4.2 PROTÓTIPO E O CLIENTE Quando um protótipo é apresentado a um cliente, ele oferece uma oportunidade para feedback imediato e permite que o cliente e a equipe de desenvolvimento alinhem ideias, processos, funcionalidades e outros aspectos da solução. Além disso, o protótipo permite avaliar e escolher qual direção seguir: se mantém a ideia, se precisa ser revisada ou se descarta tudo e começa de novo. 4.3 PROTÓTIPO E O USUÁRIO Os protótipos também são uma ferramenta valiosa para testar a usabilidade do produto com os usuários finais. Eles permitem validar se as interações do usuário, a partir de sua jornada, estão de acordo com o esperado ou não. A apresentação de um protótipo a possíveis usuários da solução oferece retorno sobre a usabilidade, se as necessidades e expectativas foram atendidas ou necessitam de reformulações. A prototipação é uma ferramenta vital no processo de design UX que permite aos designers visualizar e testar suas ideias, obter feedback valioso de clientes e usuários, e refinar suas soluções antes da implementação final. Isso contribui para a criação de produtos que atendem melhor às necessidades dos usuários, levando a uma melhor experiência. TEMA 5 – PROTOTIPAÇÃO 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 23/27 A prototipação é uma técnica amplamente utilizada na área de design UX para criar e validar soluções de forma rápida e eficiente. Os protótipos são criados após a fase de pesquisa com usuários ou benchmarking, permitindo que os designers conheçam as necessidades dos clientes e tenham hipóteses para solucioná-las. Existem três tipos principais de protótipos: baixa, média e alta fidelidade. Cada um deles tem sua aplicação e objetivo específicos, e o estágio do projeto e o público-alvo determinarão qual tipo é mais adequado. 5.1 PROTÓTIPOS DE BAIXA FIDELIDADE Os protótipos de baixa fidelidade são representações simples e rápidas, geralmente feitas à mão, que têm como objetivo demonstrar a funcionalidade básica e a organização geral de uma aplicação. Eles são especialmente úteis no início do processo de design, permitindo que os designers visualizem e comuniquem ideias de forma simples e econômica. Esses protótipos, como esboços em papel, não incluem elementos visuais refinados, como cores, tipografia ou imagens reais. Eles são amplamente utilizados para auxiliar no levantamento de requisitos e funcionalidades, além de permitir a participação de pessoas de diferentes áreas e especialidades. Para ilustrar esse conceito, vamos considerar o exemplo de um novo aplicativo de entrega de comida. Nessa fase inicial, é possível criar protótipos de baixa fidelidade desenhando esboços simples em papel, representando as telas principais e o fluxo básico do aplicativo. Esses protótipos ajudam a visualizar a estrutura e a funcionalidade do aplicativo, permitindo testar diferentes ideias rapidamente.Além disso, eles são úteis para obter feedback inicial dos usuários e validar conceitos-chave antes de investir recursos significativos no desenvolvimento. 5.2 PROTÓTIPOS DE MÉDIA FIDELIDADE Os protótipos de média fidelidade evoluem a partir dos protótipos de baixa fidelidade, incorporando elementos adicionais para fornecer uma representação mais detalhada da solução. Eles podem incluir a estrutura do conteúdo da interface e criar um layout básico com conteúdos e imagens de marcação. Além disso, os protótipos de média fidelidade podem simular interações simples, como o clique em um botão, e permitem a navegação entre diferentes seções do projeto. Nessa etapa, os recursos de design visual ainda são limitados, concentrando-se principalmente na 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 24/27 funcionalidade e na organização do sistema. Esses protótipos são úteis para testar fluxos de navegação e avaliar a usabilidade do produto. Continuando com o exemplo do protótipo de baixa fidelidade do aplicativo de entrega de comida, nesta fase, é possível definir a estrutura das telas, adicionar conteúdo de exemplo e simular interações básicas, como a seleção de um restaurante, a adição de itens ao carrinho e o fechamento do pedido. Os protótipos de média fidelidade permitem testar a navegabilidade e a experiência do usuário em um nível mais avançado, facilitando a identificação de melhorias e ajustes necessários. 5.3 PROTÓTIPOS DE ALTA FIDELIDADE Os protótipos de alta fidelidade são representações muito próximas do produto final, buscando proporcionar uma experiência quase completa ao usuário. Eles incorporam elementos visuais refinados, como cores, tipografia, imagens e textos reais, para criar uma representação mais realista da solução. Os protótipos de alta fidelidade permitem simular fluxos complexos, interações avançadas e até mesmo envolver programação. Eles são úteis para validar a aparência visual, a interação e a usabilidade do produto, além de fornecer uma visão mais precisa de como será a solução final. No entanto, o desenvolvimento de protótipos de alta fidelidade pode exigir mais recursos financeiros e tempo, devido à sua maior complexidade. Retomando o exemplo do aplicativo de entrega de comida, suponha que você esteja na fase final do desenvolvimento e queira validar a aparência visual e as interações mais complexas. Nesse caso, é possível criar protótipos de alta fidelidade usando ferramentas de design avançadas ou até mesmo programação. Esses protótipos se assemelham muito ao produto final, com cores, tipografia, imagens e textos reais. Você pode simular todo o fluxo de uso do aplicativo, desde a escolha do restaurante até o pagamento e a confirmação do pedido. Os protótipos de alta fidelidade são úteis para obter feedback detalhado sobre a aparência, interações e usabilidade, permitindo ajustes finos antes do lançamento. É importante destacar que a escolha do tipo de protótipo depende do estágio do projeto, das necessidades dos clientes e dos objetivos específicos. Geralmente, começa-se com protótipos de baixa fidelidade para capturar ideias iniciais e, conforme o projeto avança, passa-se para protótipos de média e alta fidelidade para refinamento e validação. A prototipação, em qualquer nível de 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 25/27 fidelidade, permite testar, obter feedback dos usuários e evitar custos desnecessários, contribuindo para o desenvolvimento de soluções eficazes e satisfatórias para os clientes e usuários finais. FINALIZANDO No processo de design é essencial considerar tanto a experiência do usuário (UX) quanto a interface do usuário (UI) para criar soluções eficazes e satisfatórias. Para alcançar esse objetivo é crucial iniciar com a compreensão do cliente e suas necessidades por meio de entrevistas detalhadas. Ao realizar entrevistas com o cliente, os designers têm a oportunidade de conhecer suas demandas, metas e restrições. Isso permite obter insights valiosos e compreender as expectativas dos usuários finais. Com base nesse conhecimento, a etapa de ideação e brainstorming é iniciada. Durante a ideação, os designers podem explorar várias possibilidades e conceitos para resolver os desafios do projeto. A colaboração e a troca de ideias entre a equipe de design são essenciais nesse processo. O objetivo é gerar o maior número possível de soluções criativas e inovadoras. Com as ideias geradas, o próximo passo é a prototipação. Os protótipos são representações tangíveis das soluções propostas, permitindo testar e iterar rapidamente. Existem diferentes tipos de protótipos, cada um com sua finalidade específica. Os protótipos de baixa fidelidade, como esboços em papel, são utilizados no início do processo de design para demonstrar a funcionalidade básica e a organização geral da aplicação. Eles ajudam a visualizar a estrutura e a funcionalidade do produto, permitindo testar diferentes ideias rapidamente e obter feedback inicial dos usuários. À medida que o projeto avança, entram em cena os protótipos de média fidelidade. Eles evoluem a partir dos protótipos de baixa fidelidade, incorporando elementos adicionais, como a estrutura do conteúdo da interface e a navegação básica. Os protótipos de média fidelidade permitem testar fluxos de navegação, avaliar a usabilidade e identificar melhorias necessárias. Finalmente, os protótipos de alta fidelidade são representações quase completas do produto final. Eles incorporam elementos visuais refinados, como cores, tipografia, imagens e textos reais, proporcionando uma experiência visual e interativa mais próxima do produto final. Esses protótipos são úteis para validar a aparência, a interação e a usabilidade do produto antes do lançamento. 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 26/27 A combinação de UX, UI, entrevistas detalhadas, ideação, brainstorming e prototipação é fundamental para o processo de design. Conhecer as necessidades do cliente, gerar ideias criativas e testá-las por meio de protótipos em diferentes níveis de fidelidade contribui para o desenvolvimento de soluções eficazes e satisfatórias, resultando em uma experiência de qualidade. REFERÊNCIAS BAXTER, M. Projeto de produto: Guia prático para o design de novos produtos. São Paulo: Edgard Blucher, 2008. BROWN, T. Design Thinking – Edição Comemorativa 10 anos. Rio de Janeiro: Editora Alta Books, 2020. Hanouset, R.; OP de BEEK, B. Design para a Internet: Projetando a Experiência Perfeita. São Paulo: GEN LTC, 2005. LEIFER, L.; LEWRICK, M.; LINK, P. A Jornada do Design Thinking. Rio de Janeiro: Editora Alta Books, 2019. MÜLLER-ROTERBERG, C. Design Thinking para Leigos. Rio de Janeiro: Editora Alta Books, 2021. WHESHSLER, S. M. Criatividade: descobrindo e encorajando. Campinas: Livro Pleno, 2002 Exemplo adaptado do site Max Andriani: <http://www.maxandriani.art.br/2012/11/10/criatividade-e-geracao-de-ideias-mescrai-scamcea/>. Acesso em: 2 ago. 2023. [1] 13/03/2024, 01:49 UNINTER https://univirtus.uninter.com/ava/web/roa/ 27/27 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 1/30 FUNDAMENTOS DE DESIGN DE SISTEMAS AULA 6 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 2/30 Prof. Winston Fung CONVERSA INICIAL Nesta etapa de estudos, vamos discutir sobre conceitos, práticas e estratégias fundamentais que orientam o desenvolvimento de produtos de software centrados no usuário. A importância do design no desenvolvimento de software é inegável, sendo a ponte entre a tecnologia e o usuário, tornando as soluções digitais acessíveis, intuitivas e agradáveis. Nossos estudos serão guiados pela experiência do usuário (UX), um componente crucial que define como um usuário se sente ao interagir com um sistema. Por meio do UX, nosso objetivo é entender as necessidades, expectativas e comportamentosdos usuários, buscando sempre criar experiências positivas, satisfatórias e significativas. A funcionalidade e a usabilidade são dois aspectos que andam lado a lado com UX e UI. A funcionalidade diz respeito à capacidade de um sistema executar as tarefas que se propõe a realizar, enquanto a usabilidade avalia a eficácia, a eficiência e a satisfação com que os usuários podem atingir seus objetivos ao usar um sistema. Acreditamos que o sucesso no desenvolvimento de software é alcançado quando essas disciplinas trabalham em harmonia. Combinando UX, UI, funcionalidade e usabilidade, somos capazes de criar produtos de software que não apenas atendem aos requisitos técnicos, mas também criam experiências profundamente satisfatórias para os usuários. TEMA 1 – ARQUITETURA DA INFORMAÇÃO O Information Architecture Institute define a Arquitetura de Informação (AI) como a “prática de decidir como organizar as partes de alguma coisa de modo a torná-la compreensível”. [1] 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 3/30 A AI envolve várias considerações, incluindo a estruturação de uma hierarquia de informação clara e intuitiva, rotulando informações eficazmente e desenvolvendo esquemas de busca eficazes. É essencial para websites ou aplicativos com grandes volumes de conteúdo, em que uma organização de informação mal executada pode tornar difícil para os usuários encontrar o que estão procurando. A AI tem como objetivo responder às quatro questões que um usuário pode ter ao entrar em um site ou em uma tela, conforme detalhado por Steve Krug em seu livro Don’t make me think: 1. O que é isto? 2. O que eles têm aqui? 3. O que posso fazer aqui? 4. Por que devo estar aqui e não em outro site/tela? A maneira como as informações são agrupadas e disponibilizadas ao usuário é fundamental para fornecer uma navegação de qualidade e uma boa usabilidade. Além disso, a AI ajuda a garantir que as informações sejam consistentes e coerentes em todo o sistema, melhorando a experiência do usuário e reduzindo a frustração. Portanto, antes de iniciar o desenvolvimento de um produto digital, é crucial considerar a AI. Em outras palavras, como podemos organizar todas as informações de maneira que o usuário possa compreendê-las de forma intuitiva e eficaz? Em um jogo, podemos pensar nas informações colocadas em um cenário, tudo que ele comunica, as impressões de que ele passa ao jogador, as sensações, percepções e a inserção na história. Da mesma forma, em um site é preciso projetar como será a jornada do usuário e quais informações serão apresentadas e são importantes para a experiência do usuário. 1.1 PILARES DA ARQUITETURA DE INFORMAÇÃO A AI é uma disciplina essencial no campo do design de experiência do usuário (UX). Ela desempenha um papel fundamental na organização, estruturação e rotulação de informações de maneira intuitiva e fácil de entender para os usuários. Para compreender melhor a AI, precisamos nos familiarizar com seus pilares fundamentais. São eles: navegação, busca, organização e rotulação. 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 4/30 Cada um desses pilares desempenha um papel crítico na criação de uma experiência do usuário eficaz, fornecendo aos usuários uma compreensão clara do que podem fazer em um site ou aplicativo e como podem fazer. Juntos, eles facilitam a exploração, a compreensão e o uso eficaz das plataformas digitais, permitindo que os usuários encontrem o que estão procurando com facilidade e eficiência. 1. Navegação: trata de como os usuários navegam por um site ou sistema. Uma navegação bem projetada permite que os usuários encontrem o que estão procurando com facilidade e eficiência. 2. Busca: complementa a navegação, proporcionando aos usuários um meio eficaz de buscar informações específicas dentro do sistema. 3. Organização: envolve a organização das informações de maneira lógica e intuitiva, facilitando a localização do conteúdo pelos usuários. 4. Rotulação: relaciona-se com a forma como as informações são nomeadas e categorizadas. Rótulos eficazes são intuitivos e refletem a linguagem e a compreensão do usuário. 1.2 COMO DOCUMENTAR: DOCUMENTANDO A ARQUITETURA DE INFORMAÇÃO Documentar a AI é um passo crucial que oferece uma compreensão clara do layout e da estrutura de um site ou aplicativo. A documentação pode assumir várias formas, dependendo do projeto e dos objetivos. Aqui estão algumas maneiras comuns de documentar a AI: 1. Mapas do site: fornecem uma visão geral da organização do conteúdo em um site ou aplicativo. 2. Wireframes: esboços básicos que ilustram a disposição dos elementos em uma página ou tela. 3. Diagramas de fluxo do usuário: mostram o caminho que um usuário pode percorrer em um site ou aplicativo, incluindo ações do usuário, pontos de decisão e interações com a interface. 4. Blueprints ou especificações da página: detalham o conteúdo e a funcionalidade de uma página específica, incluindo informações sobre interações do usuário e comportamento da interface. 5. Modelos de conteúdo: definem os tipos de conteúdo que serão exibidos em um site ou aplicativo e as relações entre eles. 6. Taxonomias e etiquetagem: a taxonomia é a classificação das informações e a etiquetagem é como essas informações são representadas para o usuário. 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 5/30 7. Protótipos: são versões interativas do design que permitem testar a AI e a usabilidade antes do desenvolvimento final. É importante notar que a documentação de AI é um recurso vivo que deve ser atualizado à medida que o sistema evolui. É fundamental para garantir que o sistema seja desenvolvido em conformidade com as necessidades dos usuários e os requisitos do negócio. Ao documentar a AI, é importante considerar o usuário. A documentação deve, portanto, refletir uma estrutura e organização que atendam às necessidades dos usuários, tornando mais fácil para eles localizar e compreender as informações. No próximo tópico, daremos uma atenção especial aos wireframes e blueprints, que são ferramentas fundamentais na criação de uma AI eficaz. TEMA 2 – WIREFRAMES Wireframes são representações visuais simplificadas que surgem durante e após a etapa de Arquitetura de Informação, desempenhando um papel crucial no processo de design da interface do usuário (UI) e na estruturação da informação. Os wireframes, essencialmente, estabelecem a base para a construção da interface de um site ou aplicativo. Funcionam como uma espécie de “esqueleto” do projeto, definindo a estrutura, o layout e a hierarquia dos elementos de uma página, sem se preocupar, inicialmente, com detalhes gráficos, cores ou estilos. Seu principal objetivo é estabelecer a funcionalidade e o fluxo de interação do usuário no ambiente digital. Essas representações visuais ajudam a organizar a informação de maneira hierárquica e visual, fornecendo uma visão preliminar do problema a ser abordado. Eles permitem um debate focado sobre quais informações serão apresentadas, seu posicionamento, o conteúdo e algumas funcionalidades, antes mesmo de se entrar em uma fase de exploração mais criativa e detalhada do design. O wireframe pode ser desde um esboço feito à mão até um desenho mais detalhado feito em uma aplicação especializada. Eles apresentam um layout básico, fornecendo uma visão geral do conteúdo, posicionamento e da estrutura básica de como uma página ou tela será apresentada. No 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 6/30 entanto, vale ressaltar que eles não costumam incluir cores, fontes e elementos de design final, já que o objetivo principal é focar na funcionalidade, estrutura e fluxo de informação. Os wireframes servem como uma ferramenta eficaz para validar ideias e conceitos iniciais, promovendo uma comunicação clara e eficaz entre designers, desenvolvedores e stakeholders, e permitindo ajustes e iterações antes que o processode design detalhado e codificação comece. Eles representam um passo fundamental no processo de desenvolvimento, economizando tempo, recursos e esforço, ao minimizar mal-entendidos e reestruturações drásticas mais adiante no processo de design. 2.1 CONSTRUINDO O WIREFRAME Wireframes são, essencialmente, uma representação visual esquemática de uma interface. Seu objetivo é trazer a estrutura, a hierarquia de informações e a funcionalidade do layout de uma página, sem a necessidade de se preocupar com cores, tipografias e elementos gráficos. Por exemplo, suponha que você está projetando a página de um e-commerce. No seu wireframe, você pode começar esboçando os principais blocos de conteúdo: um cabeçalho com o logo e a barra de pesquisa, uma navegação principal, um banner promocional, uma lista de produtos, um rodapé com informações adicionais etc. Em seguida, dentro desses blocos, você definirá quais elementos eles incluirão: títulos, textos, botões, links, imagens e assim por diante. Ao entregar um wireframe para a equipe ou para o cliente, a intenção é que todos possam ter uma visão clara e compartilhada de onde o projeto está caminhando. Esse artefato ajuda a garantir que todos estejam na mesma página e tenham uma compreensão comum do que está sendo planejado, minimizando possíveis desentendimentos ou desvios futuros. Por exemplo, em um projeto de redesign de um site de notícias, um wireframe pode ajudar a equipe a visualizar a nova disposição dos artigos na página, a nova estrutura de categorias, os locais para publicidade etc., antes mesmo de qualquer código ser escrito ou de qualquer elemento visual ser criado. Um dos aspectos mais importantes a se ter em mente ao criar wireframes é a usabilidade. É essencial que o wireframe não apenas apresente um layout organizado e esteticamente agradável, mas que também promova uma experiência do usuário eficiente e intuitiva. 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 7/30 Por exemplo, ao projetar o wireframe para um formulário de inscrição, você deve considerar a ordem e o agrupamento das perguntas, o tamanho e a localização dos campos de entrada, os elementos de ajuda e feedback, entre outros fatores que influenciam na facilidade de uso do formulário. Por último, lembre-se de que os wireframes são ferramentas de comunicação. Eles são usados não apenas para esboçar suas ideias, mas também para explicá-las aos outros. Portanto, certifique-se de que seu wireframe seja compreensível para todos que o verão, incluindo clientes, outros designers, desenvolvedores e qualquer outra pessoa envolvida no projeto. Por exemplo, ao criar um wireframe para um aplicativo de reservas de restaurantes, você pode usar anotações e descrições detalhadas para indicar como as interações funcionarão, como a busca, a seleção de restaurantes, a visualização de detalhes, o processo de reserva e assim por diante. 2.2 O QUE INCLUIR EM UM WIREFRAME? Ao criar um wireframe organizado, simples e limpo, é essencial concentrar-se em vários elementos fundamentais. São eles: Conteúdo: o conteúdo refere-se à informação que se deseja exibir na tela. O objetivo é responder à pergunta: “o que será exibido nesta tela?”. O wireframe ilustra onde cada pedaço de conteúdo será posicionado na página, podendo incluir áreas para texto, imagens, botões e muito mais. Por exemplo, em um site de notícias, o conteúdo pode incluir manchetes, imagens, textos de notícias, links para notícias completas etc. Estrutura: a estrutura diz respeito à maneira como os componentes menores vão compor o wireframe. O objetivo é responder à pergunta: “como os elementos desta página serão reunidos?”. Um wireframe normalmente mostra onde os elementos de navegação (como menus, barras de pesquisa e links) serão colocados, ajudando a definir o fluxo de como um usuário vai interagir com o site ou aplicativo. Hierarquia: a hierarquia anda de mãos dadas com a estrutura. Aqui, definimos quais elementos da estrutura merecem maior destaque, sempre focando na informação que desejamos transmitir. Por exemplo, em um e-commerce, um título de produto pode ter mais destaque do que a descrição do produto. O objetivo é responder à pergunta: “o que você quer que o usuário veja primeiro?”. Devemos levar em consideração: 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 8/30 O que tem mais valor para o usuário? O que tem menos valor para o usuário? Como esses elementos serão exibidos, agrupados e associados? Funcionalidade: ao construir wireframes, é crucial considerar as funcionalidades básicas que estarão associadas a ele. A pergunta a ser respondida é: “como esses elementos funcionarão juntos?”. Os wireframes podem também incluir descrições de como certos aspectos da página funcionarão. Por exemplo, o que acontece quando um usuário clica em um botão específico ou como o carrinho de compras de uma loja on-line funciona. Comportamento: este aspecto está intimamente ligado à funcionalidade. Trata-se de entender o que acontece quando uma funcionalidade específica é acionada. A pergunta a ser respondida é: “como esses elementos interagem com o usuário?”. Isso poderia envolver a explicação de como um pop-up aparece quando um usuário clica em um botão específico ou como um menu se expande ou retrai ao passar o mouse. Cada um desses aspectos é parte integrante na construção de um wireframe eficaz. Eles garantem que o design esteja centrado no usuário, tornando o website ou aplicativo fácil de usar e proporcionando uma experiência intuitiva e agradável para o usuário. 2.3 O QUE NÃO INCLUIR EM UM WIREFRAME? Um wireframe representa a estrutura fundamental de um aplicativo ou site, focando em elementos essenciais como botões, formulários e títulos. Ele não inclui elementos gráficos avançados, cores, tipografia diferenciada e deve ser apresentado em tons de cinza. O foco principal de um wireframe está na funcionalidade, comportamento, estrutura e hierarquia, não nos detalhes visuais. Ao criar wireframes, evite usar conteúdo sem sentido, como o famoso Lorem ipsum. Se não tiver um conteúdo adequado ainda, use linhas horizontais para simbolizar o texto. O wireframe tem o objetivo de mostrar como o seu aplicativo ou site irá se comportar, e não como será a estética final. Embora os wireframes sejam fundamentais para definir a estrutura, o layout e a funcionalidade de uma página web ou aplicativo, existem elementos que não são normalmente incluídos em um wireframe: Cores: o wireframe foca na estrutura e no layout da página, não nos detalhes de cores. As decisões de cor são normalmente tomadas durante o estágio de design de interface do usuário 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 9/30 (UI). Gráficos e imagens de alta fidelidade: as imagens e gráficos podem ser indicados como espaços reservados, mas os detalhes e os ativos finais geralmente não são incluídos no wireframe. Fontes e tipografia: assim como as cores, as decisões sobre a fonte são geralmente tomadas mais tarde, durante o estágio de design da UI. No wireframe, a tipografia é geralmente representada por texto simples. Logotipos e marcas: o wireframe é focado na estrutura e funcionalidade, não na identidade da marca. Detalhes visuais: wireframes não são destinados a ser representações visuais detalhadas de um design. Eles fornecem uma visão geral da estrutura e do fluxo de um design. Detalhes visuais, como cores, fontes e imagens, devem ser adicionados no estágio de design. Comportamento: wireframes não incluem detalhes sobre o comportamento de um design. Isso inclui coisas como animações, transições e interações do usuário. O comportamento de um design deve ser especificado no estágio de design de interação. Conteúdo: wireframes não incluem conteúdo real, como texto, imagens ou vídeos. O conteúdo de um design deve ser adicionado no estágio de design de conteúdo. Especificações técnicas: wireframes não devem incluir especificaçõestécnicas, como o tipo de código ou biblioteca a ser usada para implementar um design. A especificação técnica de um design deve ser gerada no estágio de desenvolvimento. Animações e transições interativas: detalhes como esses são geralmente deixados para protótipos mais avançados ou especificações de design de interface. O objetivo de um wireframe é ser uma representação simples da página ou aplicativo, permitindo que os designers se concentrem nos aspectos fundamentais antes de aprofundar nos detalhes do design. Isso ajuda a garantir que a estrutura e a funcionalidade sejam sólidas antes de se avançar para os aspectos mais estéticos e interativos do design. TEMA 3 – SERVICE BLUEPRINTS Service blueprints têm como principal objetivo fornecer uma análise abrangente de como os processos internos de uma empresa influenciam a experiência do usuário final. O principal foco está em: 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 10/30 1. Melhorar diretamente a experiência dos colaboradores; 2. Indiretamente aprimorar a experiência do usuário final. Um service blueprint é uma representação visual que mostra o caminho que um serviço percorre até ser entregue ao cliente. Esse mapa detalhado ilustra os diferentes pontos de contato entre o cliente e o serviço, destacando as funções e responsabilidades de cada parte envolvida. Essa ferramenta é extremamente valiosa para aprimorar a experiência do cliente, pois ajuda a identificar áreas onde o serviço pode ser aperfeiçoado e assegura que todas as partes envolvidas na prestação do serviço estejam alinhadas. Os service blueprints são empregados por uma variedade de organizações, incluindo empresas comerciais, governos e organizações sem fins lucrativos. Sua função é potencializar a experiência do cliente e garantir a entrega de serviços de alta qualidade. Service blueprint é um mapeamento detalhado que retrata as relações entre os elementos, processos e pessoas que compõem a jornada do cliente ou usuário dentro de um serviço. 3.1 PARA QUE SERVE UM SERVICE BLUEPRINT? Um service blueprint serve para uma variedade de propósitos críticos em qualquer organização que preste serviços a clientes ou usuários. A principal finalidade dessa ferramenta é identificar e abordar possíveis falhas na experiência do serviço, que podem ser categorizadas em cinco principais razões: Definição incorreta do que os consumidores/clientes esperam: em alguns casos, os gerentes podem ter uma compreensão equivocada das necessidades e expectativas dos clientes. Essa desconexão pode levar a uma experiência de serviço insatisfatória, pois o serviço fornecido pode não atender às necessidades reais dos clientes. Definição de padrões de serviço errados: às vezes, os gerentes podem definir padrões de serviço que não estão alinhados com o que os clientes valorizam. Isso pode resultar em desperdício de recursos em áreas que não são importantes para os clientes, enquanto outras áreas que são de alta prioridade para os clientes são negligenciadas. Não cumprimento dos padrões de qualidade esperados pelos funcionários: mesmo quando os padrões de serviço estão corretamente definidos, os funcionários podem não conseguir atingir 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 11/30 esses padrões devido a fatores como falta de treinamento, falta de recursos ou baixo moral. Expectativas equivocadas dos consumidores/clientes: isso pode ocorrer quando há uma comunicação inadequada ou enganosa da organização. Os clientes podem ter uma percepção distorcida do serviço, o que leva a uma experiência insatisfatória quando suas expectativas não são atendidas. A experiência atual não atende às expectativas e à jornada do cliente: às vezes, o serviço pode não ser projetado de forma a atender ao fluxo natural da jornada do cliente. Isso pode criar atritos e tornar a experiência geral do cliente insatisfatória. Ao usar um service blueprint, as organizações podem identificar essas falhas potenciais e trabalhar para resolvê-las. Isso pode envolver a reformulação do serviço, a educação dos clientes sobre o que esperar, a melhoria da formação dos funcionários ou a alteração da forma como o serviço é comunicado aos clientes. Ao fazer isso, o service blueprint ajuda a melhorar a qualidade do serviço, a satisfação do cliente e, em última análise, o sucesso da organização. 3.2 VANTAGENS DOS SERVICE BLUEPRINTS Os service blueprints trazem uma série de vantagens importantes para qualquer organização que busca otimizar sua entrega de serviços e aprimorar a experiência geral do cliente. Aqui estão algumas dessas vantagens, juntamente com exemplos para ilustrá-las: Visão geral do serviço: ao criar um blueprint, obtemos uma visão abrangente de todo o serviço, o que nos permite mapear e identificar possíveis falhas na jornada do cliente. Por exemplo, se estivermos operando um restaurante, um blueprint pode nos ajudar a identificar se os pedidos estão demorando muito para chegar à mesa do cliente devido a um gargalo na cozinha. Melhoria da experiência do cliente e do funcionário: com a comparação da jornada atual do cliente com uma jornada ideal, podemos entender e abordar áreas de melhoria, não apenas para o cliente, mas também para os funcionários. Isso ajuda a alinhar todas as expectativas e a otimizar a entrega do serviço. Por exemplo, em uma empresa de call center, um blueprint pode revelar que os funcionários estão demorando muito para resolver as consultas dos clientes porque estão usando sistemas desatualizados, afetando a satisfação do cliente e do funcionário. Aumento da eficiência: ao identificar pontos de melhoria no serviço, um blueprint também pode revelar oportunidades para aumentar a eficiência operacional. Isso pode ajudar a melhorar a 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 12/30 comunicação entre diferentes departamentos ou equipes, garantindo uma entrega de serviço mais suave e eficaz. Por exemplo, em uma clínica médica, um blueprint pode mostrar que os pacientes estão esperando muito tempo entre a triagem e a consulta porque a comunicação entre a recepção e os médicos não está eficiente. Redução de custos: além de melhorar a eficiência, um blueprint também pode revelar áreas onde recursos podem ser economizados sem comprometer a qualidade do serviço. Isso pode ajudar a empresa a gerenciar seus recursos de forma mais eficaz e a reduzir custos. Por exemplo, em uma loja de varejo, um blueprint pode indicar que o pessoal está sendo subutilizado durante certos horários do dia, sugerindo que a programação dos funcionários pode ser ajustada para economizar em custos de mão de obra. Melhoria da conformidade: por fim, um blueprint pode ajudar a garantir que o serviço esteja em conformidade com todas as regulamentações aplicáveis. Isso pode reduzir o risco de violações regulatórias e suas consequências associadas, como multas ou danos à reputação. Por exemplo, em uma instituição financeira, um blueprint pode mostrar se todos os processos de verificação de identidade e de combate à lavagem de dinheiro estão sendo seguidos em todas as etapas da jornada do cliente. 3.3 QUAIS SÃO OS BENEFÍCIOS DO SERVICE BLUEPRINT? Os service blueprints proporcionam diversos benefícios vitais para as organizações que buscam otimizar a entrega de serviços. Essas ferramentas visuais ajudam a ilustrar os processos operacionais, destacando possíveis gargalos, redundâncias e ineficiências. Vamos explorar três dos principais benefícios do uso do service blueprint: Exposição das ineficiências dos processos: assim como uma fotografia de alta resolução revela cada detalhe de uma cena, um service blueprint detalhado fornece uma visão clara e abrangente dos processos dentro da empresa. Essa visão clara pode revelar onde e por que os atrasos, erros ou outras ineficiências estão ocorrendo. Por exemplo, se um call center está experimentando tempos de espera longos, um service blueprintpode mostrar se o problema está na distribuição das chamadas, no tempo de resposta dos atendentes ou em algum outro lugar do processo. Oportunidades de otimização: o service blueprint não apenas expõe ineficiências, mas também pode revelar redundâncias, em que tarefas ou processos estão sendo repetidos sem necessidade. Removendo essas redundâncias, é possível economizar tempo e energia dos 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 13/30 colaboradores, melhorar a experiência do cliente e diminuir o risco de informações inconsistentes. Por exemplo, se uma loja on-line está pedindo aos clientes para inserirem suas informações de envio várias vezes durante o processo de checkout, um service blueprint pode identificar essa redundância e sugerir uma otimização. Melhoria na visão geral do serviço: por último, mas não menos importante, um service blueprint proporciona uma visão panorâmica de todo o serviço e seus processos inter-relacionados. Isso permite que todas as áreas envolvidas entendam o fluxo completo do serviço, identifiquem pontos de melhoria e colaborem de forma mais eficaz para melhorar o sistema como um todo. Em muitas organizações, os departamentos podem estar concentrados apenas em suas próprias atividades, perdendo a visão do quadro geral. O service blueprint ajuda a garantir que todas as partes do sistema estejam funcionando harmoniosamente para uma entrega de serviço eficiente e de alta qualidade. 3.4 ELEMENTOS ESSENCIAIS Os service blueprints são compostos por elementos fundamentais que mapeiam a jornada do usuário e o funcionamento interno de um serviço. Esses elementos essenciais são apresentados a seguir. Figura 1 – Exemplo de diagrama de service blueprint 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 14/30 Fonte: NN/G. Ações do cliente/usuário: essas são as etapas, escolhas e interações que os clientes ou usuários realizam ao longo da jornada do serviço. Pode incluir tudo, desde abrir um aplicativo até falar com um atendente de serviço ao cliente. Ações de frontstage: estas são as ações que ocorrem diretamente entre o usuário final e o provedor do serviço. Elas podem ser interações humano-humano (por exemplo, um cliente conversando com um atendente de loja) ou interações humano-máquina (por exemplo, um usuário navegando em um site ou aplicativo). Atividades de bastidores (backstage): estas são as atividades que acontecem fora do campo de visão do usuário final, mas que são cruciais para a entrega do serviço. Isso pode incluir coisas como gestão de estoque, manutenção de sistemas de TI ou coordenação de logística. Processos de suporte: são as operações e interações que fornecem suporte aos colaboradores para que eles possam entregar o serviço ao usuário final. Isso pode variar desde o treinamento de funcionários até o suporte técnico interno. 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 15/30 O service blueprint também inclui algumas linhas importantes de separação para diferenciar entre diferentes níveis de interação e visibilidade: Linha da interação: representa as interações diretas entre o cliente e a organização. Linha da visibilidade: separa as atividades visíveis ao cliente (frontstage) das atividades invisíveis para ele (backstage). Por padrão, as atividades de frontstage ficam acima da linha e as de backstage ficam abaixo dela. Linha da interação interna: separa os funcionários que têm contato direto com o cliente daqueles que não têm interação direta ou oferecem suporte ao cliente. Finalmente, o service blueprint deve incluir evidências de serviço. Estas são representações tangíveis ou intangíveis dos elementos que são utilizados nos processos e que dão suporte para que o serviço aconteça. Isso pode incluir tudo, desde uma fatura ou recibo até uma interface de usuário de um aplicativo. As evidências de serviço podem estar tanto no frontstage (como um recibo entregue a um cliente) quanto no backstage (como um sistema de gerenciamento de pedidos usado pelos funcionários). Isso destaca o fato de que cada aspecto de um serviço, visível ou não ao cliente, contribui para a experiência geral do serviço. TEMA 4 – MODELO ATÔMICO O design atômico, uma metodologia de criação de sistemas de design proposta por Brad Frost, baseia-se em componentes menores e gerenciáveis que são combinados para formar estruturas mais complexas, como mostra a Figura 2. Essa abordagem oferece uma maneira eficiente e flexível de construir sistemas de design coesos, escaláveis e consistentes. Figura 2 – Componentes do modelo atômico Fonte: Fung, 2023. 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 16/30 Para entender melhor o design atômico e sua aplicabilidade, vamos usar o Instagram como exemplo. Átomos: no contexto do design atômico, os átomos representam os elementos visuais mais básicos, como botões, ícones, campos de texto, cores e tipografia. No Instagram, por exemplo, um átomo poderia ser o botão de curtir, o ícone do Direct ou a fonte usada para os textos, exemplos apresentados na Figura 3. Figura 3 – Exemplos de botões encontrados no Instagram Fonte: Elaborado por Fung, 2023. Moléculas: as moléculas são formadas pela combinação de vários átomos para criar componentes mais complexos. A barra de navegação inferior do Instagram, que inclui vários ícones (átomos), serve como exemplo de uma molécula, conforme Figura 4. Figura 4 – Barra inferior de navegação de um feed do Instagram Fonte: Elaborado por Fung, 2023, com base em Instagram, [S.d.]. 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 17/30 Organismos: os organismos são conjuntos de moléculas que funcionam juntas para formar um componente funcional maior do design. A tela de perfil do Instagram, que inclui várias moléculas (como a foto do perfil, o nome de usuário, a barra de navegação e o feed de fotos), pode ser considerada um organismo, visualizado na Figura 5. Figura 5 – Exemplo de tela de perfil do Instagram Fonte: Elaborado por Fung, 2023, com base em Instagram, [S.d.]. Figura 6 – Exemplo de modelo de feed do Instagram 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 18/30 Fonte: Elaborado por Fung, 2023, com base em Instagram, [S.d.]. Modelos (templates): modelos são esqueletos das páginas onde os organismos são organizados em um layout, formando a estrutura final do design. O modelo não contém conteúdo real, mas delineia a estrutura na qual o conteúdo será inserido. No Instagram, um modelo poderia ser a estrutura básica de uma postagem no feed, com espaços reservados para a foto, o nome de usuário, os ícones de curtir/comentar/compartilhar e a caixa de comentários, exemplificado na Figura 6. Páginas: as páginas são a última etapa do design atômico, onde o modelo é preenchido com conteúdo real. Por exemplo, uma postagem individual no feed do Instagram é uma página, pois contém uma foto específica, o nome de usuário da pessoa que a postou, curtidas, comentários e assim por diante. Figura 7 – Exemplos dos componentes de um modelo atômico aplicado ao Instagram 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 19/30 Fonte: Fung, 2023. O design atômico, sendo um processo iterativo, permite a revisão e o ajuste do design conforme necessário. Após definir todos os elementos, é possível começar a testar, revisar e validar o design, aprimorando e adaptando-o continuamente para atender às necessidades do projeto. O design atômico, concebido por Brad Frost, é uma abordagem altamente eficiente e flexível que auxilia na manutenção da consistência visual e funcional em todo o sistema de design. A capacidade de reutilizar componentes existentes economiza tempo e recursos, tornando o design atômico uma escolha popular entre designers e desenvolvedores. 4.1 VANTAGENS DO MODELO ATÔMICO O design atômico é um sistema fundamental para impulsionar a organização em um projeto. Suaadoção conduz a equipe a estabelecer padrões para cada elemento envolvido, culminando em um design sistemático mais coeso e harmonizado. Essa metodologia favorece uma aceleração no ritmo de desenvolvimento. O motivo reside na visão de que os elementos são interconectados e complementares. Isso facilita a realização de ajustes, mitigando a necessidade de retrabalho e economizando tempo precioso. O design atômico também atua como uma ponte, estreitando as relações entre as equipes de desenvolvimento e design. A implementação dessa abordagem requer colaboração e comunicação eficaz, o que minimiza desentendimentos e divergências de opiniões, alinhando todos em direção a um objetivo comum. 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 20/30 A prototipação é outra fase que se beneficia grandemente do design atômico. Com uma definição clara dos elementos desde o início, a criação e os testes dos protótipos tornam-se tarefas menos árduas. Além disso, se a necessidade de alterações surgir durante as pesquisas, o Atomic Design permite a reorganização ou modificação dos itens de forma prática e eficiente, antes da construção do produto final. 4.2 DESVANTAGENS DO MODELO ATÔMICO Embora o design atômico ofereça benefícios substanciais, também existem desafios potenciais na sua aplicação. Um desses desafios pode ser reestruturar a equipe de acordo com o atomic design, especialmente ao integrá-lo em produtos já em desenvolvimento. Uma questão frequentemente levantada por alguns profissionais é a discordância gerada pela falta de alinhamento. Isso pode não ser um problema intrínseco à metodologia, mas sim uma consequência da maneira como ela é implementada. Se o design atômico não for adequadamente comunicado e documentado entre todos os membros da equipe, ele pode, paradoxalmente, gerar mais conflitos do que soluções. Ainda nesta linha, algumas equipes podem encontrar dificuldades em classificar determinados elementos dentro dos grupos definidos pelo design atômico (átomos, moléculas, organismos, templates ou páginas). Nesse aspecto, o crucial é estabelecer a classificação de um elemento em consonância com os objetivos da equipe e garantir que todos estejam a par dessa decisão. O design atômico é um processo que precede o desenvolvimento. Em projetos menos complexos ou com prazos apertados, a implementação desta metodologia pode ser contraproducente e acabar por retardar a criação do produto. Portanto, é imprescindível estar em sintonia com todas as partes envolvidas para avaliar a adequação e viabilidade do design atômico para cada projeto. Saiba mais Curiosidades sobre Brad Frost Brad Frost é um respeitado designer de UX e autor baseado em Chicago. É mais conhecido como o criador do atomic design, uma metodologia de design de sistemas que organiza os elementos visuais de um sistema em blocos de construção menores e mais gerenciáveis. Essa 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 21/30 abordagem ao design tem sido influente na comunidade de UX, oferecendo uma maneira estruturada e eficiente de criar interfaces de usuário consistentes e reutilizáveis. Antes de se tornar uma figura central no campo do design de sistemas, Frost trabalhou como designer web e desenvolvedor front-end em várias agências digitais. Suas contribuições ao design responsivo e ao design de sistemas são profundas e ele é conhecido por sua abordagem cuidadosa e minuciosa. Como um frequente palestrante em conferências e eventos, Frost compartilha suas ideias e metodologias com a comunidade mais ampla de design. Ele é o autor de vários livros, incluindo Atomic Design e Designing interfaces, que são referências no campo do design de UX. Frost também é o fundador de um site próprio , no qual disponibiliza artigos, tutoriais e outros recursos sobre design de UX. Ele é coautor do livro The web standards creativity, uma compilação de técnicas inovadoras para designers e desenvolvedores web. Além disso, Frost é o autor de This is responsive, um recurso on-line que fornece padrões, recursos e notícias sobre design responsivo. Brad Frost é um membro ativo da comunidade de design, e seu trabalho foi reconhecido por organizações como AIGA, Adobe e Nielsen Norman Group. Ele recebeu vários prêmios por seu trabalho, que tem sido destaque em publicações como Wired, Fast Company e The New York Times. Brad Frost é um designer talentoso e experiente que fez contribuições significativas para o campo do design de UX. Ele continua a ser um recurso valioso para designers e desenvolvedores ao redor do mundo, e seu trabalho na criação do atomic design está ajudando a melhorar a experiência do usuário para todos. TEMA 5 – DESIGN SPRINT O design sprint é um processo inovador desenvolvido por Jake Knapp e a equipe do Google Ventures, que permite a empresas, startups e equipes solucionarem problemas complexos e desenvolverem novas ideias em um curto período de tempo — geralmente cinco dias, também [2] 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 22/30 conhecido como sprint. O objetivo desse método é projetar, prototipar e testar ideias de produtos ou serviços de maneira rápida e eficaz. Figura 8 – Atividades desenvolvidas por dia do design sprint Fonte: Medium, 2017. Algumas das vantagens do design sprint: ajuda as equipes a resolverem problemas rapidamente e eficientemente; gera ideias inovadoras e eficientes para novos produtos e serviços; é envolvente e incentiva a colaboração; pode ser usado por equipes de todos os tamanhos. O processo de design sprint é estruturado em cinco etapas que ocorrem durante uma semana: 1. Entendimento ou mapeamento e escolha do alvo: no primeiro dia, a equipe se dedica a entender o problema em mãos, mapear o processo ou o produto e escolher um elemento específico para focar. Aqui, é importante definir o desafio que será enfrentado e compreender o objetivo a longo prazo. “O que queremos no final deste sprint?” e “se lançarmos este produto, quais são os possíveis problemas?” são perguntas essenciais a serem respondidas. A equipe cria um mapa da jornada do usuário, com a ajuda de especialistas da área, transformando o problema em uma oportunidade. 2. Remix ou esboço: no segundo dia, são criadas soluções potenciais para o problema escolhido. Cada membro da equipe desenha soluções individualmente para garantir uma variedade de ideias. Esse é o momento da ideação, em que a equipe busca referências de mercado e utiliza técnicas de brainstorming, como o Crazy 8s, para gerar ideias inovadoras. 3. Decisão: no terceiro dia, decide-se qual dessas soluções será prototipada. As soluções são avaliadas e votadas pela equipe. Aqui, todos os sketches das soluções são apresentados e os 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 23/30 pontos mais interessantes ou o sketch inteiro mais votado é escolhido para prosseguir. É o decisor quem faz a escolha final. 4. Protótipo: o quarto dia é dedicado à transformação da solução escolhida em um protótipo realista. A equipe desenvolve um storyboard detalhado com fluxos de usuário e desenha todas as telas da solução. 5. Teste de usabilidade: no último dia, o protótipo é testado com usuários reais. A equipe observa como os usuários interagem com o protótipo para aprender mais sobre o que funciona e o que não funciona. Essa etapa é dividida em duas: uma entrevista inicial para entender o usuário e seu contexto, seguida do teste do protótipo em si. Todo o processo de teste é compartilhado com a equipe para que todos possam analisar as interações dos usuários. O design sprint é eficaz porque permite que as equipes aprendam rapidamente, em vez de gastarem semanas ou meses desenvolvendo um produto ou serviço completo, apenas para descobrir que ele não atende às necessidades dos usuários. Entre suas vantagens, destacam-se a resolução rápida de problemas, a geração de ideias inovadoras, o incentivo à colaboraçãoe a possibilidade de testar soluções com usuários e obter feedback em tempo real. Para realizar um design sprint, é necessário ter um desafio significativo, uma equipe de colaboradores multidisciplinar, um decisor entre os colaboradores da equipe e materiais para a equipe, como flipcharts, lousas, post-its, canetas e papel. Além disso, é importante lembrar que o design sprint é um processo iterativo. Ele pode ser repetido várias vezes até que todos os ajustes necessários sejam feitos, permitindo que ideias sejam refinadas e testadas com baixo custo. Um exemplo real do uso do design sprint é o da Slack , uma ferramenta de comunicação empresarial. Em 2015, a equipe da Slack estava lutando para desenvolver uma nova funcionalidade chamada Post. Eles sabiam que queriam criar um meio para os usuários compartilharem mensagens longas, mas não tinham certeza de como essa funcionalidade deveria funcionar. Eles decidiram usar um design sprint para resolver o problema. Ao final do sprint, eles tinham um protótipo funcional da funcionalidade Post que foi capaz de testar com os usuários. O feedback dos usuários foi incorporado na versão final do Post, que é uma das funcionalidades mais populares da Slack. A metodologia design sprint é poderosa e permite às equipes desenvolverem e validarem ideias rapidamente, minimizando os riscos e o tempo de desenvolvimento. Ela estimula a colaboração, a [3] 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 24/30 inovação e a resolução eficiente de problemas, tornando-se uma ferramenta valiosa para equipes de todos os tamanhos. 5.1 DESENVOLVENDO O DESIGN SPRINT O design sprint é uma metodologia ágil de cinco dias, estrategicamente estruturada, que orienta equipes através de uma jornada de inovação para resolver desafios significativos. Cada dia da semana é cuidadosamente planejado para cumprir uma etapa específica do processo. Aqui está uma visão geral de como essa semana irá se desenvolver: 1º dia: desenvolvendo o design sprint O primeiro dia do design sprint é dedicado à compreensão do problema, ao entendimento do negócio e ao nivelamento do conhecimento entre todos os participantes. O objetivo a longo prazo é definido através de perguntas como “o que queremos alcançar ao final deste sprint?” e “se lançarmos este produto, quais são os possíveis desafios?”. A jornada do usuário é mapeada e, com esse mapa, a equipe consegue visualizar os passos que o usuário percorre para atingir seu objetivo. A fase “Ask the Experts” segue, em que especialistas na área são convidados para entrevistas, trazendo perspectivas e conhecimentos valiosos. A análise destas entrevistas, juntamente com a revisão do mapa, permite à equipe transformar o problema em uma oportunidade. Com o desafio compreendido, inicia-se a fase “How Might We” (Como podemos), em que todos os possíveis caminhos para resolver o problema são levantados e votados. Neste ponto, o voto do especialista tem mais peso, ajudando a definir as principais estratégias. Os “How Might We” são anotados em post-its e colocados no mapa, indicando os pontos-chave do sprint. Ao final do dia, o foco é definido do ponto de vista do usuário, assim como os participantes que realizarão o teste de usabilidade. 2º dia: desenvolvendo o design sprint No segundo dia, denominado Remix, a equipe busca referências de mercado que possam ajudar a solucionar o problema. Esse é o dia da ideação, em que a equipe faz brainstorming e utiliza a 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 25/30 técnica Crazy 8s para gerar ideias – não necessariamente soluções – que podem contribuir para resolver o problema. 3º dia: desenvolvendo o design sprint No terceiro dia, os esboços (sketches) desenvolvidos no dia anterior são expostos para votação. A equipe pode votar na história inteira ou em partes específicas das ideias. As ideias mais votadas são então transformadas em um storyboard, uma história visual da solução proposta. O decisor (geralmente o stakeholder ou o proprietário do produto) analisa os votos e decide qual(quais) ideia(s) seguir. A partir daí, a equipe desenvolve o storyboard, que detalha o fluxo do usuário e as telas individuais da solução, garantindo que a ideia é consistente e não possui lacunas. 4º dia: desenvolvendo o design sprint O quarto dia é dedicado à criação do protótipo de alta fidelidade. Todas as ideias e soluções discutidas e aprovadas nos dias anteriores são integradas nesse protótipo. O cliente pode participar neste dia, contribuindo para o desenvolvimento do protótipo. Paralelamente, a equipe realiza o recrutamento dos usuários para o teste de usabilidade e desenvolve o questionário que será utilizado para testar as hipóteses. 5º dia: desenvolvendo o design sprint O último dia do design sprint é dedicado ao teste de usabilidade. O teste é dividido em duas partes: uma entrevista contextual para entender a rotina e o contexto do usuário, e o teste do protótipo. É importante esclarecer para os usuários que eles testarão um protótipo, e não um produto final. Os resultados do teste são compartilhados com toda a equipe para análise. Se houver um erro que ocorra com todos os testadores, é recomendado fazer a correção e refazer o teste com todos novamente, garantindo a validade dos resultados. Lembre-se: o design sprint é um processo flexível e essas etapas podem variar dependendo das necessidades específicas do projeto ou da equipe. Exemplo de um design sprint de cinco dias aplicado ao desenvolvimento de um aplicativo de delivery de comida 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 26/30 • 1º dia: entendimento e definição do desafio O problema identificado é a dificuldade dos usuários em encontrar opções de comida saudável na área local deles. Após a discussão em grupo, definimos o objetivo a longo prazo: “Criar um aplicativo que facilite o encontro de opções de comida saudável local”. Ouvimos especialistas em alimentação saudável, nutrição e delivery de alimentos. Depois de mapear a jornada do usuário e revisá-la com base nas entrevistas dos especialistas, identificamos oportunidades e desafios. • 2º dia: esboçando soluções No segundo dia, realizamos uma sessão de brainstorming para gerar ideias. Referências de aplicativos similares e técnicas como Crazy 8s foram utilizadas para criar uma variedade de soluções potenciais. Os esboços de ideias incluíram opções de filtragem personalizadas, programas de recompensa de saúde e parcerias com nutricionistas e restaurantes locais. • 3º dia: decisão e storyboard Revisamos todos os esboços e votamos nas melhores ideias. Decidimos focar em um sistema de filtragem robusto que permite aos usuários encontrar refeições saudáveis baseadas em suas preferências dietéticas, e um programa de recompensas que oferece incentivos para escolhas saudáveis. Depois de decidir o caminho a seguir, criamos um storyboard detalhado mostrando como o usuário interagiria com essas características. • 4º dia: prototipação Utilizando ferramentas de design digital, criamos um protótipo de alta fidelidade do aplicativo, com base no storyboard. O protótipo incluiu elementos-chave como a tela inicial, a interface de busca, as páginas de refeições e o sistema de recompensas. Recrutamos usuários- alvo para testar o protótipo no dia seguinte. • 5º dia: teste de usabilidade Os usuários participaram de uma sessão de teste de usabilidade, durante a qual interagiram com o protótipo. Pedimos que completassem tarefas específicas, como encontrar uma refeição vegetariana na área local ou resgatar pontos de recompensa. Observamos suas interações e 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 27/30 recolhemos feedback sobre a usabilidade e funcionalidade do aplicativo. Ao final do dia, tínhamos informações valiosas para informar a próxima iteração do design. 5.2 RESULTADOS O design sprint é uma poderosa metodologia que permite validar uma ideiadiretamente com os usuários finais em um curto período de tempo. Com a utilização de protótipos, é possível experimentar, avaliar e aperfeiçoar ideias, gerando novas versões para testes de maneira eficiente e econômica, em comparação com o desenvolvimento integral de um produto. Esse processo é iterativo, o que significa que pode ser repetido várias vezes, até que todos os ajustes necessários tenham sido feitos e uma solução satisfatória tenha sido encontrada. Essa iteração permite que as equipes aprendam rapidamente e integrem feedback valioso dos usuários, promovendo melhorias constantes no design do produto. Além disso, o design sprint promove a colaboração e o alinhamento entre diferentes partes interessadas, desde designers e desenvolvedores até executivos e usuários. Ele desmistifica o processo de tomada de decisão no design, tornando-o transparente e participativo. Ao final de um design sprint, as equipes não só têm um protótipo testado, mas também um melhor entendimento das necessidades do usuário e uma direção clara para o desenvolvimento futuro do produto. Deve-se notar, entretanto, que o design sprint não é uma solução definitiva para todos os problemas. Ele é mais eficaz quando usado para responder a perguntas críticas de negócios e reduzir incertezas, oferecendo um ponto de partida sólido para o desenvolvimento de um produto ou serviço. Saiba mais Curiosidades sobre Jake Knapp Jake Knapp é o criador do design sprint, um processo de cinco dias para resolver problemas e testar novas ideias rapidamente. Antes de criar o design sprint, Knapp passou dez anos trabalhando no Google, onde atuou em produtos como o Gmail e o Google Hangouts. 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 28/30 Enquanto estava no Google, Knapp percebeu que as equipes de projeto frequentemente gastavam muito tempo em reuniões de planejamento e discussão sem chegar a um produto final. Para resolver esse problema, ele começou a experimentar diferentes formas de agilizar o processo de desenvolvimento de produtos. Isso o levou à criação do design sprint, um processo estruturado de cinco dias que combina métodos de estratégia de negócios, inovação, ciência do comportamento e design thinking. Knapp desenvolveu e refinou o processo do design sprint enquanto trabalhava no Google Ventures, o braço de capital de risco do Google. No Google Ventures, ele e sua equipe realizaram mais de 150 sprints com empresas do portfólio, como Nest, Slack, 23andMe e Uber, entre outros. • Algumas curiosidades sobre o design sprint O design sprint foi inspirado por muitos métodos de trabalho diferentes, incluindo o design thinking de Stanford, a estratégia de negócios de Harvard e o movimento de inicialização enxuta de Eric Ries. O livro de Knapp, Sprint: how to solve big problems and test new ideas in just five days, é um guia detalhado sobre como conduzir um design sprint. Foi publicado em 2016 e tem sido usado como uma referência valiosa por muitas organizações. Embora o processo original do design sprint seja de cinco dias, Knapp e sua equipe também desenvolveram uma versão condensada de dois dias para equipes com restrições de tempo. O design sprint se tornou tão popular que agora é usado por muitas empresas fora do ecossistema do Google, incluindo Lego, McKinsey e a BBC. O próprio Jake Knapp descreve o design sprint como “o maior truque” em seu livro, pois permite que as empresas evitem cometer erros caros e demorados ao testar uma ideia ou produto em um ambiente seguro e controlado. FINALIZANDO Ao longo deste estudo, exploramos os aspectos cruciais do design de experiência do usuário (UX), design de interface do usuário (UI), prototipação, diagramas de serviços (service blueprints), 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 29/30 modelo atômico e design sprint. Cada um desses elementos contribui de maneira única para a criação de produtos digitais bem-sucedidos e experiências de usuário memoráveis. Por meio do design de UX e UI, nós nos esforçamos para compreender as necessidades, desejos e comportamentos dos usuários, criando interfaces intuitivas e atraentes que facilitam a interação entre o usuário e o produto digital. A prototipação e o design de serviço nos permitem mapear a jornada do usuário e visualizar a interação de todos os componentes do sistema, revelando pontos de contato críticos e áreas de melhoria. Ao implementar o modelo atômico, introduzimos uma estrutura escalável e flexível para o design, que considera cada elemento de interface como parte de um todo coeso, permitindo uma manutenção mais eficiente e design consistente. Finalmente, por meio do design sprint, tivemos uma visão de como condensar o processo de design em um período intensivo, porém produtivo, que permite validar ideias diretamente com os usuários finais. Essa abordagem rápida e iterativa destaca a importância do aprendizado contínuo, do feedback do usuário e da melhoria constante no ciclo de vida do design de produtos. Ao combinar esses elementos, somos capazes de criar produtos digitais que não apenas atendem às necessidades funcionais dos usuários, mas também proporcionam experiências de uso enriquecedoras e agradáveis. Lembre-se: o design não é apenas uma questão de estética, mas também de função e experiência. E, no centro de tudo, estão os usuários, com suas necessidades, suas expectativas e suas experiências. REFERÊNCIAS BAXTER, M. Projeto de produto: guia prático para o design de novos produtos. São Paulo: Edgard Blucher, 2008. CHANDLER, C.; UNGER, R. O guia para projetar UX: a experiência do usuário (UX) para projetistas de conteúdo digital, aplicações e websites. 1. ed. Starlin Alta Consult, 2009. GARRET, J. J. The Elements of user experience: user centered design for the web and beyond. New Readers Press, 2011 13/03/2024, 01:50 UNINTER https://univirtus.uninter.com/ava/web/roa/ 30/30 JOHNSON, S. Cultura da interface: como o computador transforma nossa maneira de criar e comunicar. Rio de Janeiro: Zahar, 2001. NORMAN, D. Emotional design: why we love (or hate) everyday things. New York: Basic Books, 2004. _____. The design of everyday things. New York, Basic Books, 1988. PREECE, J.; ROGER, Y.; SHARP, H. Design de interação. 3. ed. Porto Alegre: Bookman Companhia ED, 2013. ROGERS, Y.; SHARP, H.; PREECE, J. Design de interação: além da interação homem-computador. 3. ed. Bookman, 2013. SANTOS, R. Usabilidade de interfaces e arquitetura da informação: alguns aspectos da organização de conteúdo para o meio digital. In: Anais Abergo, Gramado, 2000. SOUSA, J. O. design sprint (Resumo). Medium, 7 fev. 2017. Disponível em: <https://medium.com/gobee/design-sprint-resumo-3a5b634bd311>. Acesso em: 2 ago. 2023. Disponível em: <https://www.iainstitute.org/what-is-ia>. Acesso em: 2 ago. 2023. Disponível em: <https://bradfrost.com>. Acesso em: 2 ago. 2023. Disponível em: <https://slack.com>. Acesso em: 2 ago. 2023. [1] [2] [3] 13/03/2024, 01:48 UNINTER https://univirtus.uninter.com/ava/web/roa/ 1/13 FUNDAMENTOS DE DESIGN DE SISTEMAS AULA 3 13/03/2024, 01:48 UNINTER https://univirtus.uninter.com/ava/web/roa/ 2/13 Prof. Vinicius Pozzobon Borin CONVERSA INICIAL O objetivo desta etapa é conhecer sobre o Git e como ele auxilia no controle de versionamento de arquivos. Veremos: O que é Git e versionamento de arquivos; Repositórios Git; Terminologia do Git; Comandos Git. TEMA 1 – GIT O controle de versão é uma prática essencial para documentos importantes e, também, para qualquer projeto de software, e o Git é uma das ferramentas mais populares e amplamente utilizadas para esse propósito. Aliás, quem nunca precisou criar diversos arquivos diferentes para um mesmo trabalho e depois ficou perdido com tantas versões? Veja: Figura 1 – Diferentes versões de um mesmo arquivo Fonte: Borin, 2023. Aqui estão algumas das principais razõespelas quais o Git é importante no desenvolvimento de software: 13/03/2024, 01:48 UNINTER https://univirtus.uninter.com/ava/web/roa/ 3/13 Rastreabilidade: o Git permite que você mantenha uma linha cronológica completa de todas as alterações feitas em seu código. Isso significa que você pode facilmente reverter qualquer alteração que possa ter causado problemas ou simplesmente verificar como o código evoluiu ao longo do tempo; Colaboração: o Git é projetado para trabalhar com múltiplos desenvolvedores em um projeto. Ele permite que várias pessoas trabalhem no mesmo código e mesclem as suas contribuições sem causar conflitos; Backup: o Git mantém uma cópia de todas as versões do seu código, o que significa que você sempre pode recuperar uma versão anterior se algo der errado. Isso também significa que você não precisa se preocupar em perder o seu trabalho, mesmo se o seu computador falhar; Integração contínua: o Git é compatível com muitas ferramentas de integração contínua, o que significa que você pode automatizar vários processos, como compilação, testes e implantação; Comunidade: o Git é open source e tem uma comunidade muito ativa e vibrante. Isso significa que você pode obter ajuda com problemas e melhorias frequentes e novas funcionalidades. A ferramenta mais comum de Git é o Git SCM. Hoje pode ser baixada no link a seguir. Deixamos também outros links úteis: Download – <https://git-scm.com/> Windows, somente – <https://gitforwindows.org/> Guia prático – <https://rogerdudler.github.io/git-guide/index.pt_BR.html> Figura 2 – Ferramenta do Git https://git-scm.com/ https://git-scm.com/ https://git-scm.com/ https://gitforwindows.org/ https://gitforwindows.org/ https://gitforwindows.org/ https://rogerdudler.github.io/git-guide/index.pt_BR.html https://rogerdudler.github.io/git-guide/index.pt_BR.html https://rogerdudler.github.io/git-guide/index.pt_BR.html 13/03/2024, 01:48 UNINTER https://univirtus.uninter.com/ava/web/roa/ 4/13 Créditos: Postmodern Studio/Shutterstock. 1.1 REPOSITÓRIO GIT Um repositório Git é uma coleção centralizada de arquivos e diretórios que são controlados pelo Git. É o lugar onde todas as versões do seu código são armazenadas e gerenciadas. Cada repositório Git é único e representa um projeto individual. Um repositório Git mantém a história completa de todas as alterações feitas nos arquivos e diretórios em seu projeto. Isso permite que você reverta facilmente as alterações, compare versões diferentes e veja como o seu código evoluiu ao longo do tempo. TEMA 2 – CONFIGURANDO O GIT O Git é manipulado por meio de diferentes comandos. Lembra que no Linux nós aprendemos alguns comandos de terminal? Aqui aprenderemos comandos com o objetivo de trabalhar com o Git. Os comandos do Git são os mesmo para qualquer sistema operacional. 2.1 COMANDO GIT CONFIG O comando git config é usado para configurar as opções do Git e normalmente é o primeiro comando que damos após instalar o Git. Ele permite que você especifique informações sobre você 13/03/2024, 01:48 UNINTER https://univirtus.uninter.com/ava/web/roa/ 5/13 mesmo, como seu nome e endereço de e-mail, bem como opções de comportamento do Git, como a cor das saídas. Aqui estão alguns exemplos de como usar o comando git config: 1. Configurar o seu nome de usuário: $ git config --global user.name "Seu Nome" 2. Configurar o seu endereço de e-mail: $ git config --global user.email "seu.email@exemplo.com" 3. Exibir todas as configurações do Git: $ git config –list 2.2 COMANDO GIT INIT O comando git init é usado para inicializar um novo repositório Git em um diretório existente. Ao ser inicializado, ele cria uma pasta oculta chamada .git no diretório atual, que armazena todos os arquivos e informações necessárias para o Git gerenciar as versões do seu código. Aqui está um exemplo de como usar o comando git init: $ mkdir novo-projeto $ cd novo-projeto $ git init Inicializando um repositório Git vazio em /caminho/para/novo- projeto/.git/ Note que usamos, no exemplo acima, comandos do Linux também. Primeiro criamos uma pasta (mkdir), depois andamos até esta pasta (cd). Por fim, inicializamos o repositório. Após executar o comando git init, o diretório atual se torna um repositório Git e você pode começar a adicionar, fazer commit (conceituaremos isso em breve) e controlar as versões dos seus arquivos. Na Figura 3 e Figura 4, vemos um exemplo de pastas de um projeto de software contendo controle de versionamento Git. Na Figura 3, temos o projeto de um código em linguagem Python. Vemos, também, a pasta .git. Na Figura 4, entramos na pasta do Git para ver os arquivos dentro dela. 13/03/2024, 01:48 UNINTER https://univirtus.uninter.com/ava/web/roa/ 6/13 Figura 3 – Estrutura de pastas projeto com o Git Fonte: Borin, 2023. Figura 4 – Estrutura de pastas projeto com o Git Fonte: Borin, 2023. Na estrutura de arquivos da Figura 4 temos um arquivo relevante de ser mencionado, que é o HEAD. Ele serve para manter o histórico das alterações realizadas no projeto. TEMA 3 – TERMINOLOGIA GIT Vamos, agora, conhecer alguns termos bastante utilizados no meio Git. 3.1 BRANCHES (RAMIFICAÇÕES) Em Git, um branch é uma linha separada (ramificação) de desenvolvimento que permite a você trabalhar em vários recursos ou correções de bugs ao mesmo tempo, sem afetar o código principal da aplicação. Isso significa que você pode criar uma cópia separada da linha principal do código (conhecido como branch principal ou branch master) e fazer todas as alterações e experimentos nesse 13/03/2024, 01:48 UNINTER https://univirtus.uninter.com/ava/web/roa/ 7/13 novo branch sem afetar o código estável no branch principal. Quando você estiver satisfeito com as alterações, pode mesclar (merge) o branch de volta ao branch principal. Criar branches em Git é fácil e eficiente, o que permite a você experimentar novas ideias sem prejudicar o código principal, e ainda pode ser usado para dividir o trabalho em equipe em diferentes tarefas ou para manter diferentes versões do software. É uma das principais características do Git e um dos motivos pelos quais ele é tão popular entre desenvolvedores de software. Figura 5 – Esquema de ramificações e mesclagem 3.2 FLUXO DE TRABALHO O fluxo de trabalho básico no Git envolve três etapas principais: adicionar (add), cometer (commit) e enviar (push). Aqui está uma breve explicação de cada etapa: Add: esta etapa envolve preparar as alterações que você fez no código para serem incluídas em um commit. Você usa o comando git add para selecionar os arquivos ou partes dos arquivos que deseja incluir no próximo commit. É possível adicionar alterações aos arquivos aos poucos, antes de fazer o commit com todas as alterações juntas. Commit: esta etapa envolve registrar as alterações adicionadas em um repositório Git local. Todas as alterações são registradas no arquivo de HEAD. Você usa o comando git commit para criar um commit, que é uma entrada no histórico do repositório que descreve as alterações realizadas. Cada commit tem uma mensagem associada que explica o que foi alterado e por quê. Push: esta etapa envolve enviar as alterações do repositório local para um repositório remoto, como o GitHub. Você usa o comando git push para enviar seus commits para o repositório remoto, onde podem ser compartilhados com outras pessoas ou usados como backup. 13/03/2024, 01:48 UNINTER https://univirtus.uninter.com/ava/web/roa/ 8/13 Figura 6 – Fluxo de trabalho do Git Fonte: Borin, 2023. 3.3 COMANDO GIT ADD Aqui estão alguns exemplos de uso do comando git add: 1. Adicionar todos os arquivos: $ git add * 2. Adicionar um arquivo específico: $ git add file.txt 3. Adicionar uma pasta específica: $ git add folder/ 3.4 COMANDO GIT COMMIT Aqui estão alguns exemplos de uso do comando git commit: 1. Fazer um commit com uma mensagem padrão: $ git commit 2. Fazer um commit com uma mensagem personalizada: $ git commit -m "Adicionado nova funcionalidadeX" 13/03/2024, 01:48 UNINTER https://univirtus.uninter.com/ava/web/roa/ 9/13 Em todos os exemplos, o comando git commit registra as alterações adicionadas no repositório Git local. 3.5 COMANDO GIT PUSH Aqui estão alguns exemplos de uso do comando git push: 1. Enviar todos os branches locais para o repositório remoto: $ git push origin –all 2. Enviar um branch específico para o repositório remoto: $ git push origin nome-do-branch TEMA 4 – OUTROS COMANDOS GIT Existem outros comandos Git que precisam ser conhecidos para que tenhamos o melhor uso de todos os seus recursos e funcionalidades. Vejamos a seguir. 4.1 COMANDO GIT LOG O git log é um comando que exibe o histórico de commits de um repositório Git. Ele mostra uma lista de todos os commits realizados no repositório, incluindo informações sobre o autor, a data de commit, a mensagem de commit e a identificação única do commit (a hash). Vejamos alguns exemplos de como o git log pode ser usado: 1. Exibir o histórico de commit completo: $ git log 2. Exibir o histórico de commit para um determinado arquivo: $ git log <file> 3. Exibir o histórico de commit para um determinado período: $ git log --since=<YYYY-MM-DD> --until=<YYYY-MM-DD> 13/03/2024, 01:48 UNINTER https://univirtus.uninter.com/ava/web/roa/ 10/13 4.2 COMANDO GIT STATUS O git status é um comando que exibe o estado atual de um repositório Git. Ele mostra informações sobre arquivos que foram modificados, adicionados ou excluídos, bem como informações sobre quais arquivos estão sendo seguidos e quais ainda não foram realizados commit. Aqui estão alguns exemplos de como o git status pode ser usado: 1. Exibir o estado atual do repositório: $ git status 2. Exibir o estado atual dos arquivos de uma determinada branch: $ git status <branch> 4.3 COMANDO GIT RESET O git reset é um comando do Git que permite desfazer uma ou mais ações no seu repositório. Ele permite que você reverta uma operação específica, como um commit ou uma operação de merge, ou remove um arquivo do índice antes de realizar um commit. O git reset é útil quando você precisa desfazer alguma coisa que foi feita por engano ou quando precisa reajustar o histórico de seu repositório antes de prosseguir com o desenvolvimento. Existem três modos de operação do git reset: --soft, --mixed e --hard. Aqui estão alguns exemplos de uso do git reset: 1. Desfazer o último commit: $ git reset --soft HEAD^ 2. Remover um arquivo do índice: Para remover um arquivo do índice antes de realizar um commit, use o comando: $ git reset <nome-do-arquivo> É importante ter cuidado ao usar o comando git reset, pois ele pode remover permanentemente informações do seu repositório (se usar o modo hard). Por isso, é recomendável fazer backup dos seus dados antes de usar o git reset em modo --hard. 13/03/2024, 01:48 UNINTER https://univirtus.uninter.com/ava/web/roa/ 11/13 4.4 COMANDO GIT DIFF O comando git diff é um comando do Git que permite comparar duas versões de um ou mais arquivos para mostrar as diferenças entre eles. É útil para ver as alterações que você fez em seus arquivos antes de realizar um commit ou para comparar diferentes versões de um projeto. Aqui estão alguns exemplos de uso do git diff: 1. Comparar duas versões de um arquivo: $ git diff <hash-do-commit> <nome-do-arquivo> 2. Comparar dois commits: $ git diff <hash-do-commit1> <hash-do-commit2> 3. Ver as diferenças entre o repositório atual e a última versão enviada (push) para o repositório remoto: $ git diff origin/master O comando git diff é uma ferramenta poderosa para comparar versões de arquivos, e ajuda a garantir que você esteja fazendo as alterações corretas em seu projeto antes de realizar um commit. TEMA 5 – TRABALHANDO COM BRANCHES Vamos conhecer comandos para criação de ramificações em nossos projetos. 5.1 COMANDO GIT BRANCH O comando git branch é uma característica do Git que permite criar ramificações (branches) do seu projeto. Cada branch representa uma linha independente de desenvolvimento e permite que você trabalhe em diferentes versões do seu projeto ao mesmo tempo sem afetar a outra. Isso é útil quando você precisa corrigir um bug, implementar uma nova funcionalidade ou fazer uma alteração significativa em seu projeto sem interromper o trabalho principal. Aqui estão alguns exemplos de uso do git branch: 13/03/2024, 01:48 UNINTER https://univirtus.uninter.com/ava/web/roa/ 12/13 1. Para listarmos todas as branches existentes no projeto e checarmos em qual branch estamos, fazemos somente: $ git branch 2. Criar uma nova branch: $ git branch <nome-da-branch> 3. Excluir uma branch: $ git branch -d <nome-da-branch> 5.2 COMANDO GIT CHECKOUT O comando git checkout é um comando do Git que permite alternar entre branches, repositórios remotos ou versões de arquivos. Ele é usado para mudar o contexto do seu repositório local, permitindo que você trabalhe em diferentes versões do seu projeto sem interferir nas outras. Aqui estão alguns exemplos de uso do git checkout: 1. Mudar de branch: $ git checkout <nome-da-branch> 2. Criar uma nova branch e mudar para ela: $ git checkout -b <nome-da-branch> 3. Recuperar uma versão antiga de um arquivo: $ git checkout <hash-do-commit> <nome-do-arquivo> 4. Desfazer alterações em um arquivo: $ git checkout -- <nome-do-arquivo> FINALIZANDO 13/03/2024, 01:48 UNINTER https://univirtus.uninter.com/ava/web/roa/ 13/13 Em conclusão, Git é uma ferramenta incrivelmente poderosa e útil para o controle de versões de código. Ao dominar seus conceitos básicos, como o uso de repositórios, commits, branches e merges, você será capaz de trabalhar de maneira mais eficiente e colaborativa em projetos de software. Além disso, na grande comunidade de desenvolvedores que usam Git significa que você tem acesso a uma ampla variedade de recursos e ferramentas adicionais para aprimorar sua experiência de trabalho. Se você ainda não está familiarizado com Git, esperamos que esta etapa tenha fornecido uma base sólida para continuar seu aprendizado e uso desta poderosa ferramenta. REFERÊNCIAS CHACON, S.; STRAUB, B. Pro Git. 2. ed. [S.l.]: Editora Apress, [s.d.]. DOCUMENTAÇÃO oficial do Git. Git-scm, s.d. Disponível em: <https://git-scm.com/docs>. Acesso em: 23 fev. 2023. GIT. Guia prático. Roger Dudler, s.d. Disponível em: <https://rogerdudler.github.io/git- guide/index.pt_BR.html>. Acesso em: 23 fev. 2023. Fundamentos de Sistremas 1.pdf Fundamentos de Sistremas 2.pdf Fundamentos de Sistremas 4.pdf Fundamentos de Sistremas 5.pdf Fundamentos de Sistremas 6.pdf Fundamentos de Sistremas 3.pdf