Sem resumo de edição
Etiqueta: visualeditor
Lord mary (discussão | contribs)
 
(69 revisões intermediárias por 4 usuários não estão sendo mostradas)
Linha 1: Linha 1:
= Evolução na profissão =
= Evolução na profissão =
<br>A Engenharia de Software surgiu em meados dos anos 1970 em uma tentativa de contornar a crise do software e dar um tratamento de engenharia ao desenvolvimento de sistemas de software complexos. Um sistema de software complexo se caracteriza por um conjunto de componentes abstratos de software encapsulados na forma de procedimentos, funções, módulos, objetos ou agentes interconectados entre si, compondo a arquitetura do software, que deverão ser executados em sistemas computacionais.


Atualmente existe um destaque todo especial para a Engenharia de Software na Web. Também utilizado por Presmann a sigla WebE, é o processo usado para criar WebApps de alta qualidade. Embora seus princípios básico sejam muito próximos da Engenharia de Software clássica, existem peculiaridades específicas e próprias.
* Monitoria;
 
* Projeto PROSSIGA;
Outra área de tendência em Engenharia de Software trata da aplicação de técnicas otimização matemática para a resolução de diversos problemas da área. A área, denominada Search-based software engineering, ou Otimização em engenharia de software em Português, apresenta vários resultados interessantes.
* “Smart contracts como uma plataforma para computação segura” (Artigo);
 
*“Computação multiparte segura em smart contracts” (TCC);
Eventos acadêmicos também mostram tópicos interessantes sobre futuras tendências de engenharia de software. O Brasil em 2013 sedia grandes eventos de engenharia como a Conferência Internacional de Engenharia de Requisitos e a Escola Latino Americana de Engenharia de Software.
*  Estagiária (Out. 2018 - Mar. 2020);
 
* Júnior I (Mar. 2020);
O Brasil é o oitavo país no ranking mundial de desenvolvedores, fabricantes e distribuidores de softwares, movimentando cerca de 27 bilhões de dólares apenas com o mercado interno, sem considerar as exportações. Esse cenário mantém o setor aquecido para os engenheiros. O uso massivo de celulares e tablets pela população brasileira também eleva a busca por profissionais aptos a lidar com esses sistemas. Neste caso, o engenheiro de software é contratado para desenvolver jogos e outros aplicativos. O principal mercado para o profissional são os polos de tecnologia da Região Sudeste, além do Porto Digital, em Recife. A demanda internacional por esse engenheiro também é grande.
* Júnior III (Ago. 2020);
 
* Pleno II (Mar. 2021);
“Quase 14 mil companhias atuam no mercado brasileiro de Tecnologia da Informação, segundo a Associação Brasileira das Empresas de Software (Abes). Essas empresas dedicam-se ao desenvolvimento, à fabricação, à comercialização e à distribuição de hardwares e softwares (72% do total) e à prestação de serviços de informática (27%). Juntas, movimentaram 60 bilhões de dólares em 2015. As 1.600 empresas filiadas à Abes geram 120 mil empregos diretos.” - Guia do Estudante.
* Pleno III (Jul. 2021);
* Pleno (Out. 2021).


= Descrição da atividade atual =  
= Descrição da atividade atual =  
<br>O engenheiro desta área dedica-se ao desenvolvimento de softwares e programas computacionais. Desenhando e testando novos programas, além de fazer sua manutenção e revisão. Cria aplicativos, jogos, plataformas digitais para atividades educacionais, sistemas embarcados e sistemas específicos, como médicos e bancários, de forma a elevar seu desempenho e produtividade. O bacharel também pode trabalhar em empresas públicas ou privadas, na área de inovação em startups e em grandes companhias de tecnologia.
<br>
Engenheira de Software na ZUP.


= Requisitos mínimos para exercer a profissão =
= Requisitos mínimos para exercer a profissão =
O principal atributo para ter sucesso na área está associado à capacidade de abstração e aprendizado. O conjunto de tecnologias evoluem muito rapidamente, é impossível se dizer expert em algo hoje em dia. Por outro lado ser capaz de entender o cenário e os componentes em horas é o mais relevante.


Domínio do Inglês não é opcional.
* Conhecer a base;
* Aprender rápido;
* Lidar com pessoas;
* Manter-se atualizado;
* Mais importante: saber utilizar as ferramentas ao seu redor.


