• Nenhum resultado encontrado

O que é Engenharia de Software?

N/A
N/A
Protected

Academic year: 2022

Share "O que é Engenharia de Software?"

Copied!
10
0
0

Texto

(1)

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

(2)

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.

(3)

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ó!

(4)

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.

(5)

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.

(6)

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

(7)

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.

(8)

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.

(9)

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.

(10)

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.

Referências

Documentos relacionados

Fresamento de cantos a 90º e faceamento a altas taxas de avanço.. Passo

Scenario: export multiple members link not enabled when there are no member selected Given I am at the member list page. And the system has no

• Simulating Server Push with Client Pull and

projetar para os seus clientes, bons projetos, a Arquitetura e o Urbanismo que ele tomou como o seu Conceito de Arquitetura e Urbanismo, que difere-se entre o

• Roles são especificações (abstratas ou não) para as portas e

Paulo Borba e Fernando Castor Centro de Informática.. Universidade Federal

Scenario: export multiple members link not enabled when there are no member selected Given I am at the member list page. And the system has no

• Simulating Server Push with Client Pull and