Mestrado em Engenharia de Software
University of Maryland - A. James Clark School of Engineering
Informação chave
Localização do campus
College Park, Estados Unidos da América
Línguas
Inglês
Formato de estudo
Ensino à Distância, No campus
Duração
2 anos
Frequência
Tempo integral, Meio período
Propinas
USD 45 000 / per course *
Prazo de inscrição
15 May 2024
Data de início mais cedo
28 May 2024
* no campus: $1.086,53 por hora de crédito/propina online: $1.340.39 por hora de crédito
Introdução
O programa de Engenharia de Software está preocupado em desenvolver e manter sistemas de software que se comportem de forma confiável e eficiente, sejam acessíveis para desenvolver e manter e satisfazer todos os requisitos que os clientes definiram para eles. A nossa faculdade é composta por investigadores e profissionais de nível mundial que aplicam os mais recentes princípios de Engenharia de Software em grandes projetos na NASA, DARPA, Raytheon e Lockheed Martin.
Os alunos que obtiverem um grau de Mestre em Engenharia ou Pós-Graduação em Engenharia através do nosso programa aprenderão a desenvolver e manter sistemas de software acessíveis, fiáveis e eficientes que se alinhem com as necessidades do cliente. Os cursos se concentram em três áreas técnicas — segurança cibernética, engenharia de computadores e engenharia de sistemas — preparando os alunos para ajudar a resolver problemas urgentes do mundo real.
Admissões
Currículo
Requisitos de graus
Mestrado em Engenharia: 30 Créditos ou 10 Cursos
Os alunos que buscam esta opção devem concluir cinco cursos do currículo básico, 1 disciplina eletiva técnica específica de software e 4 disciplinas técnicas eletivas adicionais. Não há pesquisa ou tese necessária para este grau.
Certificado de Graduação em Engenharia: 12 Créditos ou 4 Cursos
Os alunos que buscam um Certificado de Pós-Graduação em Engenharia devem concluir os quatro cursos a seguir:
- ENPM611, Engenharia de Software
- ENPM612, Requisitos de Sistema e Software
- ENPM613, Projeto e Implementação de Software
- ENPM614, Teste e Manutenção de Software
Cursos
ENPM611 Engenharia de Software (3 Créditos) | Essencial
Outono de 2024, 16h00 - 18h40 Christopher Ackermann
Serão abordados conceitos, métodos e práticas de engenharia de software importantes tanto para o teórico quanto para o profissional. É apresentada toda a gama de responsabilidades esperadas de um engenheiro de software. As áreas fundamentais de desenvolvimento de requisitos, design de software, linguagens de programação e testes são amplamente abordadas. Sessões sobre áreas de apoio como engenharia de sistemas, gerenciamento de projetos e estimativa de software também estão incluídas.
Pré-requisito: Competência em uma linguagem de programação e ter concluído curso de graduação em engenharia de software ou permissão do instrutor do curso.
Requisitos de sistema e software ENPM612 (3 créditos) | Essencial
O foco será colocado nos aspectos teóricos e práticos do desenvolvimento de requisitos. Os alunos reconhecerão o lugar dos requisitos, como trabalhar com os usuários, os métodos e técnicas de requisitos, os vários tipos de requisitos, como definir cronogramas de desenvolvimento de requisitos, a evolução dos requisitos, como modelar e prototipar requisitos, como avaliar e gerenciar riscos nos requisitos, técnicas para testar requisitos, como gerenciar o processo de requisitos e como escrever um documento de requisitos eficaz.
Pré-requisito: ENPM611.
Design e implementação de software ENPM613 (3 créditos) | Essencial
Outono de 2024 W 19h00 - 21h40 Tony Barber
Abrange o processo de design de software, desde a compreensão da necessidade ou problema até a criação de arquitetura adequada e soluções de design detalhadas, até a preservação e evolução do design durante a implementação e manutenção. Os principais temas de estudo incluem modelos de análise de requisitos; design centrado no usuário; projeto de arquitetura através de decomposição e composição; estilos de arquitetura e táticas de arquitetura para suportar vários atributos de qualidade, como segurança e usabilidade; design para reutilização e com reutilização; princípios orientados a objetos de projeto detalhado (como SOLID) e padrões de projeto; abordagens para avaliar, comparar e selecionar soluções de design; notações padrão para documentar visões de arquitetura, projeto detalhado e modelos de análise; e padrões da indústria para a criação de resultados de design. Os alunos irão adquirir não apenas conhecimentos técnicos, mas também habilidades sociais como comunicação, colaboração, pensamento crítico, liderança, negociação e gestão de tempo.
Pré-requisito: ENPM611.
Teste e manutenção de software ENPM614 (3 créditos) | Essencial
O objetivo deste curso é fornecer uma visão geral dos testes e manutenção de software e como essas atividades se enquadram no Ciclo de Vida da Engenharia de Software. Muitos exemplos usados nas palestras são derivados da análise de vários sistemas da NASA. Os tópicos incluem várias formas de testes, como testes funcionais, testes combinatórios, testes estruturais, testes baseados em modelos, testes orientados à segurança, bem como o papel da arquitetura de software na testabilidade e manutenção, testes de regressão, testes automatizados, cobertura de testes, incluindo cobertura MC/DC. e padrões de teste.
Pré-requisito: ENPM611.
ENPM637 Gerenciando Projetos de Engenharia de Software (3 Créditos) | Eletivo
Este curso aborda a amplitude do gerenciamento de projetos de engenharia de software. Ajudará a transformar engenheiros de software inspiradores em líderes de projetos de software. O curso transmitirá princípios, métodos e ferramentas avançados para gerenciamento de projetos de software em um contexto realista de engenharia de software. Será treinada uma estrutura de gerenciamento integrado de projetos Lean (ILPM), que é um híbrido orientado para a implementação dos paradigmas tradicionais do Project Management Institute (PMI) e do gerenciamento de projetos Agile. Depois de concluir este curso, os alunos serão capazes de: selecionar e justificar projetos de engenharia de software, estabelecendo casos de negócios relevantes, gerenciando os requisitos do cliente, desenvolvendo componentes-chave do plano de projeto de engenharia de software e do processo de planejamento, identificando os riscos do projeto de software e desenvolvendo estratégias de mitigação de riscos. , desenvolver uma equipe de projeto para construir e entregar o produto, compreender e aplicar métodos para resolver e evitar dificuldades comuns associadas ao gerenciamento de projetos de engenharia de software, realizar revisões pós-implementação e melhorar a eficácia e eficiência dos projetos de desenvolvimento de software.
Sistemas de software baseados em IA ENPM655 (3 créditos) | Eletivo
Horário das aulas / detalhes do outono de 2024 no ELMS Mikael Lindvall, Joshua Giltinan
O objetivo deste novo curso é abordar o importante problema de especificação, desenvolvimento e teste de sistemas de software baseados em componentes de inteligência artificial (IA). Uma vez que tais sistemas são frequentemente críticos para a segurança ou devem ser confiáveis por outras razões, a qualidade deve ser construída ao longo de todo o ciclo de vida de desenvolvimento de software. É importante observar que o foco do curso não é a engenharia genérica de software ou como treinar redes neurais, embora iremos abordar esses tópicos. O núcleo do curso é, em vez disso, sobre como especificar, desenvolver e testar sistemas de software baseados ou que usam IA. Os cientistas de dados costumam ser ótimos na construção de modelos com técnicas de ponta, mas incorporar esses modelos em produtos de software funcionais apresenta diferentes desafios de engenharia. Por exemplo, os cientistas de dados podem trabalhar com notebooks sem versão em conjuntos de dados estáticos e focar na precisão da previsão, ignorando a escalabilidade, a robustez, a latência de atualização ou o custo operacional. Os engenheiros de software, por outro lado, normalmente são treinados com especificações claras e tendem a se concentrar no código, mas podem não estar cientes das dificuldades de trabalhar com dados e modelos não confiáveis. Dispõem de um grande conjunto de ferramentas para a tomada de decisões e garantia de qualidade, mas podem não saber como aplicá-las aos sistemas habilitados para IA e aos seus desafios. Este curso discute questões como: Até que ponto as práticas existentes de SE podem ser usadas para construir sistemas inteligentes? Até que ponto são necessárias novas práticas? Este curso adota uma perspectiva de engenharia de software na construção de sistemas inteligentes, concentrando-se no que um engenheiro de software pode fazer para transformar uma ideia de aprendizado de máquina em um produto escalonável e confiável. O curso usará terminologia e técnicas de engenharia de software e sistemas (por exemplo, cobertura de testes, visões de arquitetura, árvores de falhas) e discutirá os desafios colocados pelo uso de tais técnicas em componentes de aprendizado de máquina/IA. O curso incluirá uma palestra sobre ensino/atualização de fundamentos de aprendizado de máquina e IA para fornecer uma compreensão básica de conceitos relevantes (por exemplo, engenharia de recursos, regressão linear vs árvores de falhas vs redes neurais). O curso também abordará brevemente o design thinking e a análise de tradeoffs. Ele se concentrará principalmente em abordagens práticas que podem ser usadas agora e contará com práticas práticas com ferramentas e infraestrutura modernas.
ENPM680 Introdução à codificação segura para engenharia de software (3 créditos) | Eletivo
Horário das aulas / detalhes do outono de 2024 no ELMS Gananand Kini
O software permeia a nossa vida quotidiana e é uma parte crítica de muitas das tecnologias utilizadas pelas pessoas em todo o mundo. É complexo e diversificado em suas aplicações, incluindo, entre outros, um número significativo de domínios onde a tecnologia é usada, incluindo comunicações, finanças, manufatura, etc. O software tende a falhar [1] devido a vários fatores e essas causas de falhas de software são chamados de bugs. No entanto, uma classe significativa desses bugs tende a ter sérias implicações de segurança que afetam os princípios de confidencialidade, integridade, disponibilidade e não repúdio que sustentam a segurança do gerenciamento e operação de tais sistemas de software. Este curso cobrirá os principais conceitos e técnicas para analisar e caracterizar esses bugs de segurança e possíveis formas de mitigá-los. Os conceitos serão introduzidos e discutidos no contexto de um adversário que pretende alterar ou subverter o comportamento do software com impactos na segurança. O curso não espera que os alunos tenham qualquer experiência anterior em segurança. Após este curso o aluno estará familiarizado com: 1. Auditar uma aplicação de software para encontrar pontos fracos de segurança. 2. Descrever pontos fracos usando CWE. 3. Metodologia e técnicas utilizadas na revisão de código por pares. 4. Utilizar ferramentas de análise para encontrar pontos fracos de segurança. [1] https://spectrum.ieee.org/computing/software/why-software-fails
ENPM696 Engenharia Reversa de Software (3 Créditos) | Essencial
Outono de 2024 W 16h00 - 18h40 Allen Hazelton
Este curso fornece uma compreensão aprofundada dos conceitos de engenharia reversa de software e treinamento prático com ferramentas de engenharia reversa, incluindo desmontadores, descompiladores e analisadores de código. Os alunos se familiarizarão com o software de baixo nível e com o conjunto de instruções x86 por meio de sessões de reversão binária. Este curso também fornece insights sobre muitos assuntos, como segurança de sistema, análise de código-fonte, design de software e compreensão de programas, que serão benéficos em diversos campos.
Pré-requisito: ENPM691 e CMSC106
Rankings
Programas Online
Nº 6 Programas de Pós-Graduação em Engenharia Online - US News and World Report Melhores Programas de Pós-Graduação em Engenharia Online
Programas de Pós-Graduação nos EUA
Nº 19 Pós-Graduação em Engenharia - US News and World Report 2023 Melhores Programas de Pós-Graduação em Engenharia
Especialidades:
- #15 Engenharia Aeroespacial
- #16 Engenharia Elétrica; #15 Engenharia da Computação
- #17 Engenharia Mecânica
Classificações de Empreendedorismo
- #7 Programa de Graduação
- #18 Programa de Pós-Graduação
As 50 melhores escolas para programas de empreendedorismo da Princeton Review"