Buscar

DOC-20240314-WA0006.

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 140 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 140 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 140 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

FUNDAMENTOS DE
DESENVOLVIMENTO DE
SOFTWARES
AULA 1
 
 
 
 
 
 
 
 
Prof.ª Luciane Yanase Hirabara Kanashiro
SOFTWARE
CONVERSA INICIAL
Com certeza você já ouviu falar de software. Nós usamos algum software provavelmente todos
os dias. Se você utiliza um computador, a Smart TV ou um celular, então você utiliza software.
Mas mesmo utilizando-o todos os dias, saberia definir o que ele é? O que diferencia software de
sistema? Ou, ainda, o que o diferencia de um programa?
A seguir, veremos algumas definições que o auxiliará a responder às questões anteriores.
No tópico 1, veremos sobre software, sistemas e programas.
No tópico 2, veremos com mais detalhes os sistemas operacionais.
No tópico 3, veremos sobre algoritmos e linguagens.
No tópico 4, abordaremos sobre o jargão na área de TI.
No tópico 5, ainda, veremos o ciclo de vida do desenvolvimento de software, onde serão
abordadas diferentes metodologias que são frequentemente utilizadas.
TEMA 1 – SOFTWARE, PROGRAMAS E SISTEMAS
Com o advento da tecnologia e popularização da internet, os softwares, programas e sistemas
têm sido uma constante em nossa vida. Provavelmente você utiliza algum tipo de software todo dia.
Mas mesmo utilizando, você saberia definir o que ele é? Saberia diferenciar um software de um
programa?
Nesse tópico, veremos diversas definições que o ajudará a entender as diferenças conceituais
entre os termos software, programa e sistema.
1.1 SOFTWARE E PROGRAMAS
A seguir é dada uma definição técnica do que é um software. Observe que são vários conceitos
que se unem na definição dada por Pressman (2001):
Software consiste em:
instruções (programas de computador) que, quando executadas, fornecem características,
funções e desempenho desejados;
estruturas de dados que possibilitam aos programas manipular informações
adequadamente;
informação descritiva, tanto na forma impressa quanto na virtual, descrevendo a operação
e o uso dos programas.
Simplificando a definição anterior, podemos dizer que um software é um programa de
computador e toda a documentação associada a esse programa.
Mas o que é um programa? Como você definiria um programa de computador?
Uma definição conhecida e frequentemente utilizada por todos da área de TI é de que é uma
sequência de passos ou instruções definidas por um algoritmo.
Mas o que é um algoritmo? Aqui você pode assumir que este é como uma receita de bolo, um
tutorial. Posteriormente, em outro tópico, veremos um conceito mais aprofundado.
Um software tem ainda uma classificação, na realidade, ele pode ser classificado ou categorizado
de várias maneiras. Nesta etapa, utilizaremos uma adaptação da classificação dada por Marçula
(2009):
Software de sistema (básico):
sistemas operacionais;
software utilitário.
Software aplicativo.
1.2 SOFTWARE DE SISTEMA (BÁSICO)
Software básico consiste em uma coleção de programas para apoiar outros programas. Realiza as
tarefas de gerenciamento necessárias ao seu funcionamento. Temos nessa categoria os sistemas
operacionais e o software utilitário.
O sistema operacional é o software responsável pelo funcionamento geral dos sistemas de
computação. Sem ele os sistemas de computação praticamente não funcionariam. Como exemplo de
sistemas operacionais temos Windows, Unix, Linux e MacOS. A seguir são mostrados os ícones do
Windows, Android, ubuntu e MacOS, respectivamente na ordem citada.
Devido à importância, falaremos mais adiante e com mais detalhes sobre o Sistema Operacional.
Os softwares utilitários ou ferramentas de sistema são os que acompanham o sistema
operacional e o auxiliam nas suas tarefas (por exemplo, gerenciamento de dispositivos, mídias e
programas).
O software utilitário fornece ao usuário ferramentas para organizar os discos, verificar a
disponibilidade de memória e corrigir as falhas de processamento. Costumamos dizer que são
softwares úteis ao sistema operacional, ou seja, que trabalham em função do sistema operacional.
São exemplos de utilitários: antivírus, compactadores, emuladores, desfragmentadores,
formatadores, backup.
O antivírus é um programa que detecta e remove o vírus, que é um programa malicioso.
Emuladores são softwares que simulam, reproduzem um ambiente específico, por exemplo, o
VmWare que simula um computador.
Desfragmentadores eliminam a fragmentação de um sistema. O que é a fragmentação? Pense
quando salvamos um arquivo no computador/smartphone, e em um outro momento editamos,
fazemos algumas modificações naquele arquivo, as modificações não são salvas ao lado do
arquivo original. Pense em um armário com várias gavetas: o seu arquivo original está na gaveta
1 e a edição desse arquivo está na gaveta 20; isso ocasiona lentidão na leitura e na gravação. É
claro que a explicação técnica é mais complexa que essa abordada aqui, mas esse exemplo
serve para entender o que é fragmentação. A desfragmentação ajuda a juntar os arquivos e sua
edição próximos uns aos outros.
Formatadores e backup: a formatação apaga tudo e reinstala.
1.3 SOFTWARE APLICATIVO
O software aplicativo é também chamado apenas de aplicativo ou mais popularmente app.
Podemos dizer que é um software que realiza algum trabalho para o usuário, ou seja, são programas
que realizam tarefas específicas. Como exemplo temos as planilhas, o editor de texto, os navegadores
(browsers), o editor de imagem, entre outros.
A figura seguinte ilustra os ícones de vários softwares aplicativos.
TEMA 2 – SISTEMA OPERACIONAL
Um sistema pode ser definido como um conjunto de partes que se interagem para alcançar um
determinado objetivo.
O que diferencia software de um sistema é que este pode ser definido como um conjunto de
softwares que interage para alcançar um determinado objetivo.
O sistema operacional faz parte da categoria de software básico. Como visto anteriormente, o
software básico é aquele necessário para o funcionamento do hardware ou de parte dele. Sem dúvida,
sendo o software mais importante, devido às tarefas que desempenha, o sistema operacional é
responsável pela supervisão dos processos executados em um computador. O sistema operacional
gerencia todo o hardware e todo o software do computador e realiza a “comunicação” entre eles.
Ao se falar em processo, você pode relacionar com um programa em execução para melhor
entendimento. Embora a definição de programa e processos sejam diferentes, neste momento,
podemos fazer essa analogia.
Quando você abre o gerenciador de tarefas, você consegue ver vários programas, ou seja, vários
processos executando. O sistema operacional vai ser responsável pela execução/supervisão desses
processos. Além dos softwares, o SO gerencia o hardware, pois ele é responsável pela comunicação
entre o software e o hardware.
A figura seguinte apresenta o gerenciador de tarefas e mostra na aba Processos todos os
processos que estão abertos no computador.
Para abrir o gerenciador de tarefas no seu computador, você pode usar o atalho do teclado: CTRL
+ SHIFT + ESC, ou, ainda, digitar gerenciador de tarefas na barra de pesquisa do Windows. Também, é
possível usar CTRL + ALT +DEL e escolher a opção Gerenciador de Tarefas.
Figura 1 – Print do Gerenciador de Tarefas do Windows
Podemos, ainda, dizer que o sistema operacional é uma camada entre o aplicativo utilizado pelo
usuário e o hardware. Observe a próxima figura, a qual esquematiza essa representação: a camada de
hardware, aqui representada pelo computador, a placa de vídeo, placa mãe, HD, memórias, CPU e
periféricos. Veja que temos dois exemplos de SO – Windows e Linux – e alguns aplicativos, como o
Chrome, o Firefox e o Word.
Figura 2 – SO como camada intermediária entre usuário e hardware
Crédito: Iamnee/shutterstock.
O sistema operacional desempenha as seguintes funções:
facilita o uso do computador pelo usuário, tornando mais simples a utilização de seus recursos;
gerencia os recursos do computador; e
controla a execução de programas pela CPU.
Imagine se você não tivesse um sistemaoperacional instalado em seu computador, como faria
para utilizá-lo? Se não tiver o SO instalado, você não conseguiria instalar os aplicativos.
Observe que quando falamos em recursos, queremos dizer todo o hardware do computador e,
consequentemente, o software. O sistema operacional gerencia todo o hardware, que é a placa de
vídeo, placa de rede, memórias e os softwares instalados no computador. Quando você conecta um
mouse, um headset no seu computador, eles também serão gerenciados pelo sistema operacional.
Este, por sua vez, ainda controla a execução dos programas pela CPU. A CPU é o processador, é o
acrônimo de Central Process Unit. Todo programa que necessita da utilização da CPU é controlado
pelo SO.
2.1 SISTEMAS TRADUTORES
Como integrantes do sistema básico, embora não tenham sido citados anteriormente, temos os
sistemas tradutores, que são importantes para conhecermos, principalmente para quem irá trabalhar
com desenvolvimento de software.
Os sistemas tradutores convertem os programas escritos para um código em uma linguagem de
máquina, mais adequada para manipular bits.
Lembra dos códigos escritos nas linguagens de programação? Para que o computador entenda
esse código, é necessário que ele seja traduzido para uma linguagem de máquina. Lembre-se de que
o computador entende apenas bits.
A figura a seguir ilustra um tradutor. O código entra e o tradutor o traduz para uma linguagem
de máquina.
Figura 3 – Tradutor
Um programa escrito em linguagem de alto nível tem a necessidade de ser traduzido para a
linguagem de máquina para que o computador possa executá-lo.
Temos dois tipos de tradutores: os interpretadores e os compiladores. Então, todo programa
escrito em linguagem de alto nível, aqui, quando falamos em linguagem de alto nível, fazemos
referências às linguagens que utilizamos para desenvolvimento de apps (aplicativos).
Existem, portanto, linguagens interpretadas e compiladas.
A diferença é que nos interpretadores o código é interpretado linha por linha. Tome como
exemplo um intérprete. Pode ser o intérprete de libras, ou outro qualquer, que, enquanto falamos, ele
traduz.
Já os compiladores traduzem o código todo de uma vez, gerando um .exe, por exemplo. Como
analogia temos a tradução de um livro, em que o tradutor traduz todo o livro e ao final entrega-o
traduzido.
Figura 4 – Interpretador
Figura 5 – Compilador
TEMA 3 – ALGORITMOS E LINGUAGENS
No tópico anterior, abordamos os softwares, programas e sistemas. Aqui, iremos conhecer um
pouco mais sobre os algoritmos e as linguagens de programação.
3.1 ALGORITMOS
No tópico anterior, vimos algo dos algoritmos. Foi mencionado que podem assumir que é algo
parecido com a receita de bolo. A seguir, apresentamos uma definição de algoritmo. Essa definição é
bem simples e sucinta e descreve perfeitamente o que ele é. Tal definição foi dada por Forbellone
(2022, p. 3), em um livro sobre lógica de programação bastante utilizado como referência: “Algoritmo
é uma sequência de passos que visa atingir um objetivo bem definido”.
Nessa definição de algoritmo, uma sequência passo a passo visa atingir um objetivo bem
definido. O objetivo aqui é representar mais fielmente o raciocínio envolvido na lógica de
programação. Uma vez concebida uma solução, pode ser traduzida para qualquer linguagem de
programação.
Quem já teve Lógica de programação deve ter percebido que existe um gap semântico muito
grande entre lógica de programação e a lógica do dia a dia. Se você ainda não teve Lógica de
programação, quando tiver irá perceber esse gap. Quando falamos em semântica na linguagem de
programação, estamos nos referindo ao conteúdo, ao significado.
Vamos ver primeiro um exemplo em português para entendermos sintaxe e semântica. A sintaxe
está relacionada com as regras, premissas, restrições. De maneira simplificada, as regras que
determinam o modo como as palavras podem combinar-se para formar os enunciados definem a
sintaxe. Tomemos como exemplo a frase:
Fiz prova de FDS na semana passada.
Se escrevêssemos:
FDS passada semana prova fiz.
Ainda assim reconheceríamos as palavras, mas a ordem está estranha!
Semântica está relacionada com o conteúdo, o significado das palavras e sua representação. Por
exemplo, um texto pode estar bem escrito (sintaticamente correto), mas sem sentido ou conteúdo
(sem início, meio ou fim).
Em linguagem de programação a sintaxe define como a forma ou a estrutura das expressões, dos
comandos ou das unidades de programas devem ser, ou seja, ela define se um programa está
corretamente escrito em uma determinada linguagem de programação.
Por exemplo, a expressão seguinte está sintaticamente incorreta. Só de olharmos vemos que tem
algo estranho. Um parênteses que se abriu e não fechou, um colchete perdido. Números que faltam.
(2 ] - /
Já a semântica define o significado formal dessas expressões, comandos ou unidades de
programas. Ela define o significado da forma de cada trecho de código. Os erros de semântica estão
relacionados com a lógica de programação. A próxima expressão está sintaticamente correta na
linguagem Python, mas semanticamente não faz sentido somar um número e um caractere – na
linguagem python, os caracteres são escritos utilizando aspas duplas (“) ou simples(‘).
a = 2 + "3"
Voltando ao assunto dos algoritmos, veremos, agora, alguns exemplos. A seguir, é mostrada uma
receita de bolo de caneca. O modo de preparo é o passo a passo de como você deve fazer o bolo. No
caso, é o algoritmo para se fazer um bolo.
Exemplo 1 de algoritmo
O segundo exemplo mostra um algoritmo para calcular a média da nota de duas provas.
Exemplo 2 de algoritmo
3.2 LINGUAGENS
Agora falaremos sobre as linguagens de programação. Você se lembra do que falamos sobre
algoritmos? Depois que um problema é resolvido, ou melhor, depois que é feito um algoritmo para o
problema, o programador passa esse algoritmo para uma linguagem de programação. O
programador é quem profundamente conhece os detalhes da linguagem de programação que ele vai
desenvolver. Costumamos dizer que depois de feito um algoritmo, este pode ser implementado em
qualquer linguagem de programação.
A seguir, temos uma imagem esquematizando que, após desenvolvermos os algoritmos, que
representam a lógica de programação com a estrutura de dados, basta implementar para uma
linguagem de programação.
Figura 7 – Esquema: algoritmo + Lógica + ED = Linguagem
É preciso lembrar que cada linguagem de programação tem uma sintaxe específica, com regras
gramaticais próprias, como as que temos nas linguagens naturais. Observe nos próximos exemplos a
utilização de comando para imprimir na tela a frase “olá mundo!”. Cada linguagem tem um comando
próprio para realizar essa tarefa.
Para imprimir uma frase na tela, em linguagem C, podemos fazer:
printf(“Olá Mundo!”);
Em linguagem Java, o comando para imprimir algo na tela seria:
System.out.print(“Olá Mundo!”);
Em linguagem Python:
print(“Olá Mundo!”)
No quadro seguinte, podemos visualizar o algoritmo do exemplo 2 implementado em três
linguagens de programação diferentes.
Algoritmo implementado na linguagem Python:
Algoritmoimplementado na linguagem Java:
Algoritmo implementado na linguagem C:
Já a estrutura de dados diz respeito à forma como estes são armazenados e organizados na
memória. Como estrutura de dados mais simples temos os vetores, também chamados de arrays ou
listas. Cada linguagem tem formas e comandos específicos para manipular as estruturas de dados.
TEMA 4 – GLOSSÁRIO DO DESENVOLVEDOR DE SOFTWARE
Toda área tem seu jeito próprio de se comunicar, temos o chamado jargão. Segundo o dicionário
Michaellis, “jargão” é a linguagem própria de um grupo profissional, sobretudo no nível lexical; gíria
profissional.
Na área da Computação, muito mais que em outras áreas, temos as palavras ou termos que são
frequentemente utilizados na área de desenvolvimento. São termos tão corriqueiramente utilizados
pelos profissionais da área queé necessário conhecê-los para compreender e conseguir se comunicar
com seus pares.
Até há pouco tempo muitas dessas siglas ou jargões eram totalmente desconhecidas pelas
pessoas que não eram da área de TI (Tecnologia da Informação). Com a popularização da internet,
muitas palavras que eram consideradas como jargão de TI passaram a ser utilizadas por muitas
pessoas. Mas ainda temos alguns acrônimos, palavras ou termos que são utilizados e compreendidos
apenas por quem trabalha na área de desenvolvimento. A seguir são citados alguns termos utilizados
na área, que são importantes para o profissional de TI conhecer.
Front-end: esse termo está relacionado com desenvolvimento da parte gráfica de uma aplicação
web.
Back-end: está relacionado ao desenvolvimento no lado do servidor. Ou seja, a programação que
acontece no lado do servidor. Geralmente, o profissional que trabalha com Back-end tem experiência
em versionamento e controle, deve ter, ainda, a habilidade para gerenciar o ambiente de
hospedagem, levando em consideração a acessibilidade e segurança.
Full-stack: o desenvolvedor full-stack é aquele que trabalha com ambas as abordagens tanto da
parte gráfica, quanto da parte do lado do servidor.
API: a Application Programming Interface (Interface de Programação de Aplicativos) pode ser
definida como um conjunto de rotinas e padrões de programação que possuem o objetivo de acessar
aplicativos de software ou plataformas baseados na web. A API é uma interface utilizada por um
programa ou aplicação e não por um usuário.
Framework: é um conjunto de código de uma linguagem de programação específica que auxilia
no desenvolvimento de projetos de web ou de software. Podemos pensar no framework como se
fosse uma biblioteca de códigos com funções já prontas. Na área de TI, também é comumente vista a
definição como arcabouço de código. Exemplo de frameworks são: Vue.js, Angular, Bootstrap e React
frameworks para desenvolvimento front-end. Spring boot e Laravel: framework para aplicações web
back-end.
A seguir temos logotipos do spring, angular, vue.js, react, laravel e bootstrap, respectivamente.
IDE: é o acrônimo para Integrated Development Environment. O ambiente de desenvolvimento
integrado é um software que integra diversas funcionalidades para desenvolvimento em uma única
interface gráfica. A IDE auxilia e agiliza o processo de desenvolvimento. São exemplos de IDE:
Pycharm, Eclipse, Apache Netbeans, Visual Studio.
SDK: acrônimo para Software Development Kit, em português: kit de desenvolvimento de
software. Basicamente, um SDK será composto de compilador, debugger e API. Um SDK pode ser
entendido como conjunto de ferramentas fornecidos por um fabricante para que se desenvolva para
uma plataforma ou sistema específico.
Nativo: um aplicativo nativo é aquele desenvolvido para uma única plataforma utilizando
linguagens e ferramentas específicas para a plataforma em questão. Por exemplo, para
desenvolvimento nativo no Android, fazemos uso de uma SDK (Android SDK) e uma IDE (Android
Studio), utilizando a linguagem Java e kotlin.
Híbridos: dizer que uma aplicação é híbrida implica falar que sua implementação utiliza html, css
e Javascript. As aplicações híbridas utilizam frameworks ou ferramentas que permitem uma mesma
base de código. A aplicação híbrida é desenvolvida em uma única linguagem e distribuída para várias
plataformas.
Serviços: na área de desenvolvimento podem ser entendidos como processos de software. O
termo processo de software, nesse caso, não é no sentido de conjunto de atividades que temos na
engenharia de software, mas em um programa processado pelo SO (Sistema Operacional).
Monolítico: é uma aplicação que roda com um único processo.
Microsserviço: é uma abordagem arquitetônica e organizacional do desenvolvimento de
software na qual o software consiste em pequenos serviços independentes que se comunicam usando
APIs bem definidas. Esses serviços pertencem a pequenas equipes autossuficientes. Como
características dos microsserviços temos que eles são autônomos e especializados.
A próxima figura ilustra o conceito de aplicação monolítica e microsserviços.
Figura 8 – Aplicação monolítica x microsserviços
Crédito: Ashalatha/shutterstock.
SOAP: Service-Oriented Architecture (Or Application) Protocol (protocolo de arquitetura orientada
a serviços). O SOAP utiliza arquivos xml e o protocolo HTTP como protocolo de transporte.
REST: REpresentational State Transfer, em português: Transferência Representacional de Estado, é
um conjunto de restrições para criação de webservices. Quando um serviço implementa esse padrão,
dizemos que é Restfull. Restfull utiliza arquivos JSON.
SOAP e REST são APIs e são arquiteturas de webservice. Webservices são independentes de
linguagem. Segundo Ferreira (2021), é correto afirmar que todo Webservice é uma API, mas nem toda
API é um Webservice, porque tanto o Webservice quanto as APIs realizam a comunicação entre
aplicações, porém a forma como são utilizados é totalmente diferente.
A figura seguinte ilustra a independência dos webservices em relação às linguagens.
Figura 9 – Independência de webservices em relação a linguagens de programação
Crédito: Ashalatha/Shutterstock.
Commit: o termo commit ou “comitar” significa enviar alterações de um determinado trecho do
código, ou seja, o envio da criação de uma nova versão do projeto. Geralmente, quando o
desenvolvedor termina uma tarefa, ele gera um commit. Esse commit possui o código modificado e a
explicação do que esse commit faz naquele código.
Versionamento: consiste em atribuir um número de versão ao estado do projeto. À medida que
o desenvolvedor codifica, ele vai criando versões do projeto. Tome como exemplo várias pastas que
representam versões do seu projeto: trabalho_FDS_v1, trabalho_FDS_v2.
Snapshot: cópia instantânea em um determinado tempo de um volume.
Git: é um sistema de controle de versão que gerencia as várias versões no desenvolvimento de
um documento. Criado por Linus Torvalds, a justificativa para a escolha do nome é controversa, sendo
que nenhuma delas foi desmentida pelo autor. GIT, em inglês britânico, é uma gíria para cabeça dura,
também pode ser o acrônimo para "Global Information Tracker" ou, ainda, "Goddamn idiotic truckload
of sh*t" (é um xingamento, não iremos traduzir). O logo do GIT representa a ramificação para
desenvolvimento não linear.
Github: segundo a própria desenvolvedora, o Github é uma plataforma de desenvolvedor
completa para criar, dimensionar e fornecer software seguro. O github utiliza o Git como sistema de
controle.
Há uma certa confusão entre Git e GitHub para quem começa na área. Entenda Git como uma
ferramenta. Tendo esta, você ainda precisará de um servidor, que, no caso, é o Github. Embora seja
mais conhecido e usado, também existem outros servidores que prestam suporte para git, como:
Gitlab, Bitbucket, Apache Allura. Os ícones seguintes são, respectivamente, do GitHub, Gitlab,
Bitbucket e Apache Allura.
Debug: o debugging ou debugar significa depurar o programa. Ou seja, encontrar erros e tentar
resolvê-los. Aqui, só lembrando que o termo bug na área de TI se refere a um erro no programa.
TEMA 5 – CICLO DE VIDA DE SOFTWARE
O ciclo de vida de um software (do inglês: Software Development Life Cycle – SDLC), também
chamado de modelo de processo, é uma representação simplificada de um processo de software. Este
é como se fosse um roteiro, uma série de passos previsíveis. Esse processo depende do software que
está sendo desenvolvido. O ciclo de vida de um software indica as etapas que devem ser cumpridas e
a sequência para que o software seja desenvolvido.
Os modelos de processos trazem ordem ao caos existente na área de desenvolvimento de
software. O engenheiro de software deve adaptar um modelo de processo às suas necessidades e,
então, deve segui-lo. O processo dá controle, estabilidade e organização ao desenvolvimento de
software.
Segundo Sommerville (2019), quatroatividades são comuns a todos os processos de software:
especificação, desenvolvimento, validação e evolução.
Antes de explicar mais detalhadamente cada fase, para ficar fácil de entender, podemos fazer
uma analogia com a construção de uma casa. Essas fases genéricas são semelhantes também às fases
da construção de uma moradia; a fase especificação, por exemplo, seria especificar com o contratante
como ele quer que a casa seja. Na fase de desenvolvimento, é realizada a construção da moradia
propriamente dita. Na fase de validação, é garantido que a casa está sendo construída de acordo com
o que o contratante solicitou. A fase de evolução serve para manter a casa em boas condições, ou
seja, evoluir para atender às necessidades do contratante. É possível incluir: pintura,
troca/retirada/acréscimo de encanamento, troca/retirada/acréscimo de fiação, conserto de problemas
que surgirem após final da construção, construção de um novo cômodo etc.
Entendido o que cada fase faz na construção da casa, vejamos essa definição para o
desenvolvimento de software.
Na fase de especificação de um software ocorre a definição do problema. A funcionalidade e as
restrições quanto às funções do software são definidas aqui. Nessa fase, é feita uma reunião com o
cliente para levantamento de requisitos. Existem basicamente dois tipos de requisitos: os funcionais e
os não funcionais. Os primeiros dizem respeito ao que o software deve fazer, ou seja, quais funções
ele deve possuir. Já os não funcionais dizem respeito às restrições do software.
Na etapa de desenvolvimento de software ocorre a codificação do software de acordo com as
especificações coletadas na fase anterior. Aqui, também é feita a escolha da linguagem de
programação que será utilizada para implementação do sistema.
Na fase de validação o programa é analisado para garantir que atenda ao que foi solicitado pelo
cliente.
Na fase de evolução o software deve evoluir de acordo com a mudança nas necessidades do
cliente, ou seja, devem ser realizados ajustes caso o software ou algum módulo necessite de alguma
modificação.
5.1 CICLO DE VIDA DE SOFTWARE (SDLC) – METODOLOGIA TRADICIONAL
Existem muitos modelos de processo de software. A seguir é mostrado um modelo clássico
conhecido como modelo cascata (waterfall). O modelo é mostrado em uma perspectiva arquitetural;
isso significa que será mostrada sua estrutura, mas não os detalhes das atividades. Devido à
tradicionalidade do modelo, muitas vezes, ele é referenciado como sendo o próprio SDLC.
Modelo Cascata (Watterfall): mostra as atividades fundamentais do processo de software
distribuídas em fases distintas. Devido à cascata de uma fase para outra, é definido como modelo
cascata ou ainda conhecido como modelo de ciclo de vida do software (SDLC).
São cinco fases que compõem o modelo cascata: requerimento, projeto, implementação,
verificação e manutenção.
Na etapa de requerimento ocorre o levantamento de requisitos. As metas e restrições são
identificadas com os usuários.
Na etapa de projeto os requisitos identificados na etapa anterior são mapeados em componentes
de hardware e software.
Na etapa de implementação, o projeto de software é implementado em unidades de programas.
Nessa fase ocorre também o teste de unidade, que envolve a verificação de cada unidade e se cada
uma cumpre a sua especificação.
Na etapa de verificação as unidades de programas são integradas e testadas como um sistema
completo.
Na etapa de manutenção o sistema é instalado e colocado em operação. Aqui, são corrigidos os
erros que não foram descobertos nas fases anteriores. Novas funcionalidades podem ser identificadas
e se há a necessidade da repetição do ciclo.
A figura a seguir representa o modelo cascata e a descrição sucinta de suas fases.
Figura 10 – Modelo cascata (Waterfall)
Fonte: Kanashiro, 2022.
O modelo cascata é fácil de gerenciar, pois tem etapas bem definidas e sem sobreposição. É um
modelo que visa à alta qualidade, enfatizando metas e pontos de revisão. Porém, esse modelo
apresenta desvantagens, pois é improdutivo quanto ao tempo, já que a etapa posterior só pode
iniciar depois da finalização da etapa anterior. A Visão Sequencial também não corresponde ao
mundo real, fornecendo pouca visibilidade do estado do projeto, pois é demandado muito tempo
para a primeira entrega. Existem vários outros processos de software, porém o Cascata é o mais
conhecido e tradicional.
5.2. CICLO DE VIDA DE SOFTWARE – METODOLOGIA ÁGIL
A metodologia ágil é uma alternativa para a gestão de projetos tradicionais.
Em 2001, um grupo de programadores lançou o Manifesto Ágil, pregando uma metodologia que
tem como objetivo satisfazeros clientes entregando com rapidez e com maior frequência versões do
software conforme suas necessidades. A metodologia ágil entrega as funcionalidades de software
mais rapidamente aos seus clientes. Essa metodologia tem foco no software e não no projeto ou na
documentação. É adequada para aplicações em que os requisitos mudam rapidamente. Veremos duas
abordagens utilizadas na metodologia Ágil: o extreme Programming e o SCRUM.
5.3 XP (EXTREME PROGRAMMING)
A programação extrema introduziu práticas ágeis ao desenvolvimento tradicional de software. As
práticas da XP refletem os princípios do manifesto ágil. O quadro seguinte descreve as práticas do XP
e suas respectivas descrições.
Quadro 1 – Práticas do XP e suas respectivas descrições
Princípio ou prática Descrição
Propriedade coletiva Os pares de desenvolvedores trabalham em todas as áreas do sistema de modo que se
desenvolvem “ilhas de conhecimento”, e todos os desenvolvedores assumem a
responsabilidade por todo o código. Qualquer um pode mudar qualquer coisa.
Integração continua Assim que o trabalho em uma tarefa é concluído, ele é integrado ao sistema completo. Após
qualquer integração desse tipo, todos os testes de unidade no sistema devem passar
Planejamento incremental Os requisitos são registrados em “cartões de história, e as histórias a serem incluídas em um
lançamento são determinadas de acordo com o tempo disponível e com sua prioridade
relativa. Os desenvolvedores decompõem essas histórias em tarefas de desenvolvimento.
Representante do ciente Um representante do usuário final do sistema (o cliente) deve estar disponível em tempo
integral para o time de programação. Em um processo como esse o cliente é um membro do
time de desenvolvimento, sendo responsável por levar os requisitos do sistema ao time,
visando sua implementação
Programação em pares Os desenvolvedores trabalham em pares, conferindo o trabalho um do outro e oferecendo
apoio necessário para que o resultado seja sempre satisfatório
Refatoração Todos os desenvolvedores devem refatorar o código continuamente logo que sejam
encontradas possíveis melhorias para ele. Isso mantém o código simples e de fácil
manutenção
Projeto(design) simples Deve ser feito o suficiente de projeto(design) para satisfazer os requisitos atuais e nada mais.
Lançamentos pequenos O mínimo conjunto útil de funcionalidade que agregue valor ao negócio é desenvolvido em
primeiro lugar. Os lançamentos do sistema são frequentes e acrescentam funcionalidade à
primeira versão de uma maneira incremental.
Ritmo sustentável Grandes quantidades de horas extras não são consideradas aceitáveis, já que o efeito líquido
muitas vezes é a diminuição da qualidade do código e da produtividade no médio prazo
Desenvolvimento com
testes a priori(test first)
Um framework automatizado de teste de unidade é utilizado para escrever os testes de um
novo pedaço de funcionalidade antes que ela própria seja implementada.
Fonte: Sommerville, 2018, p. 63.
A figura seguinte ilustra metaforicamente a metodologia tradicional que entrega apenas parte do
produto versus a metodologia ágil, onde pequenas versões do projeto são entregues até que se
entregue o produto.
Crédito: Henrik Kniberg.
5.4 SCRUM
O manifesto ágil possibilitou o aparecimento de várias metodologiase frameworks. Um dos mais
utilizados é o scrum. E é sobre ele que veremos a seguir.
O Scrum é um framework estrutural, não é considerado uma metodologia. Basicamente, uma
metodologia diz o que fazer e como fazer. O Scrum indica uma trajetória, mas não como fazer. Sendo
assim, o Scrum é um arcabouço de informações, um esqueleto.
O Scrum possui três artefatos, cinco eventos, cinco valores e três papéis. A figura a seguir mostra
os respectivos artefatos, eventos, valores e papéis do Scrum. Vamos ver um pouco mais sobre essa
composição do Scrum de acordo com o seu próprio guia. Alguns termos serão mantidos em inglês,
pois são as terminologias utilizadas na área.
Figura 11 – Componentes do Scrum
Fonte: Kanashiro, 2022.
No Scrum, os projetos são divididos em cicloschamados deSprints. As Sprints são a essência, o
coração do Scrum. Uma sprint é um time-boxed de um mês ou menos, durante o qual um “Pronto”,
incremento de produto potencialmente liberável é criado.O time-boxed é a expressão para definir
uma unidade de tempo no Scrum. Cabe, ainda, ressaltar que as Sprints têm durações consistentes ao
longo de todo o desenvolvimento.Uma nova Sprint só se inicia imediatamente após a conclusão da
Sprint anterior. As sprints podem ser vistas como as iterações que ocorrem ao longo do
desenvolvimento de software.
A próxima figura ilustra a consistência das Sprints.
Figura 12 – Sprints
Crédito: KPDMedia/Shutterstock.
Artefatos: no Scrum representam o trabalho feito para fornecer transparência ao processo. São
projetados para maximizar a transparência das informações-chave para que todos no time recebam
as informações relevantes e tenham a mesma compreensão do que deve ser feito.
Como colocado anteriormente, o Scrum possui três artefatos: o product backlog, o sprint backlog
e o increment.
O Product Backlog é uma lista ordenada de tudo que é conhecidamente necessário para
fornecer o produto.É a única origem dos requisitos para qualquer mudança a ser feita no produto.O
product backlog é, então, uma lista de produtos pendentes.
O Sprint backlog possui os itens do product Backlog selecionados para a Sprint, com o plano
para entregar o incremento do produto e atingir o objetivo da Sprint.Possui também uma previsão do
Time de Desenvolvimento sobre qual funcionalidade estará no próximo incremento.O Sprint Backlog
é um plano feito por e para desenvolvedores. É uma imagem em tempo real altamente visível do
trabalho que os desenvolvedores planejam realizar durante o Sprint para atingir o objetivo do Sprint.
O increment (incremento) é a soma de todos os itens do Product Backlog completados durante a
Sprint e o valor dos incrementos de todas as Sprints anteriores.
Eventos: o Scrum prescreve alguns eventos formais para inspeção e adaptação:
Sprint;
Sprint Planning (Planejamento da Sprint);
Daily Scrum (Reunião diária);
Sprint Review (Revisão da Sprint); e
Sprint Retrospective (Retrospectiva da Sprint).
O Sprint foi explicado previamente. Iniciaremos, então, com a conceituação do Sprint Planning
ou o Planejamento da Sprint. O Planejamento do Sprint inicia o Sprint, estabelecendo o trabalho a
ser realizado para o Sprint. Esse plano resultante é criado pelo trabalho colaborativo de todo o Time
Scrum. O Product Owner garante que os participantes estejam preparados para discutir os itens mais
importantes do Product Backlog e como eles são mapeados para a meta do produto. O Time Scrum
também pode convidar outras pessoas para participar do Sprint Planning para fornecer conselhos.
O objetivo do Daily Scrum é inspecionar o progresso em direção ao Sprint Goal e adaptar o
Sprint Backlog conforme necessário, ajustando o próximo trabalho planejado. O Daily Scrum é uma
reunião de aproximadamente 15 minutos para os Desenvolvedores do Time Scrum.
A sprint Review (Revisão do Sprint) tem como objetivo inspecionar o resultado do Sprint e
determinar futuras adaptações. O Time Scrum apresenta os resultados de seu trabalho para as
principais partes interessadas e o progresso em direção ao Objetivo do Produto é discutido.
Sprint Retrospective (Retrospectiva da Sprint) tem como objetivo planejar maneiras de
aumentar a qualidade e a eficácia. O Time Scrum inspeciona como foi o último Sprint em relação aos
indivíduos, interações, processos, ferramentas e sua Definição de Pronto. Aqui, ainda, é discutido o
que correu bem durante o Sprint, quais problemas foram encontrados e como esses problemas foram
(ou não) resolvidos.
Valores: os cincos valores descritos a seguir sempre foram considerados como partes do Scrum e
adicionados oficialmente em julho de 2016 ao guia do Scrum.
Coragem: o time Scrum precisa ter coragem para fazer a coisa certa e trabalhar em problemas
difíceis.
Foco: todos focam no trabalho da Sprint e nos objetivos do time Scrum.
Comprometimento: as pessoas se comprometem pessoalmente em alcançar os objetivos do
time scrum.
Respeito: os membros do time scrum respeitam uns aos outros para serem pessoas capazes e
independentes.
Abertura: o time scrum e seus stakeholders concordam em estarem abertos a todo o trabalho e
aos desafios com a execução dos trabalhos.
Papéis: a unidade fundamental do Scrum é o time. Um pequeno time, ou seja, um pequeno
grupo de pessoas que trabalham juntas, definidas de time Scrum. Não existe o conceito de hierarquia
no time Scrum, mas cada integrante do time tem um papel (role). São três papeis: Product Owner,
Scrum master e developers (desenvolvedores).
O Product owner é dono do produto, é o responsável por maximizar o valor do produto
resultante do trabalho do Time de Desenvolvimento. É a única pessoa responsável por gerenciar o
Backlog do Produto.
O Scrum master é o responsável por promover e suportar o Scrum como definido no Guia
Scrum. O Scrum Master faz isso ajudando a todos a entenderem a teoria, as práticas, as regras e os
valores do Scrum.
O Time de Desenvolvimento consiste em profissionais que realizam o trabalho de entregar um
incremento potencialmente liberável do produto ao final de cada Sprint.
A figura a seguir representa o ciclo do Scrum.
Figura 13 – Ciclo do Scrum
Fonte: Scrum.org.
FINALIZANDO
Nesta etapa, você conheceu a definição técnica de software e agora já é capaz de diferenciar
softwares, programas e sistemas. Conheceu, também, o conceito de algoritmos e alguns exemplos de
implementação em algumas linguagens de programação. Foi visto também alguns dos termos mais
utilizados pelos desenvolvedores de software e pudemos explorar um pouco sobre o ciclo de vida de
software, conhecendo o modelo cascata, modelo ágil e suas características.
REFERÊNCIAS
AWS.AWS Amazon, 2022. O que são Microsserviços. Disponível em:
<https://aws.amazon.com/pt/microservices/#:~:text=Microsservi%C3%A7os%20s%C3%A3o%20uma%
20abordagem%20arquitet%C3%B4nica,pertencem%20a%20pequenas%20equipes%20autossuficientes
>.Acesso em: 18 set. 2022.
FORBELLONE, A. L. V. Lógica de Programação. 4. ed. Porto Alegre: Bookman, 2022.
MARÇULA, M.; PIO, A. B. F. Informática - conceitos e aplicações. 5. ed. São Paulo: Editora Érica,
2019.
MARCONI, M. de A.; LAKATOS, E. M. Fundamentos de metodologia científica. 6. ed. São Paulo:
Atlas, 2005.
MONTEIRO, E. R. et al. DevOps. Revisão técnica: FAGONDE, F. S. S.; DIAS, C. de O. Porto Alegre:
Sagah, 2021.
PRESSMAN, R. S.; MAXIM, B. R. Engenharia de software. Tradução de COSTA, F. A. da; Revisão
técnica: ARAKAKI, R.; ARAKAKI, J.; ANDRADE, R. M. de. 9. ed. Porto Alegre: Grupo A, 2021.
SCHWABER, K.; SUTHERLAND, J.Scrum Guide: The Definitive Guide to Scrum: The Rules of the
Game,2020.
SOMMERVILLE, I. Engenharia de Software. Tradução de BOSNIC, I.; GONÇALVES, K. G. de O.
Revisão técnica de Kechi Hirama. 10. ed. São Paulo: Pearson Education do Brasil, 2018.
 
 
 
 
 
 
 
 
FUNDAMENTOS DE
DESENVOLVIMENTO DE
SOFTWARES
AULA 2
 
 
 
 
 
 
 
 
Prof.ª Luciane Yanase Hirabara Kanashiro
CONVERSA INICIAL
Essa discussão tem como foco o profissional de TI (Tecnologia da Informação)e sua atuação.
Sendo assim, inicialmente começaremos essa etapa vendo como surgiu a crise do software, seu
significado para o desenvolvimento de software e com isso entender a importância do profissional de
TI.
Serão abordados também os diferentes papeis do profissional de TI e qual é o perfil do
profissional de TI que o mercado de trabalho busca.
Veremos ainda a importância da área de TI, destacando o panorama do mercado de trabalho e as
mulheres na área de TI.
Conheceremos também alguns mitos e verdades sobre o desenvolvimento de software.
TEMA 1 – CRISE DO SOFTWARE
A Crise do Software é um termo que surgiu em 1965 e refere-se ao problema do software não
acompanhar o desenvolvimento do hardware.
Antes de 1965, não existia qualquer planejamento ou projeto para desenvolver um software ou
formação específica para desenvolvedor ou engenheiro. Em outras palavras, não existia
documentação nenhuma.
Os problemas relacionados ao desenvolvimento de software começaram a surgir quando a
demanda por software começou a subir. O número de usuários de computador começou a aumentar
e, consequentemente, a demanda por software. Era uma época em que a codificação do software era
entendida apenas por quem o tinha desenvolvido. Imaginem o problema que era!
Era então necessária uma solução para esse problema ou, como muitos autores dizem, era
necessário colocar ordem ao caos. A formação de profissionais e o uso de técnicas, métodos e
ferramentas para o desenvolvimento de software minimizou esse problema. No entanto, veremos a
seguir que a crise do software ainda persiste e continuaremos com a explanação para melhor
compreensão do que é a crise do software.
A crise que se iniciou em 1965 se acentua na década seguinte e a necessidade de solução para os
problemas cresce. Nessa época do surgimento da crise do software, os computadores começam a
ficar menores com o surgimento dos CIs (Circuitos Integrados). A época dos CIs ficou conhecida como
terceira Geração de computadores. A partir da terceira geração, começou-se a miniaturização do
hardware. Nessa época, surgem os computadores de mesa, que ficaram conhecidos como PC
(Personal Computer). Se antes os computadores eram usados apena para fins militares, a partir desse
momento passam a ser adquiridos para fins pessoais.
Com o crescimento da demanda por computador, o que se observa então é o crescimento da
demanda por software, e é por essa razão que falamos que o software não conseguiu acompanhar a
demanda pelo hardware.
Como citado anteriormente, nessa época não existiam profissionais formados na área de
desenvolvimento. O software era então desenvolvido de maneira informal, não seguindo nenhuma
metodologia para o seu desenvolvimento. A ausência de metodologia, como bem sabemos hoje,
causa erros de sistemas, problemas de cálculos, perdas financeira e perda de tempo, porque as
estimativas de prazo são imprecisas.
Então, é preciso que entendam que a expressão “Crise do software” surge em 1965 e continua
até os dias de hoje. A seguir, veremos alguns dos bugs mais icônicos da Informática que ilustram bem
a crise do software.
O termo Bug se refere a um erro na interpretação de um requisito, na sintaxe de um código ou
ainda pode se referir a uma causa (ainda desconhecida) da queda de um sistema. O Bug ficou
amplamente conhecido no final da década de 1990, quando se especulava que haveria o “Bug do
Milênio” nos sistemas computacionais quando se mudasse do ano 1999 para o ano 2000. A expressão
bug, porém, surgiu muito antes dessa época. Antigamente, os computadores eram gigantescos,
construídos com milhões de válvulas. As válvulas tinham tamanho de uma lâmpada. Algumas vezes
alguns bichos, a exemplo de mariposa, passavam entre as válvulas e ficavam presos, ocasionando a
queda do Sistema - lembrando que “bug”, em inglês, se refere a inseto.
A seguir, são apresentados alguns dos bugs mais famosos da história da engenharia de software.
Bug 1 - Falha na Sonda Mariner 1
Datada de 1962, o bug da sonda Mariner 1 se deve ao fato da fórmula escrita a lápis ter sido
digitada errada no computador de cálculo.
A sonda Mariner era um foguete projetado pela NASA para exploração do planeta vênus e
depois do lançamento observou-se um desvio do curso preestabelecido. A sonda teve que ser
destruída quando se encontrava sobrevoando o atlântico.
Esse bug tão grotesco ainda é relembrado e até hoje é utilizado como referência para ilustrar a
crise do software.
Bug 2 – Acelerador médico Therac- 25
O therac-25 era uma máquina de radioterapia para tratar tumores utilizado nos hospitais na
década de 80, mais precisamente entre 1985 e 1987. O caso do Therac é conhecido como o desastre
da engenharia. O problema: devido a uma falha de programação, a máquina emitia 100 vezes mais
radiação do que a requerida. Consequência: cinco pacientes morreram e várias pessoas sofreram os
efeitos de ficarem expostas a um elevado índice de radiação. Esse caso também é muito utilizado para
se ilustrar a crise do software, devido a erros ridiculamente grotescos, como, por exemplo, falta de
revisão/teste do software, falta de documentação e manual fornecido ao usuário que não explicava os
significados dos códigos de erro que a máquina retornava.
Bug 3 - divisão de números com ponto flutuante no Pentium
Um bug clássico que ocorreu em 1993 com os processadores Pentium da Intel. O problema foi
descoberto por um professor de matemática que percebeu um erro quando se fazia divisão de
números com ponto flutuante. Esse bug não custou vidas, mas custou milhões de dólares a Intel, pois
foi obrigada a trocar de 3 a 5 milhões de chips, totalizando um prejuízo de mais de meio bilhão de
dólar.
Por exemplo ao executar a divisão daria o seguinte erro:
4195835,0/ 3145727,0 = 1,33374
O correto seria:
4195835,0/ 3145727,0 = 1,33382
Até aqui, deu para ter um entendimento do que foi a crise do software. O que ela ocasionou e
que foi responsável pelo surgimento da engenharia de software. No entanto, se engana quem pensa
que nos dias atuais estamos livres dos bugs. Recentemente, em 2022, o banco Nubank teve
problemas com erro de arredondamento de ponto flutuante. O bug foi resolvido rapidamente,
embora causou transtornos para vários usuários que foram impossibilitados de fazer transação via pix
de determinados valores enquanto o bug persistia.
TEMA 2 – PROFISSIONAL DE TI
Aqui, serão abordadas as áreas de atuação de diferentes profissionais da área de TI.
Engenheiro de software
Os engenheiros de software são os profissionais que aplicam o processo da engenharia de
software. É o profissional formado no curso de engenharia de software. Recentemente, em 2018, a
Engenharia de software foi vinculada ao CREA. Ressaltamos aqui que a SBC (Sociedade Brasileira de
Computação) não concorda com essa regulamentação, mas este é um assunto que não nos cabe
discutir. Para entender o que o engenheiro de software é, primeiramente veremos o que ele não é. O
engenheiro de software não é um desenvolvedor que trabalha nas atividades de análise e produção
de código, também não tem a função de analista de sistemas. Embora constantemente tenha a
função confundida com a dessas duas profissões, o papel desempenhado pelo Engenheiro de
software é diferente. Seria como confundir o engenheiro civil com o pedreiro, ou seja, o engenheiro
não coloca a mão na massa. Segundo Wazlawick (2013):
O engenheiro de software acompanha e avalia o desenvolvimento de todos os projetos da empresa
para verificar se o processo estabelecido é executado de forma eficiente e efetiva. Caso sejam
necessárias mudanças no processo estabelecido, ele as identifica e realiza, garantindo que a equipe
adote tais mudanças. Ele reavalia o processo continuamente. (Wazlawick, 2013. p. 5)
Analista de sistema
O analista de sistemas é o profissional responsável pela compreensão do problema, ou seja, é de
responsabilidade do analista o levantamento dos requisitos e da modelagem do sistema utilizando a
metodologiaescolhida. Quando se fala de requisitos diz respeito ao que o sistema deve fazer e como
serão feitos. São basicamente dois tipos de requisitos: funcionais e não funcionais. Os funcionais
especificam o que o sistema deve fazer e os não funcionais definem como serão feitos. Um dos
principais fatores para fracassos em projetos de software é a má especificação dos requisitos, sendo
assim, o analista tem a grande responsabilidade de coletá-los e interpretá-los corretamente. Os
requisitos iniciais serão fornecidos pelo cliente, portanto, é o analista de sistemas quem irá descobrir
o que o cliente precisa e planejar a solução. O analista precisa ainda conhecer sobre banco dados e
linguagens de programação, porém não necessita de conhecimento profundo na linguagem de
programação.
Desenvolvedor/Programador
O Programador será o responsável pela implementação da solução a partir das especificações
coletadas pelo analista de sistemas. Esse profissional é que detém o profundo conhecimento da
linguagem de programação e do ambiente de programação e das bibliotecas.  Deve ainda ter
conhecimento sobre teste e depuração. Dentre os programadores, ainda existem aqueles que se
especializam em determinadas áreas. Por exemplo, o desenvolvedor pode ainda querer atuar no
desenvolvimento de aplicativos móveis, ou ainda ir para a área de desenvolvimento de jogos.
Para esse profissional, são imprescindíveis o raciocínio lógico e a lógica de programação,
importantíssimo e indispensável nessa área, pois sem a lógica de programação é impossível o
domínio das linguagens de programação. A lógica de programação é o uso correto das leis do
pensamento e de processos de raciocínio e simbolização formais na programação de computadores.
Tem-se como objetivo a racionalidade e a produção de soluções logicamente validas e coerente.
Permite ainda resolver com qualidade os problemas que se desejam programar. Segundo Forbelone,
a lógica de programação é concebida pela mente treinada e é representada pela linguagem de
programação. Atualmente, muitas empresas estão dando muita mais importância à lógica do que ao
domínio de linguagens de programação específicas, pois sabendo a lógica se aprende qualquer
linguagem com facilidade.
Infelizmente, na prática essa divisão de papeis dos três profissionais citados não é observada.
Apenas grandes empresas podem se dar ao luxo de contratar um profissional para desempenhar um
papel específico. Muitas vezes, o que vemos na prática é um profissional desempenhando as três
funções. No entanto, é importante que se tenha em mente que, ainda que uma pessoa execute mais
de um papel no processo de desenvolvimento de software, esses papéis são distintos.
Gestor de TI
Nem todo profissional da área de TI trabalha com desenvolvimento de programas de
computador. O gestor de TI é um deles. Esse profissional é quem administra os recursos de TI.
Quando falamos em recursos de TI, estamos nos referindo ao tratamento, armazenamento e proteção
de sistemas e informações. O Gestor de TI ainda é responsável por garantir a segurança dos dados.
Na gestão de TI, além de saber sobre desenvolvimento, também deve ter conhecimento sobre
marketing e administração, pois deve ter competência para fazer planejamento com ações
estratégicas. Deve saber como utilizar as ferramentas tecnológicas a favor da empresa.
Cientista de Dados
O cientista de dados deve ter conhecimento em computação, matemática e análise de dados. Ele
é o profissional responsável por reunir e interpretar os dados. O cientista de dados é um Especialista
analítico, pois trabalha com a análise de dados, resolvendo problemas complexos.
Com o surgimento da big data, os cientistas de dados se tornaram imprescindíveis em muitas
empresas. Com capacidade de ler, escrever, comunicar e raciocinar com dados, diferente do analista
de dados que apenas analisa e comunica as informações, o cientista deve ter conhecimento de
métodos científicos, pois deve formular hipóteses e achar soluções.
Engenheiro da Computação
O engenheiro da computação é um profissional que tem uma base mais sólida em cálculo. Além
de aprender cálculo, tecnicamente aprende tudo o que se aprende em engenharia de software. O
engenheiro de computação está apto a desenvolver software e hardware. A diferença com o
engenheiro de software é que o engenheiro da computação está mais direcionado a desenvolver
softwares, por exemplo, para microcontroladores e projetos de chips. O Engenheiro de computação
seria uma junção entre cientista da computação e o engenheiro eletricista.
Administrador /Analista de Redes de Computadores
O foco para quem é formado nessa área de redes são as profissões como: administrador de
redes, analista de suporte, analista em segurança de redes, supervisor de segurança de redes, entre
outros. Esse profissional é responsável pela Instalação e implementação de infraestrutura de sistemas.
Tem a habilidade de documentar projetos de redes, configurar e gerenciar redes. É ainda o
profissional responsável pelas soluções para desempenho da rede, garantindo a comunicação segura
de programas e equipamentos. Muito comumente os profissionais dessa área se especializam na
parte de web segurança.
Administrador de Banco de Dados
O profissional dessa área implementa, projeta as soluções e gerencia o Banco de dados, sendo
responsável ainda pela segurança e integridade dos dados. O profissional dessa área, apesar de não
ser um engenheiro de dados, pode ainda trabalhar na área de engenharia de dados.
TEMA 3 – PERFIL DO PROFISSIONAL DE TI
Aqui, será abordado o perfil do profissional de TI. Embora o profissional de TI tenha diferentes
papeis, de modo geral, as competências e habilidades não diferem.
Molinaro (2010) cita três habilidades inerentes ao profissional de TI: habilidade básica, habilidade
técnica e habilidade comportamental. A seguir, são descritas sucintamente as três habilidades.
Habilidades básicas: diz respeito as habilidades básicas de TI, como conhecer o sistema
operacional, saber utilizar editores e planilhas, saber fazer uma apresentação no Power point e saber
lidar com outros aplicativos considerados básicos.
Habilidades técnicas: atualmente conhecida como hard skills. As habilidades técnicas são
quantificáveis. Entendemos as habilidades técnicas aquelas que adquirimos através de estudo formal,
como por fazer um curso de desenvolvimento para aprender as técnicas e ferramentas utilizadas
nessa área. As competências técnicas são o conhecimento fundamental que um profissional deve ter.
O profissional de TI deve ser especialista em alguma área e generalista nas outras.
Habilidades comportamentais: nos dias atuais, a habilidade comportamental é mais conhecida
como soft skills. São características subjetivas, difíceis de avaliar e estão também relacionadas ao
comportamento do profissional: como ele interage em grupo, habilidade de resolver problemas, de
trabalhar em equipe, de se comunicar, de planejar - embora sejam subjetivas, podem ser
desenvolvidas pelo profissional. São habilidades que geralmente são analisadas nas entrevistas de
emprego.
Essas habilidades surgem como novas capacidades sociais e comportamentais (soft skills), que
possuem caráter universal. Hoje em dia, é muito importante desenvolver as soft skills, existindo até
profissionais especializados nessa área, os chamados coaching de carreira.
Com tantas habilidades requeridas, o perfil do profissional de TI é um tanto quanto complexo,
podemos assim dizer, pois o profissional deve ainda gostar de aprender novas tecnologias e estar
sempre atualizado, além de ser um profissional criativo deve dominar as tecnologias emergentes.
Além da facilidade de aprender e se adaptar rapidamente as novas tecnologias, se for ainda um
desenvolvedor, deve ser capaz de programar em várias linguagens e para várias plataformas. Quando
falamos em diversas plataformas estamos nos referindo a dispositivos móveis (celular/tablets),
computador.
Já deu para notar queo profissional de TI deve estar em constante aprendizado e atualização,
não é?
E não é só isso. Além das habilidades técnicas inerentes à profissão, o inglês também é
indispensável para esta profissão assim como a facilidade de trabalhar em equipe, pois essa área é
muito complexa e o profissional muitas vezes deve trocar ideias com outros colegas de profissão. O
velho perfil do nerd, de ser um cara isolado em um porão e que trabalha sozinho, já não existe mais.
Mas o que realmente o mercado busca?
Competência profissional!
A competência profissional abrange o conhecimento, a habilidade e a atitude. O conhecimento é
o saber. A habilidade é o saber fazer. A atitude é o saber ser. Assim, a intersecção dessas 3 dimensões
formam a competência profissional.
A seguir, são mostrados exemplos de anúncios reais para vagas de emprego para profissionais da
área. Observe que além das habilidades técnicas são exigidas também as comportamentais.
No tópico a seguir, veremos sobre a importância do profissional da área de TI (Tecnologia da
Informação), discutiremos sobre empreendedorismo e mercado de trabalho na área de TI.
TEMA 4 – IMPORTÂNCIA DO PROFISSIONAL DE TI
A chegada da pandemia acelerou o processo de digitalização de muitas empresas. Com isso, o
mercado de Tecnologia da Informação (TI) ganhou ainda mais destaque no processo de
transformação digital, exigindo a figura de um profissional imprescindível para a criação de soluções
em diferentes áreas de negócios. Profissionais da área de TI, comodesenvolvedores, analistas e
administradores de redes e outras áreas afins tornaram imprescindíveis para diferentes organizações.
4.1 MERCADO DE TI
  A área de TI é a que mais cresce atualmente e com o advento da pandemia da Covid-19 os