Estudar código com base em ao menos uma das seguintes linguagens de programação orientada a objetos: C++, Java ou Python.
= Ferramentas usadas no dia-a-dia =


Aprenda outras linguagens de programação: repertório com Java Script, CSS, HTML, Ruby, PHP, C, Perl, Shell, Lisp e Scheme.
* Kotlin;
* Micronaut;
* AWS.


Desenvolva raciocínio lógico e conhecimento em matemática discreta
= Tecnologias envolvidas =
<br><br>


Desenvolva conhecimentos fortes em sistemas operacionais e em algoritmos/estruturas de dados.
- '''O que é a Tecnologia Serverless?'''


Aprenda UX Design, recursos online de inteligências artificiais, criptografia, programação paralela e como construir compiladores.
Serverless é um framework onde a execução dos códigos é realizada através de recursos alocados dinamicamente, sendo o provodedor de cloud o resposável por
executá-los.
O Serverless também pode ser referenciado como "FaaS" (Functions as a Service), significando que o provedor é em sua maioria escrito em fomato de funções.
Um exemplo de provedores do mercado atualmente é: AWS, Microsoft Azure, Google Cloud, entre outros.
Fazer o seu uso, significa que não será necessário gerenciar servidores, pois a plataforma em nuvem fará isso para você, sem tempos adicionais de instalar, manter e
administrar.
O Serverless é bem vantajoso, principalmente pelo fato de pagar somente o que é utilizado, cobrando apenas pelos recursos usados para executar os códigos, e assim
reduzindo os custos.
A quantidade de linguagens suportadas por ele é enorme, sendo possível trabalhar com vários times de criação que sejam autogerenciáveis, onde cada um poderá
trabalhar com a sua linguagem favorita.
Entretanto uma das desvantagens da arquitetura é o tempo de execução. Na hora de criar a sua aplicação é preciso ter a consciência de que para processos extensos
esse tipo de abordagem pode não ser tão vantajoso.


Pratique conhecimentos de algoritmo e habilidades de criação de códigos.
[[Arquivo:serverless1.png]]
<br>


= Ferramentas usadas no dia-a-dia =
= Exemplo de resultado tangível =
Jira - É uma ferramenta que permite o monitoramento de tarefas e acompanhamento de projetos garantindo o gerenciamento de todas as suas atividades em único lugar (licença comercial).
<p>
* Github - GitHub é uma plataforma de hospedagem de código para controle de versão e colaboração. Ele permite que você e outros trabalhem juntos em projetos de qualquer lugar. O GitHub usa o sistema de versionamento de projeto que hoje é conhecido como Git.
Projeto na área de segurança da ZUP usando Java, para desenvolver uma aplicação que era a porta de entrada da empresa. A aplicação era um intermédio entre o login da Google e o da empresa, conseguindo controlar as credenciais do usuário. Com esse intermédio, a empresa consegue controlar os acessos, conseguindo saber quem fez o que e o porquê, fazendo com que ações indevidas de pessoas possam ser detectadas.
</p>


* IntelliJ - IDE para desenvolver em Java.
= Upload da apresentação =


*  Teamcity - é uma ferramenta de integração contínua, que consiste em integrar o trabalho diversas vezes ao dia, assegurando que a base de código permaneça consistente ao final de cada integração. Sua principal característica é a execução de testes automáticos.
https://www.youtube.com/watch?v=M7O9shcD3jA


* Jenkins - mesma função do Teamcity.
[[Arquivo:Apresentação_Eng_Software.pdf]]
<br>


* Linux
= Dúvidas =
<Br>


= Tecnologias envolvidas =
* 01. Qual é  maior dificuldade atuando na área que está hoje?
- Todo o stack da internet+HTTP (Html, javascript, angular, jquery).
** "Acredito que os meus pontos construtivos mais evidentes é o desenvolvimento de soft skills relacionados à gerência de times."
 
<br>
- Java (Full stack).
 
- Python.
 
- Shell.<br>
 
= Exemplo de resultado tangível =
<br>-Desenvolvimento de software.
 
-Manutenção de software.


-Aplicação de tecnologias e práticas de gerência de projetos.
* 02. Quais as linguagens que mais estão sendo usadas no mercado?
** "Isso varia, depende do contexto do projeto. Todavia, de modo geral, tem algumas linguagens que aparecem frequentemente na maioria das empresas: Python, Java, Kotlin, Go, Javascript/Typescript."
<br>


