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.