SWitCH Dev - Curso de Especialização em Desenvolvimento de Software

A Informática e, em particular, o desenvolvimento de software, são áreas que se encontram em constante evolução. Mesmo em situações de crise, mantêm uma elevada procura por profissionais para integrar o mercado de trabalho, tanto a nível nacional como Europeu e mundial.

 

O curso de Especialização em Desenvolvimento de Software, que faz parte do SWitCH, é uma iniciativa do ISEP e da Porto Tech Hub para a requalificação de graduados de outras áreas, especialmente CTEM, para o desenvolvimento de software. Este curso não é apenas uma formação técnica, pois tem como principal objetivo a promoção do início de uma carreira nesta área.

 

O SWitCH tem o selo de qualidade da iniciativa INCODE.2030 do Governo de Portugal.

 

Porquê escolher esta pós-graduação?

  • O curso assenta numa parceria com a indústria e está orientado para as necessidades e melhores práticas das empresas;
  • As empresas do Porto Tech Hub asseguram um estágio remunerado aos estudantes que terminem o curso com aproveitamento;
  • Foca o desenvolvimento de software Orientado a Objectos e Web, recorrendo a metodologias ágeis (scrum) e a um processo de integração contínua;
  • Usa ferramentas padrão na indústria: Java, JavaScript, JPA, Spring Boot, ReactJS, Jenkins, Dockers, SQL, etc.;
  • Usa uma abordagem de aprendizagem iterativa e incremental, orientada para o projeto (PBL), com uma forte componente de aplicação e trabalho em equipa.