-Inovações de tecnologias.
* 03. Atualmente, as tecnologias usadas por um engenheiro de software mudaram muito de uns anos pra cá?
** "Sim! Hoje um engenheiro de software também se preocupa, além de programação, com ferramentas de cloud."
<br>


- sistemas de software completos, seguros, amigáveis, usáveis, com qualidade, fáceis de manter e custo justo.
* 04. Com qual frequência você precisa estudar outras tecnologias?
** "Sempre, as coisas mudam MUITO rápido, então é necessário se atualizar regularmente."
<br>


= Upload da apresentação =
* 05. Você consideraria sua rotina agitada? Você geralmente se depara com questões de segurança?
https://drive.google.com/open?id=0B10QLPXspoxvSGtGWkl6cm1WSm9NT3ZtenZGYUNLejg4MXc0<br>
** "Sim. Questões de segurança são pré-requisitos para qualquer projeto (claro, a depender do projeto, o nível de segurança pode ser maior ou menor, mas sempre existe)."
<br>


== Dúvidas ==
* 06.  A área de desenvolvimento é um bom caminho para descobrir em qual mercado me interesso mais?
-'''Qual a diferenca entre o engenheiro de software e gerente de projetos?'''
** "Acredito que sim, você vai ter contato com vários contextos diferentes (não necessariamente ligados à programação) e pode ter uma ideia de qual carreira seguir."
<br>


'''R:''' A gestão de projetos tende a buscar uma visão ampla e geral a respeito de quaisquer tipos de projetos. O profissional de gestão de projetos é capacitado para gerenciar projetos das mais variadas naturezas, tendo como foco o planejamento, adequação e tratativa de situações problema, envolvendo recursos variados, como o orçamento, prazos e capital humano.A engenharia de software trata, em geral, das estratégias diversas que o desenvolvimento de aplicações poderá utilizar, padrões, técnicas, modelos e tendências.A principal diferença está no fato de que, como gerente de projetos, você provavelmente irá lidar mais com pessoas que com aplicações, análise e desenvolvimento. Embora as duas áreas sofram com pouca mão de obra qualificada, um gerente de projetos, em geral, ganha mais que um engenheiro de software.
* 07. Qual a maior dificuldade no dia a dia do engenheiro de software?
-'''O que faz o engenheiro de software?'''
** "Acredito que se manter atualizado é a maior dificuldade, tudo muda muito rápido e se você não se atualiza, acaba ficando pra trás."
'''R:''' A engenharia de software é o ramo da engenharia que se ocupa basicamente do desenvolvimento e manutenção de técnicas computacionais. O profissional desta área dedica-se à aplicação de inovações tecnológicas no desenvolvimento de novos sistemas computacionais podendo assim, desenvolver bancos de dados, novos softwares, jogos e programas interativos. O engenheiro de software pode atuar tanto em empresas públicas e privadas, assim como pode exercer a profissão como autônomo. O salário gira em torno dos 5.000 reais mensais.
<br>
-'''O que é engenharia de software?'''
'''R:''' Engenharia de software é uma área da computação voltada à especificação, desenvolvimento e manutenção de sistemas de software, com aplicação de tecnologias e práticas de gerência de projetos e outras disciplinas, visando organização, produtividade e qualidade.
-'''O que é preciso para se tornar um engenheiro de software bem sucedido?'''
'''R:'''
* Estudar código com base em ao menos uma das seguintes linguagens de programação orientada a objetos: C++, Java ou Python
* Aprenda outras linguagens de programação: repertório com Java Script, CSS, HTML, Ruby, PHP, C, Perl, Shell, Lisp e Scheme.
* Teste os seus códigos: aprenda a encontrar bugs, crie testes e quebre o seu próprio software
* Desenvolva raciocínio lógico e conhecimento em matemática discreta
* Desenvolva conhecimentos fortes em sistemas operacionais e em algoritmos/estruturas de dados
* Aprenda UX Design, recursos online de inteligências artificiais, criptografia, programação paralela e como construir compiladores.
* Trabalhe com outros programadores e em projetos fora da sala de aula, como criar e manter um site, construir um servidor ou fazer um robô.
* Trabalhe em um pequeno pedaço de um grande sistema, leia e compreenda o código existente, rastreie a documentação.
* Pratique conhecimentos de algoritmo e habilidades de criação de códigos.
* Domínio do Inglês.
-