recursos tecnológicos se mostraram imprescindíveis. Algumas instituições brasileiras trazem dados
importantes acerca da utilização das tecnologias no país. Segundo dados do Cetic, que é Centro
Regional de Estudos para o Desenvolvimento da Sociedade da Informação, que monitora a adoção
das Tecnologias de Informação e Comunicação (TIC) no Brasil, entre 2019 e 2021 – período marcado
pela emergência da pandemia COVID-19 – a proporção de empresas brasileiras que comercializaram
produtos e serviçosonlinecresceu de 57% para 73% (Cetic, 2021).
Ainda de acordo com os indicadores do Cetic em pesquisa feita sobre a utilização das TICs pelas
empresas no brasil, entre 2013 e 2021 houve um crescimento de 9% na proporção de empresas que
possuem área ou departamento de TI. O ano de 2013 foi o ano em que houve a primeira edição sobre
proporção de empresas que possuem área ou departamento de TI.
À primeira vista, o crescimento médio em porcentagem de 9% em um período de pouco menos
de uma década pode parecer pouco, mas se observamos o gráfico podemos perceber que a
porcentagem nas empresas de pequeno porte subiu mais de 16% e na de médio o crescimento foi de
18%. Nas empresas de grande porte, a porcentagem continuou estável com 89% das empresas
possuindo departamento de TI. Esse aumento nas pequenas e médias empresas mostra um cenário
otimista, pois quer dizer que as pequenas e médias empresas estão investindo cada vez mais em
serviços e produtos da área de TI.
Pequeno De 10 a 49 pessoas
Médio De 50 a 249 pessoas
Grande Mais De 250 pessoas
Fonte: Brascom.
De acordo com a Brasscom (Associação Brasileira das Empresas de Tecnologia da Informação e
Comunicação) no relatório setorial referente a 2021, a demanda por mão de obra na área de TI
considerando de 2021 a 2025 é de 797 mil, com uma média simples de 159 mil empregos por ano.
Hoje, o Brasil forma cerca de 52 mil pessoas com perfil tecnológico por ano, com relativo
descasamento entre oferta e demanda de mão de obra.
Esta é uma grande oportunidade para o os profissionais de TI do país, especialmente em um
momento em que se verifica uma taxa de desemprego de mais de 11% (considerado 2021).  Ainda de
acordo com a Brasscom, a remuneração média do subsetor de Software e serviços de TI é a maior
dentre as pesquisadas e 3,5 vezes superior ao salário médio nacional. O gráfico a seguir mostra os
salários de TIC e Telecom no país.
Fonte: Brasscom 2021 e UT.
No Relatório da Brasscom, a remuneração do setor TIC, do subsetor de Serviços de alto valor
agregado e Software, Telecom e Serviços de Implantação inclui benefícios comumente oferecidos no
setor.
4.2 EMPREENDEDORISMO E STARTUPS
Apesar de não ter sido citado como habilidade inerente do profissional de TI, o espírito
empreendedor também é muito bem-vindo aos profissionais dessa área.
Saber sobre empreendedorismo também é um quesito que não pode ser deixado de fora. Além
de desenvolver os sistemas ou prestar serviços de TI, muitas vezes o profissional deve saber como
divulgar e vender seu produto/serviço. Ter um espírito empreendedor pode ser o caminho para o
sucesso. Muitas startups começam assim, com uma ideia criativa e espírito empreendedor.
A popularização da internet e smartphones também contribui enormemente para o crescimento
do mercado digital no Brasil. No mercado digital, houve a proliferação de startups brasileiras. Startup
é um grupo de pessoas à procura de um modelo de negócios repetível e escalável, trabalhando em
 condições de extrema incerteza. As empresas startups que atingem mais de 1 bilhão de dólares são
