Introduo Engenharia de Software Apostila01

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 10

O que é Engenharia de

Software?

A Engenharia de Software capacita as pessoas com a utilização de teorias,


técnicas e ferramentas da Ciência da Computação para produção e
desenvolvimento de sistemas. Por meio da análise, coleta e processamento de
dados, ainda identificam potenciais falhas nesses produtos e criam soluções de
alta performance.

O objetivo dessa Engenharia é acompanhar as inovações e ensinar aos alunos as


melhores técnicas e modelos a serem seguidos. Com esse conhecimento
adquirido em uma graduação, o profissional tem diversas oportunidades de
atuação no mercado, como veremos a seguir.

https://www.youtube.com/watch?v=tunXdBtF8G0&feature=youtu.be
O que um engenheiro de
software pode fazer?

O engenheiro de software cuida de toda a parte técnica e científica dos sistemas,


desde o desenvolvimento até a gestão. Ele pode cuidar tanto das aplicações
visíveis aos usuários (que é chamada de front-end) quanto dos bastidores ––
nesse caso, o back-end.

Veja algumas das possíveis atribuições desse profissional:

• no desenvolvimento, ele pode criar jogos e softwares para computadores,


videogames e dispositivos móveis (tablets e smartphones);
• na arquitetura de softwares, o profissional fica responsável pela parte estrutural
das aplicações, com um alto controle de qualidade para garantir eficiência;
• por falar em eficiência, ainda há os testes nos sistemas e apps para localizar
possíveis falhas e corrigi-las;
• na parte de gestão, que acontece quando os sistemas já estão disponíveis, o
engenheiro faz o gerenciamento do negócio e projetos das empresas que
utilizam o software.
Qual é a diferença entre
Ciência da Computação e
Engenharia de Software?

O cientista da computação tem objetivos diferentes do engenheiro, por mais que


um precise do outro para um software funcionar. Nesse sentido, você pode se
perguntar: “se as duas profissões são da mesma área, qual eu devo escolher?”.
Então, isso vai depender muito de você!

As pessoas formadas em Ciências da Computação trabalham com a parte mais


teórica, ou seja, com um viés um pouco mais analítico. Já os engenheiros de
software ficam com a parte do desenvolvimento, desde a manutenção até a
adequação aos dispositivos.

Além disso, quem optar por fazer essa Engenharia pode procurar por cursos a
distância, disponibilizados em algumas universidades. Então, se você gosta mais
de teoria, é indicado escolher a Ciência da Computação. Mas, se prefere
desenvolver, criar e gerenciar softwares, cursar Engenharia de Software é uma
boa opção.

Quais são os benefícios da


Engenharia de Software
para a sociedade?

Agora que você já sabe o que é Engenharia de Software, vamos mostrar como a
área pode ser útil. Desenvolvendo e gerenciando softwares, um engenheiro
oferece alguns benefícios importantes para o mercado e as relações
interpessoais. Veja só!
1. Acompanhar os avanços
tecnológicos
Que a tecnologia só avança, todos nós sabemos, não é mesmo? Acompanhar isso
não é nada fácil, embora, sem dúvidas, é um trabalho muito recompensador.

Imagine estar sempre atento às novidades da tecnologia e, quem sabe, até criar
e inovar você mesmo? Então, essa é a vida de um engenheiro de software.
Sempre em busca de novos métodos para desenvolver e gerenciar sistemas e
aplicativos da melhor forma, visando o bem da sociedade.

2. Produzir sistemas de software


eficientes
Ser um engenheiro de software é estar antenado com as tendências e, assim,
criar ferramentas e sistemas que sejam eficientes. Pense no aplicativo mais
inovador que você já utilizou: não importa o segmento, com certeza, um
profissional da área fez parte do projeto.

Uber, iFood, Easy Táxi, Grubster, BoaLista, entre outros. Todos esses apps
passaram pelas mãos de um engenheiro de software. O que queremos dizer com
isso é que essa Engenharia realmente traz benefícios, como a praticidade e a
otimização de tempo com esses aplicativos.

3. Facilitar a vida dos usuários


Imagine como é a vida do engenheiro que desenvolveu o aplicativo Uber, por
exemplo. Pode ser que ele não tenha tido a ideia, mas, com certeza, ajudou a
transformar essa ideia em realidade.

A Engenharia de Software está no mundo para inovar e facilitar a vida dos


usuários que, com a correria do dia a dia, muitas vezes não têm tempo para
pedir uma comida ou até mesmo esperar um táxi.

Então, se você tem como objetivo criar, inovar e trazer facilidades para a rotina
das pessoas por meio de sistemas e aplicativos, saiba que a melhor escolha é a
Engenharia de Software.
Quais são as áreas de
atuação do engenheiro de
software?