Edição atual tal como às 14h21min de 14 de outubro de 2021

Evolução na profissão

  • Monitoria;
  • Projeto PROSSIGA;
  • “Smart contracts como uma plataforma para computação segura” (Artigo);
  • “Computação multiparte segura em smart contracts” (TCC);
  • Estagiária (Out. 2018 - Mar. 2020);
  • Júnior I (Mar. 2020);
  • Júnior III (Ago. 2020);
  • Pleno II (Mar. 2021);
  • Pleno III (Jul. 2021);
  • Pleno (Out. 2021).

Descrição da atividade atual


Engenheira de Software na ZUP.

Requisitos mínimos para exercer a profissão

  • Conhecer a base;
  • Aprender rápido;
  • Lidar com pessoas;
  • Manter-se atualizado;
  • Mais importante: saber utilizar as ferramentas ao seu redor.

Ferramentas usadas no dia-a-dia

  • Kotlin;
  • Micronaut;
  • AWS.

Tecnologias envolvidas



- O que é a Tecnologia Serverless?

Serverless é um framework onde a execução dos códigos é realizada através de recursos alocados dinamicamente, sendo o provodedor de cloud o resposável por executá-los. O Serverless também pode ser referenciado como "FaaS" (Functions as a Service), significando que o provedor é em sua maioria escrito em fomato de funções. Um exemplo de provedores do mercado atualmente é: AWS, Microsoft Azure, Google Cloud, entre outros. Fazer o seu uso, significa que não será necessário gerenciar servidores, pois a plataforma em nuvem fará isso para você, sem tempos adicionais de instalar, manter e administrar. O Serverless é bem vantajoso, principalmente pelo fato de pagar somente o que é utilizado, cobrando apenas pelos recursos usados para executar os códigos, e assim reduzindo os custos. A quantidade de linguagens suportadas por ele é enorme, sendo possível trabalhar com vários times de criação que sejam autogerenciáveis, onde cada um poderá trabalhar com a sua linguagem favorita. Entretanto uma das desvantagens da arquitetura é o tempo de execução. Na hora de criar a sua aplicação é preciso ter a consciência de que para processos extensos esse tipo de abordagem pode não ser tão vantajoso.


Exemplo de resultado tangível

Projeto na área de segurança da ZUP usando Java, para desenvolver uma aplicação que era a porta de entrada da empresa. A aplicação era um intermédio entre o login da Google e o da empresa, conseguindo controlar as credenciais do usuário. Com esse intermédio, a empresa consegue controlar os acessos, conseguindo saber quem fez o que e o porquê, fazendo com que ações indevidas de pessoas possam ser detectadas.

Upload da apresentação

https://www.youtube.com/watch?v=M7O9shcD3jA

Arquivo:Apresentação Eng Software.pdf

Dúvidas


  • 01. Qual é maior dificuldade atuando na área que está hoje?
    • "Acredito que os meus pontos construtivos mais evidentes é o desenvolvimento de soft skills relacionados à gerência de times."


  • 02. Quais as linguagens que mais estão sendo usadas no mercado?
    • "Isso varia, depende do contexto do projeto. Todavia, de modo geral, tem algumas linguagens que aparecem frequentemente na maioria das empresas: Python, Java, Kotlin, Go, Javascript/Typescript."


  • 03. Atualmente, as tecnologias usadas por um engenheiro de software mudaram muito de uns anos pra cá?
    • "Sim! Hoje um engenheiro de software também se preocupa, além de programação, com ferramentas de cloud."


  • 04. Com qual frequência você precisa estudar outras tecnologias?
    • "Sempre, as coisas mudam MUITO rápido, então é necessário se atualizar regularmente."


  • 05. Você consideraria sua rotina agitada? Você geralmente se depara com questões de segurança?
    • "Sim. Questões de segurança são pré-requisitos para qualquer projeto (claro, a depender do projeto, o nível de segurança pode ser maior ou menor, mas sempre existe)."


  • 06. A área de desenvolvimento é um bom caminho para descobrir em qual mercado me interesso mais?
    • "Acredito que sim, você vai ter contato com vários contextos diferentes (não necessariamente ligados à programação) e pode ter uma ideia de qual carreira seguir."


  • 07. Qual a maior dificuldade no dia a dia do engenheiro de software?
    • "Acredito que se manter atualizado é a maior dificuldade, tudo muda muito rápido e se você não se atualiza, acaba ficando pra trás."