Buscar

FUNDAMENTOS DE DESIGN DE SISTEMAS.

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 125 páginas

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 125 páginas

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 125 páginas

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Outros materiais