Baixe o app para aproveitar ainda mais
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 Arquitetura
Compartilhar