1º ano | 1º semestre

  • 10 ECTS

    Desenvolvimento de Software I

    ECTS
    10
    Período
    1º semestre
    Responsável
    Nuno Silva
    Teórica
    1,5 horas
    Prática laboratorial
    6 horas

    No final da UC, o aluno deverá ser capaz de:
    CO1. Aplicar o Processo de desenvolvimento de software (PDS), em particular do processo iterativo e incremental (I&I), de forma determinística
    CO2. Aplicar o PDS com as partes interessadas no projeto, nomeadamente a equipa e dono do sistema
    CO3. Aplicar princípios, padrões e métodos de análise Orientada a Objetos (OO)
    CO4. Aplicar princípios, padrões e métodos de design OO, nomeadamente GRASP, SOLID e TDD
    CO5. Aplicar métodos e ferramentas de passagem do design para a implementação
    CO6. Aplicar artefactos e notações apropriadas na descrição do problema, da análise, do design e da codificação da solução.

    P1. Algoritmia e programação
    - Estruturas de dados
    - Estruturas de controlo de fluxo
    - Procedimentos e funções
    - Classe, objeto e método
    P2. PDS
    - Disciplinas (e.g. Requisitos, Análise, Design, Codificação, Teste)
    - Tipos de processos (e.g. cascata, I&I, ágil)
    P3. Engenharia de requisitos
    - Análise de requisitos
    - Requisitos funcionais e não funcionais
    - Modelação visual: diagramas UML de casos de uso e de sequência
    P4. Análise OO
    - Métodos de identificação dos conceitos do domínio e suas relações
    - Modelo de domínio
    - Modelação visual: diagramas UML de classes e de estado
    P5. Design OO
    - Princípios RDD, GRASP, SOLID e TDD
    - Definição de responsabilidades e comportamento
    - Modelação visual: diagramas UML de classes, de sequência e de estado
    - Introdução ao design de arquitetura de software por camadas
    - Especificação de testes como design de software (TDD, BDD)
    P6. Codificação OO
    - Testes automáticos
    - Métodos de passagem do design para a implementação

  • 10 ECTS

    DevOps

    ECTS
    10
    Período
    1º semestre
    Responsável
    Luís Miguel Nogueira
    Teórica
    1,5 horas
    Prática laboratorial
    6 horas

    No final desta unidade curricular o estudante deve ser capaz de:
    CO1. Aplicar os principais conceitos e princípios de DevOps depois de determinar a sua adequação a situações particulares (Nível Bloom: 5/6)
    CO2. Avaliar soluções diferentes para configuração e gestão de aplicações, sistemas e redes, usando virtualização, contentores e simulação (NB: 5/6)
    CO3. Construir soluções para configuração e gestão de aplicações, sistemas e redes, considerando cuidadosamente os requisitos, as restrições e as especificidades do ambiente operacional. (NB: 6/6)
    CO4. Desenvolver integrações no processo de desenvolvimento de software, aplicando práticas de integração contínua (CI) e de distribuição contínua (CD) para automatizar e otimizar o ciclo de entrega de software. (NB: 6/6)

    P1. Conceitos e abstracções fundamentais dos sistemas computacionais (20%)
    P2. Redes de computadores e o modelo cliente/servidor (20%)
    P3. Sistemas de controlo de versões (15%)
    P4. Ferramentas de compilação (15%)
    P5. Máquinas virtuais (15%)
    P6. Contentores de software (15%)

  • 10 ECTS

    Laboratório-Projeto I

    ECTS
    10
    Período
    1º semestre
    Responsável
    Angelo Martins
    Teórico-prática
    2 horas
    Prática laboratorial
    3 horas

    Esta unidade tem três componentes:
    - A primeira visa preparar os alunos para planear e trabalhar eficazmente em equipa usando metodologias ágeis;
    - A segunda visa praticar um processo ágil, iterativo e incremental de desenvolvimento software, desenvolvendo um projecto de software de média complexidade.
    - A terceira visa preparar os alunos para a comunicação e também para a elaboração de documentação técnica adequada.
    No final da UC, o aluno deverá ser capaz de:
    CO1. Identificar os intervenientes de um Processo de Desenvolvimento de Software (PDS) e compreender os diferentes papeis de cada interviniente, nomeadamente, do cliente (dono do sistema) e do desenvolvedor (integrado numa equipa de desenvolvimento de software).
    CO2. Aplicar os artifactos e notações adequadas a cada fase do PDS.
    CO3. Produzir documentação técnica escrita em Inglês
    CO4. Aplicar técnicas de comunicacão eficazes com os intervenientes no PDS.
    CO5. Criar aplicações de média complexidade de acordo com as boas práticas de desenvolvimento de software.
    CO6. Aplicar regras de trabalho em equipa num PDS, nomeadamente o controle de versões e gestão de tarefas.

    P1. Realização de um projeto em equipa de média complexidade
    P2. Aplicação de metodologias ágeis na realização de P1.
    P3. Comunicação, documentação e trabalho em equipa.

