Desenvolvimento de Aplicações

Conhecimentos de Base Recomendados

Conceitos básicos de programação, algoritmos e estrutura de dados.

Conhecimentos básicos de controle de versão

Noções do protocolo HTTP (verbos GET, POST)

Métodos de Ensino

Nesta unidade curricular são utilizadas as seguintes metodologias de ensino:

1 – Método expositivo: método explicativo onde fundamentos teóricos e conceito são apresentados pelo professor e discutidos com a turma, seguido de exemplos demonstrativos;

2 – Método experimental: método ativo onde o aluno desenvolve o conhecimento através da resolução de problemas e o desenvolvimento de projetos laboratoriais individuais ou em dinâmica de grupo.

Cada aula será composta por dois momentos:

1 – Exposição introdutória: No início da aula o docente expõe e discute com os alunos os novos conteúdos em estudo;

2 – Aplicação prática: Após a exposição introdutória, os alunos desenvolvem fichas de trabalho e resolução de problemas, individualmente e em conjunto, para aplicação prática dos novos conceitos, de forma autónoma e sob a orientação do docente;

Resultados de Aprendizagem

Após a conclusão da unidade curricular, os alunos deverão ser capazes de:

  • Reconhecer e identificar componentes de aplicações mobile e ferramentas de desenvolvimento
  • Compreender o ciclo de desenvolvimento de aplicações mobile com suas respetivas ferramentas (IDEs) e linguagens de programação
  • Utilizar as ferramentas de desenvolvimento para execução de tarefas de criação de componentes, telas e navegação
  • Estimar em alto nível a complexidade da execução de tarefas de implementação
  • Desenvolver aplicações básicas para dispositivos mobile (Android/iOS/Híbrido)
  • Compreender o modo de funcionamento de ferramentas de desenvolvimento low code
  • Utilizar ferramentas de desenvolvimento low code

Programa

1. Introdução ao desenvolvimento de aplicações e metodologias

  • Introdução ao desenvolvimento de apps, apps nativas vs web-apps
  • Estado da arte do mercado de mobile development
  • Metodologias de desenvolvimento (agile/scrum)
  • Workflow de desenvolvimento (git, IDEs, Tests, CI)

 

2. Desenvolvimento nativo para iOS

  • Introdução
    • Breve histórico de aplicações mobile para iOS
    • Apresentação do XCode, ferramentas e funcionalidades, menus
    • Criação de um novo projeto em XCode
    • Compilar o projeto e rodar no simulador
  • Swift
    • Variáveis
    • Operadores
    • Funções
    • Controlo de fluxo
    • Coleções
    • Classes e struct
    • Protocolos
    • Delegates
    • Closures
  • Elementos de UI e navegação
    • Introdução aos elementos de UIKit nativos
    • Breve histórico de XIB’s, storyboards e outlets
    • Auto-layout e constraints programático
    • Catálogo de assets de cores e imagens (Dark mode, acessibilidade)
    • Navegação programática
  • Collection view e data sources
    • Apresentação da UITableView e UICollectionView
    • Introdução a data sources e delegates
    • Configuração de células, registo e reutilização
    • Casos de uso com fonte de dados estática
  • Network e persistência local
    • Introdução a APIs, HTTP, verbos, formatos e autenticação
    • Postman collections para testar funcionamento
    • Acesso a API e network com Swift (nativo)
    • Persistência de dados com UserDefaults (ênfase em modos offline)
    • Keychain (detalhes, encrypt)
  • Tópicos Avançados – Protocolos e Arquitetura
    • Arquiteturas MVC e MVVM, tópicos de VIPER
    • Design patterns
    • SOLID principles
    • Introdução a protocolos, herança, extensões, modificadores de acesso, opcionais
    • Paralelos entre iOS e Android (Swift e Kotlin)
    • Criação conta no portal da Apple, geração de certificados e provisionings
    • Instalação de provisionings locais e dispositivos
    • Archive e submit de aplicações na Apple App Store

 

3. Desenvolvimento nativo para Android

  • Introdução
    • Introdução ao Kotlin (decorators, keywords)
    • Utilização do Kotlin Playground
    • Elementos de UI nativos
    • MVP, MVI, MVVM e respetivas implementações em Android e exemplos
  • Networking
    • Navigation (Jetpack)
    • ViewModel (Jetpack)
    • Retrofit, configuração e implementação
    • Criação da camada de acesso a dados externos
  • Topicos avançados
    • Threads (UI e background)
    • Coroutines e contextos
    • Fundamentos e principais conceitos de Recicler views
    • Adapters e listagens dinâmicas
    • Processo de publicação de aplicações na Google Play Store

4. Desenvolvimento de aplicações com recurso a plataformas low code

Docente(s) responsável(eis)

Estágio(s)

NAO

Bibliografia

Griffiths, D., & Griffiths, D. (2017). Head First Android Development: A Brain-Friendly Guide (2nd ed.). O’Reilly Media.

Veen, T. in’t. (2019). Swift in depth. Manning.