chamadas de unicórnio.
As fintechs no Brasil mostraram aumento de 96% ao ano. De acordo com a Nubank, as fintechs
são startups ou empresas que desenvolvem produtos financeiros totalmente digitais, nas quais o uso
da o uso da tecnologia é o principal diferencial em relação às empresas tradicionais do setor. Algumas
das fintechs mais conhecidas no Brasil: Neon, Stone, Nubank, Getnet, Ebanx, Contabilizei, C6bank,
Vero, Safrapay, Pagseguro, Nibo, Contaazul, Mercado pago, banco Inter, Geru e Creditas. Essas
fintechs utilizam uma abordagem centrada no consumidor.
O Brasil ingressou no rank dos países com mais unicórnios no mundo, possuindo 16 deles
(considerando até 2021): Stone, Gympass, Nubank, Ifood, Loggi, Quinto andar, Arco, Pagseguro, 99,
WildLife, Creditas, Loft, Vtex, C6 Bank e Madeira Madeira.
A presença de startups está concentrada em São Paulo. Sua economia é comparável a dos
maiores países do mundo.
Por que essas informações são importantes? São relevantes para nós que somos da área de TI
porque nos mostra um cenário que é favorável para o desenvolvimento. Se, cada vez mais, mais
pessoas estão conectadas a internet, utilizando dispositivos digitais como computadores e
principalmente smartphones, isso indica que as pessoas estão baixando mais apps, e que as empresas
vão precisar de mais desenvolvedores e consequentemente mais profissionais na área de TI.
4.3 A MULHER E O MERCADO DE TI
Essa parte da etapa aborda como é o mercado de trabalho na área de TI para as mulheres.
Primeiramente, veremos algumas mulheres que contribuíram para o desenvolvimento tecnológico no
mundo.
Créditos: HappySloth/Shutterstock.
O primeiro programador da história é na verdade uma programadora. Seu nome é Ada Lovelace.
Ela era uma matemática inglesa e escreveu o primeiro algoritmo para a máquina analítica de Charles
Babbage. A linguagem de programação Ada foi criada em homenagem a ela pelo Departamento de
Defesa dos Estados Unidos.
Crédito:Smile Ilustras.
Grace Murray Hopper foianalista de dados da marinha americanae criou a linguagem de
programação Flow-Matic, que serviu de base para acriação do COBOL. É de autoria dela otermo
“bug”.
Créditos: patuletail//Shutterstock.
Hedwig Eva Marie Kiesler, mais conhecida como Hedy Lamarr, é a mãe do wifi. Mais famosa
como atriz do que como cientista em sua época, durante a segunda guerra, ela inventou um aparelho
de interferência em rádio, que posteriormente possibilitou a criação de tecnologias como wifi e
CDMA (Code Division Multiple Access, ou Acesso Múltiplo por Divisão de Código).
Vimos sucintamente (muito sucintamente, eu diria!) sobre essas três mulheresque em muito
contribuíram para o desenvolvimento tecnológico no mundo. Com base nesses nomes,
posteriormente você pode se aprofundar fazendo pesquisas na internet e conhecendo mais sobre
essas mulheres maravilhosas. A seguir, vemos sobre a presença das mulheres no mercado de TI.
No censo da indústria de jogos digitais realizada pela Abra Games em 2022, constatou-se que na
maioria dos casos o desenvolvedor era do sexo masculino. Apesar de ser um censo da indústria de
jogos, esses números refletem a área de TI.  Estima-se que mais de 80% dos profissionais que
trabalham nesta área são homens, ou seja, a participação das mulheres na área de TI ainda é muito
pouco.
No segundo censo, as mulheres que realmente trabalhavam com programação atingiam apenas
11%, enquanto os homens atingiam 89%. Apesar de parecer uma porcentagem muito pequena, a
presença de mulheres vem aumentando nos últimos anos. Entre os anos de 2014 e 2018, o aumento
do número de mulheres na área de desenvolvimento de jogos triplicou. Já no censo feito pela Abra
Games em 2022 essa proporção de colaboradoras que trabalham com programação aumentou para
15%.
Na área de desenvolvimento de software em geral não é diferente. Segundo pesquisa da Revelo,
feita entre janeiro e dezembro de 2021, apenas 12,3% de desenvolvedores são do sexo feminino.
Apesar de parecer um número pequeno, entre 2014 e 2019, houve um aumento significativo de 60%
de mulheres na área de desenvolvimento. Ainda de acordo com a Revelo, considerando experiência e
gênero, a proporção de profissionais de tecnologia, em sua maioria desenvolvedoras, diminui
conforme o aumento da senioridade. Isso ilustra um cenário positivo, pois quer dizer que cada vez
mais as mulheres mais jovens estão se interessando por essa área de desenvolvimento. No gráfico a
seguir, podemos visualizar com mais clareza esse cenário.
Fonte: Revelo e UT.
Em tempo: Revelo é uma empresa de tecnologia no setor de recursos que oferece uma
plataforma de recrutamento e seleção que conecta candidatos às vagas de forma ágil e humanizada.
No último tópico, voltaremos a falar sobre as mulheres na área de TI.
4.4 TECNOLOGIAS EMERGENTES
4.4.1 virtualização e  conteinerização
A computação em nuvem, muitas vezes referenciada como cloud computing, tem como definição
mais básica um computador localizado em algum lugar acessado via Internet e usado de alguma
maneira.
A AWS (Amazon Web Services), provedora de serviços de computação em nuvem, define,
baseada em seus serviços, que a computação em nuvem é a entrega sob demanda de poder
computacional, armazenamento de banco de dados, aplicativos e outros recursos de TI por meio de
uma plataforma de serviços de nuvem via Internet com definição de preço conforme o uso.
Mas por que falar em computação em nuvem? Tendências que foram ressaltadas pela pandemia
é a da virtualização e conteinerização pois a criação de um ambiente de desenvolvimento pode ser
árdua e demorada. Mais adiante, discutiremos com mais detalhes a virtualização.
A solução é hospedar códigos e criar, testar e implantar os aplicativos na nuvem. Isso possibilita
disponibilizar softwares com mais rapidez, fazendo ainda com que o time se torne mais produtivo.
Durante a pandemia de Covid-19, houve um enorme crescimento da utilização de serviços na
nuvem. De acordo com os Dados da Brasscom, em 2020 houve um destaque de crescimento em
relação ao ano anterior para software na Nuvem com 165,8% e infraestrutura na Nuvem com 127,8%.
Já no relatório setorial referente a 2021, o crescimento foi de 32% para software na nuvem e
infraestrutura na nuvem com 42%.
Existem várias empresas que oferecem serviços na nuvem. A AWS (Amazon Web Services) é uma
delas, sendo líder global em serviços de nuvem. A Amazon Web Services disponibiliza vários serviços
de computação em nuvem para os três modelos de serviço: IaaS (Infraestrutura como Serviço), PaaS
(Plataforma como serviço) e SaaS (Software como Serviço). A AWS utiliza a prática do dogfooding, ou
seja, utiliza seu próprios produtos e serviços, tendo um foco implacável no cliente.
Como mencionado anteriormente, veremos a seguir as características da virtualização, para que
seja possível compreendermos o que é conteinerização e computação de borda.
A virtualização consiste em uma máquina física que emula várias máquinas virtuais. Cada
máquina Virtual roda uma cópia do sistema operacional, como Windows, Mac OS ou Linux. Ou seja, a
virtualização cria um ambiente virtual de computação (simulando um ambiente real) ao invés de um
ambiente físico. Um exemplo de emulador é o VMWare e VirtualBox. O conceito de virtualização não
é novo, existe desde 1960, mas é uma tendência que foi ressaltada com a popularização da
computação em nuvem.
Os contêineres são um método de virtualização do sistema operacional que permite executar
um aplicativo e suas dependências em processos isolados de recursos. Simplificadamente os
containers empacotam o código, as configurações e as dependências de um aplicativo em um único
objeto. O Docker é um bom exemplo de produto que utiliza virtualização para entregar pacotes de
softwares denominados contêineres. A seguir, podemos visualizar a logo do Docker, que representa
uma baleia com o dorso empilhado de contêineres.
4.4.2 Computação de borda
Se procurarmos um pouco na internet, encontraremos várias definições sobre computação de
borda. A seguir, algumas definições dadas por empresas reconhecidas mundialmente na área de TI.
A definição dada pela Intel é de que “a computação de borda se refere ao processamento, análise
e armazenamento de dados mais próximos de onde eles são gerados para permitir análises e
respostas rápidas, quase em tempo real”.
Já a IBM define a computação de borda como “um modelo de computação distribuída que
aproxima os aplicativos corporativos das fontes de dados, como dispositivos de IoT ou servidores de
borda local”. Essa proximidade com os dados em sua fonte pode gerar grandes benefícios de
negócios: insights mais rápidos, tempos de resposta melhores e disponibilidade de largura de banda
aprimorada.
A Hewlett Packard dá uma definição mais simplificada dizendo que “a computação de borda é
uma forma de computação realizada no local ou próximo a uma fonte de dados em particular,
minimizando a necessidade de os dados serem processados em um data center remoto.”
Analisando as definições, podemos simplificar ainda mais e dizer que a computação de borda
aproxima os equipamentos de onde estão os dados que são gerados. A computação de borda é uma
evolução da computação em nuvem e teve origem em 1990 com o surgimento das CDNs (Redes de
entrega de conteúdo), que armazena conteúdo próximo dos locais de entrega.
Esse é o recurso utilizado por empresas como Netflix e Disney plus, que conseguem entregar
conteúdo rapidamente e sem “travar”. A computação de borda é uma tendência que foi ressaltada
com o aparecimento do conceito de IoT (Internet das Coisas). Com a possiblidade de se conectar à
internet objetos que utilizamos no dia a dia, como eletrodomésticos, carros, baba eletrônica surgiu o
conceito de IoT.
TEMA 5 – MITOS E VERDADES DO DESENVOLVIMENTO DE
SOFTWARE
Os mitos do desenvolvimento de softwares são definidos como sendo crenças comuns, sem
fundamento científico sobre o software e o processo utilizado para criá-lo. De acordo com Pressman
(2016), existem os mitos de   gerenciamento, mitos do cliente e mitos dos profissionais da área. A
seguir, veremos essas três categorias de mitos, conforme disposto por Pressman (2016).
Mitos de gerenciamento
Existem muitos outros mitos na área de gerenciamento. Listamos aqui alguns mitos relacionados
ao gerenciamento de projetos de software.
Mito Realidade
Já temos um livro cheio de padrões e procedimentos O livro é utilizado?
Se o cronograma atrasar, acrescentarmos mais
programadores
Acrescentar mais pessoal atrasa o projeto
Ao terceirizar o projeto é possível relaxar Acompanhamento contínuo.
Fonte: Kanshirocom base em Pressman (2016).
Mitos do Cliente
Compreender as necessidades do cliente é um grande desafio em qualquer projeto. No
desenvolvimento de software não é diferente. Muitas vezes, o cliente tem expectativas de como o
software funcionará, muitas vezes errôneas. Cabe lembrar aqui que, apesar de ser o cliente que deve
definir o que será feito, é o profissional de TI, como especialista da área, que deve saber convencer o
cliente quando achar que uma especificação não cabe em uma solução de tecnologia. O quadro a
seguir mostra os mitos relacionados ao cliente.
Mito Realidade
Uma definição geral dos objetivos é suficiente para começar
a escrever os programas – podemos preencher os detalhes
posteriormente.
A principal causa do fracasso de projetos de software são os
requisitos iniciais maus definidos/entendidos de maneira
errônea. A probabilidade de sucesso de um projeto aumenta
se os requisitos iniciais forem bem definidos
Os requisitos de software mudam continuamente, mas as
mudanças podem ser facilmente assimiladas, pois o software
é flexível
O impacto da mudança depende de quando ela é
introduzida.
Fonte: Pressman (2016).
Mitos dos profissionais da área
Apesar de muito estudo, muitos profissionais da área ainda caem em alguns dos mitos do
desenvolvimento de software. Listamos os mitos mais conhecidos relacionados aos profissionais da
área.
Mito Realidade
Uma vez que o programa foi feito e colocado em uso, nosso
trabalho está́ terminado.
Entre 60 e 80% de todo o esforço será́ despendido após a
entrega do software ao cliente pela primeira vez
Até́ que o programa esteja “em execução”, não há como
avaliar sua qualidade
Existem formas de avaliar a qualidade antes da
implementação do sistema.
O único produto passível de entrega é o programa em
funcionamento.
Uma variedade de outros artefatos são necessários: modelos,
documentos, planos etc.
A engenharia de software nos fará criar documentação
volumosa e desnecessária e, invariavelmente, vai nos
retardar.
Objetivo: criar um produto de qualidade. Uma qualidade
melhor leva à redução do retrabalho.
Fonte: Pressman (2016).
Além dos mitos de engenharia de software, temos também aqueles mitos não técnicos da área
de TI. A seguir, são abordados alguns desses mitos.
TI não é uma área para mulheres
Alguns podem até dizer que TI não é uma área para mulheres, mas a própria história contradiz
isso, e temos exemplos de mulheres como Ada Lovelace, Hedy Lamarr e Grace Hooper. Mas então por
que temos um número tão baixo de mulheres na área de TI?
Atualmente, estão sendo feitas muitas pesquisas em relação à predominância de homens, não só
na área de TI, mas na STEM (acrónimo em inglês para "Science, Technology, Engineering and
Mathematics"). Em um estudo feito por DO (2021), são resumidas as questões que influenciam as
escolhas de mulheres jovens ao estudar STEM/TI. Essas questões levantadas por vários pesquisadores
da área de psicologia e comportamento foram divididas em três níveis: individual, interpessoal e
estrutural. No nível individual são elencadas algumas questões individuais que afetam a motivação e
as decisões das mulheres ao buscar um diploma de TI em nível superior. Dentre as questões
levantadas estão: autoeficácia; atitudes e interesses; exposição prévia à computação; e percepção de
carreira. A seguir, uma breve explicação de cada quesito que compõe o nivel individual:
Autoeficácia: é a crença na própria capacidade de realizar uma tarefa ou um objetivo.
Atitudes e interesses: esse quesito faz referência a atitudes em relação aos computadores e
afirma que os interesses das meninas preveem significativamente sua busca por um diploma de TI
Exposição prévia à computação: meninas com experiência em computação têm maiores
interesses e maior probabilidade de concluir um curso de TI. Esta relação é explicada pelo argumento
de que o acesso precoce a computadores reduz a intimidação e aumenta a percepção de capacidade.
A familiaridade   com computadores estimula também o interesse e a curiosidade da criança e,
simultaneamente, promove seu senso de competência. (Adya, M.; Kaiser, K.M. 2005. “Early
Determinants of Women in the IT Workforce: A Model of Girls’ Career Choices.” apud Do (2021))
Percepção de carreira: estudos indicaram que trabalhos que envolvem interações sociais e que
valorizam as recompensas sociais têm maior probabilidade de atrair mulheres do que aquelas que
exigem trabalho com objetos físicos e/ou estão mais focadas em ganhar altos salários e poder. Há
uma percepção errônea de que uma carreira em STEM não é associada a objetivos comunitários, o
que leva as mulheres a se afastarem dessa área (Dasgupta, N. Stout, J.G. 2014. “Girls and Women in
Science, Technology, Engineering, and Mathematics: STEMing the Tide and Broadening Participation in
STEM Careers.” Policy Insights from the Behavioral and Brain Sciences 1(1):21–29 apud (DO (2021))
Além das questões individuais, também são mostradas questões interpessoais como influência
dos pais e dos pares e modelos femininos “comuns” a serem seguidos em uma área dominada por
homens. A pesquisa também cita que a presença de mentores, podendo ser um amigo, irmão, primo,
ajuda as alunas a combaterem várias formas de isolamento, micro agressão e a escassez de modelos
de mulheres.
Quanto a questões estruturais levando em consideração o ambiente acadêmico, infelizmente a
literatura aponta vários casos do papel negativo dos professores escolares no reforço dos
estereótipos de gênero em STEM. O relatório cita ainda que a indústria de games e filmes pode
reforçar os estereótipos de gênero, visto que ainda hoje proliferam a existência de personagens
femininas sexualizadas, o estudo aponta ainda que a porcentagem de personagens femininas
principais não evoluiu ou se desenvolveu ao longo do tempo.
Embora essas constatações não sejam definitivas, nos levam realmente a pensar qual é a
motivação e as expectativas de uma mulher ao se buscar um diploma na área de TI.
Ser bom em matemática
Nem toda área de TI exige cálculos avançados. Em um vídeo de divulgação para incentivar
futuros programadores feito pela code.org, onde vários famosos da área de TI, como Zuckeberg do
Facebook, Jack, criador do Twiter, e Bill Gates, fundador da Microsoft, participam. O próprio Bill diz
que para ser um programador “é preciso apenas saber adição e fração ...” e, é claro, um pouco de
multiplicação também.
E embora tenhamos mitos, algumas coisas são verdades:
Saber Inglês é imprescindível
Um profissional da área de TI que não sabe inglês pode perder muitas oportunidades. Em um
mundo globalizado, onde a tecnologia muda rapidamente é importantíssimo que se aprenda o básico
de inglês, permitindo assim que se comunique, entenda outros profissionais e saiba pelo menos
entender um manual ou uma especificação em inglês. Mas existem bons tradutores online! Sem
dúvida, mas saber o básico de inglês pode abrir um mar de oportunidades.
Área de TI é uma área em expansão
Como vimos anteriormente, a demanda por profissionais de TI só aumenta. Essa área é uma que
não sofreu crise por conta da pandemia, ao contrário, esses profissionais ficaram ainda mais
disputados.
Profissionais de TI devem estar em constante aprendizado
Se vai trabalhar na área de TI, deve ter em mente que vai ter que estudar durante a vida toda,
pois a tecnologia muda rapidamente. De um ano para outro as tecnologias são aprimoradas,
enquanto outras novas surgem. As versões de linguagens e softwares existentes mudam
continuamente. Constantemente quando acha que dominou uma linguagem ou framework,
determinado comando fica “deprecated” – obsoleto - e (re)começa a saga para se adaptar ao “novo
jeito” de fazer.
FINALIZANDO
Nessa etapa, aprendemos um pouco sobre a crise do software, pudemos ver os diferentes papeis
do profissional de TI. Verificamos que, embora um profissional desempenhe várias funções, ainda
assim são papéis diferentes. Pudemos conhecer ainda o perfil

Continue navegando