Diante de tanta relevância, dá para entender bem o motivo da valorização do


engenheiro de software, concorda? A seguir, fique por dentro de algumas das
possíveis áreas de atuação desse profissional!

Desenvolvimento de softwares
Esse é o caminho mais comum, em que o profissional tem a chance de assumir
tanto o front-end quanto o back-end. A escolha depende das linguagens de
programação com as quais ele tem mais afinidade. De toda forma, ambos os
cargos são fundamentais ao desenvolvimento de softwares.

Há um terceiro caminho, que é assumir a posição de fullstack. Aqui, o


engenheiro de software vai trabalhar com as duas frentes. Como podemos
imaginar, é um profissional mais generalista e completo, portanto, bastante
requisitado pelo mercado.

Banco de dados
Os bancos de dados são conjuntos de informações adquiridas por diversos
meios na internet. Basicamente, tudo que uma pessoa faz gera dados para as
empresas, desde preferências a formas de consumo. O engenheiro de software
pode gerenciar tudo isso, analisando padrões para fornecer boas ideias aos
gestores.

Com a Lei Geral de Proteção de Dados (LGPD), ele ainda precisa de uma
atuação que não interfira nos direitos dos usuários de preservar seus dados
pessoais. Por isso, o mercado está em um grande processo de adequação e
precisará de profissionais qualificados para garantir a conformidade com a
legislação –– sob riscos de cair em multas altíssimas.
Pesquisa e docência
Se você gostar de realizar pesquisas durante a graduação, saiba que também há
espaço para essa atuação no mercado. Afinal, é preciso que profissionais se
dediquem aos estudos das tendências e possibilidades para auxiliar no
crescimento da área.

Existem empresas com foco posterior ao desenvolvimento dos softwares, que


necessitam de engenheiros com o perfil técnico. Outro caminho é ser docente
em faculdades, ajudando a formar novos profissionais de software. Assim, você
vai transmitir seus conhecimentos e orientar os estudantes nas melhores
práticas da profissão.

Quais dados são relevantes


pra quem quer atuar na
Engenharia de Software?

De acordo com o Tech Report 2020, 306,4 mil empresas trabalham no setor de
tecnologia no Brasil. O número de profissionais passou de 310 mil para 365 mil
de 2014 a 2018, um aumento de 17%. E tem mais: as empresas brasileiras de
tecnologia tiveram um faturamento correspondente a 3,3% do PIB de 2018, no
montante de R$ 240 bilhões.

Como surgiu a Engenharia de


Software?
O termo “crise do software” foi criado no final dos anos 60 para tratar de
uma séria questão que começava a despontar: a dificuldade enfrentada
para desenvolvimento de softwares. Essa situação foi desencadeada
pela complexidade cada vez maior dos problemas, ausência de técnicas bem
estabelecidas e crescente demanda por novas aplicações. Para contorná-la,
surge a engenharia de software, que traz uma abordagem disciplinada e
sistemática sobre o desenvolvimento, operação e manutenção, incluindo
métodos para projeção, implementação, teste e documentação.

Qual modelo usar?


Um modelo de desenvolvimento de software tem como objetivo descrever
formalmente as atividades a serem seguidas. Existem diversas opções: o
modelo cascata, o de prototipação, o espiral, o incremental e o RUP, todos
com suas vantagens e desvantagens. No entanto, a principal metodologia
usada nos dias de hoje é a Ágil, mais especificamente o Scrum. Com foco na
gestão de projetos, ela tem uma base no planejamento iterativo e
incremental, por meio de Sprints (um ciclo envolvendo as pessoas que estão
trabalhando no projeto, com reuniões e entregas frequentes, a fim de
promover um desenvolvimento mais focalizado e feedback frequente).

Em cada Sprint, os membros da equipe – geralmente pequena – têm tarefas a


cumprir e, no fim de cada uma delas, é feita uma reunião de alinhamento
sobre o que foi entregue. O Scrum, além de ser muito eficaz, permite a
alteração de funcionalidades durante o desenvolvimento de acordo com a
necessidade e permite um processo muito fluido e, por isso, é o método
usado para grande parte dos projetos.

Ciclo Scrum

O método SCRUM é o mais usado nos dias de hoje.


Requisitos do projeto
Uma das partes mais importantes do processo de desenvolvimento é a
engenharia de requisitos, quando é definido quais são as necessidades e
desejos do cliente para o projeto. Depois de três etapas (elicitação, análise,
modelagem), é desenvolvido um documento com a especificação de todos os
requisitos funcionais e de qualidade do software. Durante esse processo, é
fundamental que as etapas citadas acima sejam seguidas, para garantir que o
time está alinhado com as expectativas do cliente. Apesar de parecer óbvio, a
parte de definição dos requisitos do projeto deve ser discutida e elaborada de
forma clara, a fim de evitar problemas futuros, onde a funcionalidade é
interpretada de uma maneira diferente por pessoas diferentes.