1º ano | 2º semestre

  • 10 ECTS

    Desenvolvimento de Software II

    ECTS
    10
    Período
    2º semestre
    Responsável
    Nuno Silva
    Teórica
    1,5 horas
    Prática laboratorial
    6 horas

    No final da UC, o aluno deverá ser capaz de:
    1. Aplicar o PDS, em particular do processo I&I, de forma determinística com as partes interessadas no projeto, nomeadamente a equipa e dono do sistema
    2. Selecionar princípios e métodos de análise de software
    3. Selecionar princípios, padrões e métodos de design fino, nomeadamente GRASP, SOLID, DDD, TDD
    4. Selecionar princípios, padrões e métodos de design arquitetural, nomeadamente por camadas (sobrepostas e concêntricas), Cliente-Servidor, SOA, REST e n-Tier
    5. Selecionar métodos e ferramentas de passagem do design para a implementação
    6. Selecionar artefactos e notações apropriadas na descrição do problema, da análise, do design e da codificação da solução

    1. PDS
    - Disciplinas e Atividades
    - Tipos de PDS (e.g. cascata, I&I, ágil)
    2. Engenharia de requisitos
    - Elicitação, identificação e análise de requisitos funcionais e não funcionais
    - Modelação visual com diagramas UML
    3. Análise de SW
    - Identificação e análise dos conceitos do domínio e suas relações
    - Modelação visual com diagramas UML
    4. Design fino
    - Identificação e separação de responsabilidades de granularidade fina
    - Padrões GRASP, SOLID, DDD, TDD
    - Modelação visual com diagramas UML
    - Especificação de testes como design de software
    5. Design arquitetural
    - Identificação e separação de responsabilidades e comportamento de granularidade grossa
    - Padrões Cliente-Servidor, por camadas (sobrepostas e concêntricas), SOA e REST
    - Modelação visual em UML e modelos C4 e 4+1 vistas
    - Especificação de testes como design de software
    6. Implementação
    - Testes funcionais de regressão, isolados e de diferentes granularidades
    - Do design para a implementação

  • 10 ECTS

    DevSecOps

    ECTS
    10
    Período
    2º semestre
    Responsável
    Joaquim Filipe Peixoto dos Santos
    Teórica
    1,5 horas
    Prática laboratorial
    6 horas

    A disciplina visa capacitar os estudantes para integrar práticas de segurança ao longo de todo o ciclo de desenvolvimento de software, adotando o paradigma DevSecOps. Pretende-se desenvolver competências na identificação, prevenção e mitigação de vulnerabilidades, na automação de controlos de segurança em pipelines CI/CD e na aplicação de boas práticas de secure coding, threat modeling e compliance. Adicionalmente, promove uma visão prática e alinhada com a indústria, preparando os estudantes para ambientes cloud-native e arquiteturas modernas.
    Objetivos Específicos
    No final da UC, o aluno deverá ter adquirido competências para:
    CO1. explicar (Nível 2) os princípios fundamentais de DevSecOps, incluindo shift-left security, cultura DevOps e integração da segurança no SDLC;
    CO2. aplicar (Nível 3) práticas de secure coding, threat modeling e análise de vulnerabilidades no desenvolvimento de software;
    CO3. analisar (Nível 4) pipelines CI/CD, integrando mecanismos de segurança como SAST, gestão de segredos e quality gates;
    CO4. avaliar (Nível 5) riscos, conformidade e segurança em ambientes cloud e contentorizados, considerando normas e frameworks relevantes;
    CO5. conceber (Nível 6) pipelines DevSecOps completos, automatizando controlos de segurança, monitorização e resposta a incidentes.

    A UC apresenta os seguintes tópicos principais:
    Fundamentos de DevSecOps: cultura, shift-left security, OWASP Top 10, threat modeling
    CI/CD seguro: pipelines, SAST, policy as code, quality gates
    Secure coding e code review: boas práticas, análise de vulnerabilidades
    Segurança em containers e cloud: Docker, Kubernetes, supply-chain attacks
    Gestão de segredos e identidade: IAM, Zero Trust, vaults
    Monitorização e resposta: logging, SIEM, vulnerability management
    Compliance e governance: ISO 27001, NIST SSDF, SBOM

  • 10 ECTS

    Laboratório-Projeto II

    ECTS
    10
    Período
    2º semestre
    Responsável
    Angelo Martins
    Teórico-prática
    2 horas
    Prática laboratorial
    3 horas

    Esta unidade tem duas componentes:
    - A primeira visa preparar os alunos para planear e trabalhar eficazmente em equipa usando metodologias ágeis;
    - A segunda visa a praticar um processo ágil, iterativo e incremental de desenvolvimento software, desenvolvendo uma aplicação de software de média complexidade.
    O aluno deverá:
    1. Ser capaz de distinguir entre os papéis de cliente e desenvolvedor e selecionar os artefactos apropriadas a cada fase.
    2. Analisar, projetar e implementar uma aplicação de web usando o processo de desenvolvimento ágil, iterativo e incremental, orientado a testes.
    3. Desenvolver uma aplicação em equipa usando um sistema de controle de versão e ferramentas de gestão de tarefas.

    Processo de desenvolvimento de software ágil, iterativo e incremental.
    Metodologia Scrum de gestão de projetos de software.
    Desenvolvimento de uma aplicação Web.

Voltar ao topo