Espectativa da Formação do Profissional
Perfil do egresso
O egresso do BES é um profissional com capacitação sólida em engenharia de software. Essa capacitação advém de formação básica consistente em computação e de abrangente e aprofundada em engenharia de software.
O mercado de atuação do egresso é abrangente, e decorre da dependência da sociedade por software. Adicionalmente, tal dependência tem se expandido com novos produtos, serviços e processos.
A bacharela ou o bacharel em Engenharia de Software é capaz de efetivamente contribuir com equipes na produção de modelos abstratos de software e realizá-los por meio de código de qualidade. Essa contribuição é pautada por postura profissional e conduta ética.
As habilidades do egresso incluem o que é necessário para lidar com requisitos de software, propor uma solução (software design), construí-la, testá-la e mantê-la, usando processos adequados.
Habilidades do egresso
Da perspectiva de relações pessoais, o egresso deve ser capaz de:
- Participar de forma harmoniosa, profissional e ética durante a elaboração de produtos de software atribuídos a equipes.
- Liderar ação contínua de formação de sua própria reputação na área.
- Participar da comunicação de ideias com clareza, seja na forma verbal ou escrita.
Da perspectiva técnica, o egresso deve ser capaz de:
- Participar de atividades para eliciar, analisar, especificar, validar e gerenciar requisitos de software.
- Participar da definição da solução de software que atende requisitos, ou seja, da definição da arquitetura e do projeto detalhado desse software.
- Participar da elaboração de modelos de análise e de projeto (design) de software.
- Participar da aplicação de técnicas de projeto ao desenvolver softwares concorrentes, distribuídos, orientados a objetos, orientados a eventos e que implementam a persistência de dados.
- Participar da avaliação de design de software considerando, dentre outros quesitos: abstração, coesão, acoplamento e encapsulamento.
- Participar da aplicação de técnicas de tratamento de exceção e tolerância a falhas.
- Auxiliar a escolha de processo e de metodologia de design de software.
- Auxiliar a revisão de design de software.
- Participar do emprego de estilos, visões, modelos e padrões de arquitetura de software.
- Participar do projeto de componentes e módulos de software usando modelos, padrões de projeto e notações.
- Auxiliar a execução de análise estática.
- Auxiliar a escolha de processos e modelos apropriados para a construção de software.
- Auxiliar a escolha de linguagens e ferramentas apropriadas para a construção de software.
- Auxiliar a escolha de frameworks, plataformas e ambientes de construção de construção de software.
- Participar da construção de software seguindo padrões de gerência de configuração e controle de versão.
- Participar da coleta e do monitoramento de medidas de qualidade de código.
- Participar da criação de design detalhado que minimiza a complexidade e melhora a qualidade.
- Participar da criação de código que implementa projetos detalhados.
- Indicar o uso de padrões de projeto.
- Participar da refatoração (refactoring) de código.
- Participar da construção de software que segue padrões de código.
- Participar da construção de software que faz uso de técnicas de codificação defensiva.
- Participar da geração de código a partir de modelos de projeto.
- Participar do uso apropriado de ferramentas e técnicas de depuração.
- Participar da criação de testes de unidade.
- Participar da construção de software que satisfaz objetivos de cobertura de testes.
- Participar da construção de software que segue estratégias e processos de integração e implantação.
- Participar da construção e realização de testes de integração.
- Participar da construção de software em equipe ao colaborar com outros membros da equipe.
- Participar de revisões e inspeções.
- Participar da elaboração e implementação de planos de testes.
- Participar da definição de um ambiente de teste e da correspondente implementação.
- Participar da identificação, design e implementação de testes.
- Participar da elaboração de relatórios de testes.
- Auxiliar a elaboração e execução de plano de transição de software.
- Auxiliar a elaboração e execução de planos de manutenção de software.
- Auxiliar a execução de atividades de processos de software.
- Auxiliar a definição e personalização de processos de software.
- Auxiliar a implementação e execução de processos de software.
- Auxiliar a coleta de dados para avaliação de processos de software.
- Auxiliar a definição e o desenvolvimento de software que satisfaz objetivos e atributos de qualidade.
- Auxiliar a identificação de medidas de qualidade apropriadas.
- Auxiliar a elaboração de planos e revisões de qualidade.
- Participar da construção de software que segue princípios recomendados para segurança de código.
- Participar da construção de software que segue um plano de gerência de configuração de software.
- Participar da documentação de software.