Imagem que ilustra a importância do documento de requisitos para um projeto bem definid o

A ausência de um documento de requisitos claro pode gerar confusão na


execução do projeto.
Arquitetura de software
A arquitetura de software é a organização dos componentes e
relacionamentos de um sistema e pode ser considerada o pilar de qualquer
projeto bem desenvolvido. Apesar de cara, é fundamental para evitar falhas e,
por isso, deve ser utilizada, principalmente em softwares críticos. Ao longo
dessa etapa, é feita uma análise de quais requisitos são importantes para a
arquitetura e, com eles, algumas alternativas são criadas e avaliadas para
decidir qual solução é a mais adequada para seguir como pilar do projeto.

Estimativas e métricas
É importante saber, antes de tudo, que as estimativas não são exatas e são
afetadas por variáveis humanas, técnicas, ambientais e políticas. No entanto,
algumas táticas podem ser usadas para aumentar a precisão no cálculo, como
dividir um problema grande em vários menores, utilizar um modelo empírico
(COCOMO, por exemplo), usar várias técnicas ou baseá-las em dados
históricos. Esses dados são construídos ao longo do tempo, por meio de
medidas de tamanho, custo, esforço, qualidade, entre outras, obtidas através
de métricas.

Algumas das mais conhecidas são LOC ou KLOC (indicando o número de


linhas de código) ou pontos por função (focada na funcionalidade, evitando a
dependência da linguagem escolhida) para tamanho e erros por KLOC, tempo
médio para mudança, integridade (capacidade de suportar ataques) e
usabilidade para qualidade. Algumas medidas, como custo e esforço, têm
relação direta com o tamanho. Além de servir como base para estimativas, as
medidas de software também indicam a qualidade do produto, avaliam a
produtividade dos envolvidos, determinam os benefícios de métodos e
ferramentas e justificam novos investimentos, permitindo uma visão melhor
do processo e do produto.

Testes
O objetivo dos testes é garantir que o processo e o produto atinjam os níveis
de qualidade especificados, assegurando que os requisitos dos usuários estão
sendo atendidos e que todas as fases e entre fases do desenvolvimento sejam
consistentes, completas e corretas. Contudo, o grande número de
combinações de entradas e saídas, problemas com os requisitos e a falta de
tempo ou de treinamento são muitos dos obstáculos encontrados durante
essa etapa e, por conta deles, os testes são deixados de lado.
Isso é um grande problema, porque erros que passam despercebidos se
tornam falhas reveladas durante a utilização, gerando necessidade de
manutenção e um alto custo. Para evitar isso, o processo deve ser feito com
cuidado e dividido em etapas: planejamento, projeto e execução de
casos de teste e análise de resultados. Esses casos consistem em uma
entrada e em uma saída prevista e devem considerar partes ainda não
testadas, aumentando a probabilidade de revelar um novo erro. A confecção
deles pode ser tão difícil quanto o projeto do produto, mas é um dos
melhores mecanismos para a prevenção de defeitos.

Manutenção
A manutenção é a parte mais problemática do ciclo de vida do software,
podendo chegar a mais de 70% do esforço de desenvolvimento, por conta de
migrações para novas plataformas, arquiteturas mal projetadas, melhorias
para atender novas necessidades, entre muitas outras dificuldades e
situações. Além disso, essa etapa também tem um alto custo financeiro
(passando de 50% do orçamento em alguns casos), pode gerar insatisfação do
cliente e reduzir a qualidade global do software. Apesar de todos esses
problemas, a manutenção é uma fase inevitável no processo e, por isso, é
essencial que o software tenha manutenibilidade.

Para isso, algumas práticas podem ser adotadas: cuidado com a codificação,
documentação e teste, adoção de boas arquiteturas, disponibilidade de um
time qualificado e uso de linguagens de programação e sistemas operacionais
padronizados. A fim de diminuir os custos e garantir a adesão dessas
práticas, a manutenção do software deve ser considerada durante o
desenvolvimento de todas as etapas anteriores, sempre lembrando da sua
importância e garantindo a manutenibilidade.

Ou seja, a engenharia de software é composta por diversas etapas, que


precisam de muita atenção, esforço e dinheiro e, por isso, grande parte das
empresas opta por deixá-la de lado. Para elas, estão economizando recursos
ao evitar esse processo longo e detalhista, mas na realidade, como foi
descrito nesse artigo, estão apenas postergando os gastos. A adoção
da engenharia de software na sua empresa não é um desperdício
de dinheiro e sim um investimento no projeto, garantindo que os custos
futuros serão menores e a qualidade do produto será maior, gerando uma
aprovação superior.

Você também pode gostar