Curso de Especialização em Engenharia de Software Modalidade Extensão Universitária


Disciplinas

 


INF-0318 - Análise Orientada a Objetos e Projeto Arquitetural

Tópicos Abordados:

  • Construção de modelos de casos de uso.
  • Modelagem estática e dinâmica de software.
  • Padrões de Projeto.
  • Projeto Arquitetural, Estilos e Padrões de Projeto Arquiteturais.
  • Arquitetura de Software e Atributos de Qualidade.

 

INF-0319 - Projeto e Implementação Orientados a Objetos

Tópicos abordados:

  • Princípios de Projeto Orientado a Objetos (POO).
  • Projeto de Classes e Hierarquias de Classes (Herança).
  • Projeto de Relacionamentos.
  • Uso de polimorfismo em POO.
  • Progressões Matemáticas.
  • Projeto de Máquinas de Estado.

 

INF-0320 - Interfaces Homem Computador

Tópicos Abordados:

  • Técnicas e metodologias para projeto e avaliação de interfaces de usuário em sistemas de software.
  • Princípios do Design Centrado no Usuário e do Design Universal.
  • Estudo de fatores humanos, aspectos sociais e tecnológicos. Avaliação e entendimento da experiência do usuário.

 

INF-0321 - Verificação e Validação de Software

Tópicos abordados:

  • Técnicas estáticas: revisões, análise estática de código.
  • Técnicas de teste: caixa preta e caixa branca.
  • Escopo de testes.
  • Testes de requisitos de qualidade.
  • Testes em ambiente ágil.
  • Práticas com automatização de testes.

 

INF-0323 - Linguagens e Ambientes para Programação de Software

Tópicos abordados:
Disciplina prática que irá exercitar os seguintes conceitos:

  • Ambiente de Programação e Ferramentas.
  • Objetos e Classes.
  • Herança e Agregação.
  • Polimorfismo e Acoplamento Dinâmico.
  • Classes Abstratas e Interfaces.
  • Exceções e Pacotes.

 

INF-0325 - Modelagem e Projeto de Banco de Dados

Tópicos abordados:

  • Modelo Relacional e consultas SQL.
  • Consultas SQL avançadas.
  • Introdução a Banco de dados não relacionais.
  • Banco de dados orientado a documentos e Banco de dados orientado a grafos.
  • Semântica de dados.

 

INF-0329 - Prática em Engenharia de Software

Tópicos abordados:
Disciplina prática que irá exercitar os seguintes conceitos:

  • Ambiente de Programação: Java, SDK (eclipse), git, jenkins, junit, mockups, etc..
  • Processo Ágil: Especificação a ser utilizada na disciplina.
  • Projeto Prático: Especificação (Funcionalidade, Arquitetura de Software).
  • Planejamento dos Sprints.
  • Execução do Projeto Orientado a Objetos.

 

INF-0330 - Requisitos de Software e Modelos de Especificação

Tópicos abordados:

  • Introdução a engenharia de software (visão sociotécnica).
  • Engenharia de Requisitos.
  • Técnicas de levantamento de requisitos: entrevistas, brainstorming, grupo focal, workshop, entre outras.
  • Introdução a métodos ágeis (valores e princípios).
  • Escrevendo histórias de usuários de forma eficaz.
  • Design Thinking: Princípios e Ferramentas.

 

INF-0331 - Componentização e Reuso de Software: Conceitos e Práticas

Tópicos abordados:

  • Fundamentos de componentes de software: principais características, propriedades e categorias.
  • Engenharia de Software Baseada em Componentes: Projeto de software baseado em composição de componentes; Componentes e UML
  • Tecnologias para componentes: Componentes distribuídos; Web Components.
  • Componentes e a Arquitetura orientada a serviços (SOA): Padrão Service Component Architecture (SCA); Componentes e microsserviços.
  • Arquitetura baseada em containers e componentização de subsistemas.
  • Reúso de Software: Reúso oportunístico x sistematizado; Aspectos do reúso e estratégias.
  • Sistemas de transformação e reuso.
  • Arquiteturas, modelos e reúso.

 

INF-0332 - Arquitetura Orientada a Serviços - SOA & WebServices: Conceitos e Práticas

Tópicos abordados

  • Arquitetura de Software: Monolítico, SOA, Web Services e Micro Serviços.
  • Construção de APIs: WS Tradicional (SOAP), REST, GraphQL.
  • Migração de sistemas monolítico para micro serviço.
  • Boas Práticas na construção de uma API.
  • Documentação de APIs.
  • Segurança de APIs.
  • API Management.
  • Chatbots.
  • Containers (Kubernetes, Istio, Patterns).
  • Prática de construção e uso de APIs.

 

INF-0333 - Gerenciamento de Projetos de Software: Aspectos Econômicos e Planejamento

Tópicos abordados:

  • Técnicas de gerenciamento de projetos tradicionais e ágeis (Scrum e Kanban);
  • Áreas de conhecimento do PMI e seus processos com ênfase no processo de planejamento: Gerenciamento da Integração: Gerenciamento do escopo do projeto; Gerenciamento do cronograma do projeto; Gerenciamento dos custos do projeto; Gerenciamento da Qualidade; Gerenciar recursos do Projeto; Gerenciamento de Comunicações; Gerenciamento de Riscos; Gerenciamento de Aquisições; Partes Interessadas (Stakeholders)
  • Técnicas de planejamento e controle do projeto tais como: Work Breakdown Structure (WBS); Técnicas para estimativa de tempo e custo; PERT e Gant; Gestão de risco.

 

INF-0334 - Tópicos em Engenharia de Software - I

Tópicos abordados:
Esta disciplina é composta por um conjunto de palestras de profissionais do mercado de trabalho.

  • Internet of Things: Contextualização sobre a Internet das Coisas; Cases de dispositivos de IoT; IoT no negócio das empresas; Aceleradores; Como emplacar um projeto IoT.
  • Machine Learning: Teoria sobre Redes Neurais Artificiais; Prática sobre Redes Neurais Artificiais.
  • Big Data: O que é Big Data; Casos de Uso; O lado negativo do Big Data; Papéis e profissões em Big Data; Engenharia de soluções Big Data. Como lidar com Big Data?
  • Cloud Computing: Visão Geral da Nuvem; Arquitetura e Segurança na Nuvem; Players, vantagens e desvantagens; DevOps e integração contínua.
  • Mobile: Por que mobile? A relevância para marcas e empresas; Desafios na adoção de Mobile pelas empresas; Abordagens para desenvolvimento Mobile.

 

INF-0335 - Ambientes para Concepção de Software

Tópicos abordados

  • Introdução ao conjunto de ferramentas usadas no processo de concepção, desenvolvimento e entrega de software.
  • Aspectos de versionamento de software, como resolução de conflitos, mesclagem, ramificações, entre outros.
  • Introdução a integração contínua.

 


 

INF-0318 - Análise Orientada a Objetos e Projeto Arquitetural

Carga Horária: 31 horas, 7 aulas presenciais

Professora: Cecília Mary Fischer Rubira e Leonardo Montecchi

Ementa:

Conceitos fundamentais da análise orientada a objetos para a estruturação e modelagem de sistemas de software usando UML. Modelagem estática: construção de diagramas de classes. Modelagem dinâmica: diagramas dinâmicos, com ênfase em diagramas de sequência e de atividades. Identificação de objetos e sua classificação em classes, especificação de atributos e operações, identificação dos relacionamentos de generalização/especialização, agregação e associação entre as classes. Noções de tipos abstratos de dados, encapsulamento, polimorfismo, herança simples e múltipla, classes abstratas, interfaces, pacotes, metaclasses, delegação, e padrões de projeto. Conceitos básicos de arquitetura de software, definição de componentes, conectores e configurações arquiteturais. Projeto arquitetural e padrões arquiteturais. Atributos de qualidade associados ao modelo arquitetural. Métodos de desenvolvimento de software centrados na arquitetura.

Objetivo:

Ao final da disciplina o aluno deve ter aprendido os conceitos fundamentais de orientação a objetos e deve ser capaz de, partindo da especificação de um problema, criar um diagrama de classes que represente uma solução para o problema. Também o aluno deve ser capaz de definir a arquitetura de software do sistema alvo, de acordo com os requisitos de qualidade priorizados durante o projeto arquitetural.

Bibliografia:

I. Sommerville. Software Engineering, Addison-Wesley, 10th edition, 2015.

G. Booch, J. Rumbaugh and I. Jacobson. The Unified Modeling Language User Guide, 2nd Edition, Addison-Wesley, 2005.

J. Rumbaugh, M. Blaha, W. Premerlani, F. Eddy, W. Lorensen, Object-Oriented Modeling and Design, Prentice Hall, 1991.

Booch, G., Object-Oriented Design with Applications, Benjamin-Cummings, 1991.

E. Gamma, J. Vlissides, R. Johnson, R. Helm, Design Patterns: Elements of Reusable OO Software, Addison-Wesley, 1995.

M. Grand, Patterns in Java, 2nd Edition, Wiley, 2003.

F. Buschmann, R. Meunier , H. Rohnert , P. Sommerlad , M. Stal , A System of Patterns: Pattern-Oriented Software Architecture, Wiley, 1996.

L. Bass, P. Clements and R. Kazman, Software Architecture in Practice, 3rd Edition, Addison-Wesley, 2013.

topo da página


 

INF-0319 - Projeto e Implementação Orientados a Objetos

Carga Horária: 31 horas, 6 aulas presenciais e 1 aula a distância

Professor: Luiz Eduardo Buzato

Ementa:

Estudo dos princípios de projeto orientado a objetos através de exemplos. Os alunos são introduzidos a um ambiente de programação baseado em java, git (controle de versão), jenkins (integração contínua) e junit (testes) e log4j (logging). Princípios de projeto orientado a objetos (uso de herança, polimorfismo, relacionamentos entre classes, inferfaces, etc) e a uma estratégia de resolução de problemas similar à utilizada em hackatons baseado em sprints curtos, que duram horas apenas. Um sprint tem a seguinte estrutura: 1. Aluno tem um tempo para tentar compreender o problema e resolvê-lo e programá-lo; 2. instrutor encaminha parte da solução. Para facilitar o
aprendizado os alunos já recebem protótipos de código e bibliotecas de apoio prontas. Um certo número de sprints, proporcional à complexidade do problema proposto, é executado e ao final os alunos devem ter aprendido, na prática, como utilizar os princípios de projeto orientado a objetos para resolver os problemas propostos. Exemplos de problemas propostos: a) desenvolver um serviço de estoque, b) desenvolver uma biblioteca que implementa séries matemáticas, c) desenvolver uma simulação para a colisão de moléculas de um gás, d) desenvolver o software de controle de uma cafeteira, etc. Os problemas propostos inicialmente são muito simples, por exemplo,
implementar um controle de um ventilador com quatro velocidades. A dificuldade cresce de um problema para outro, exigindo maior domínio de princípios de projeto e programação orientada a objetos. O ambiente de programação é implementado e instanciado na cloud da AWS.

Objetivo:

Ao final da disciplina o aluno deve ser capaz de traduzir uma especificação de um problema para um sistema orientado a objetos, utilizando os princípios de projeto orientado a objetos, e também deve ter adquirido uma visão completa do ciclo de desenvolvimento de software: análise, projeto e implementação para problemas simples e de média complexidade. Deve ter uma compreensão razoável da forma como software é desenvolvido modernamente através de sprints, isto é, incrementos de funcionalidade que levam uma versão operacional, correta do programa, para uma versão ubsequente também operacional, correta.

Bibliografia:

R. Sedgewick, K. Wayne. Introduction to Programming in Java, 2007.

E. Gamma, J. Vlissides, R. Johnson, R. Helm, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995.

Bloch, J. Effective Java; 3rd Edition, 2018.

Goetz, B. et al. Java Concurrency in Practice, 2006.

Goodrich, M.T.; Tamassia, R., Goldwasser, M.H. Data Structures and Algorithms in Java; 2014.

Sítios de interesse sobre POO.

Apontadores para ferramentas como git, jenkins, junit, log4j.

topo da página


 

INF-0320 - Interfaces Homem Computador

Carga Horária: 27 horas, 6 aulas presenciais

Professor: Julio Cesar dos Reis

Ementa:

Introdução a disciplina Interfaces Homem-Computador (IHC): Histórico e evolução; Paradigmas em IHC; Métodos e técnicas de design (design centrado no usuário, design participativo, etc.); Design Universal e Acessibilidade; Prototipação; Storyboard: uso de ferramentas; análise de tarefas; Avaliação de interfaces; Heurísticas de Usabilidade; Experiência do Usuário;

Objetivo:

Ao final deste curso o(a) aluno(a) deverá ser capaz de projetar e avaliar interfaces de usuário em sistemas de software interativos. O curso exercitará conceitos básicos e avançados em interação humano computar. O(a) aluno(a) desenvolverá protótipos de baixa e alta fidelidade buscando abordagens inclusivas e participativas para a construção e avaliação de soluções de interface para aplicações em contextos diversos.

Bibliografia:

Rogers, Y., Sharp, H., Preece, J. Interaction Design: Beyond Human-Computer Interaction, 4th Edition.Wiley, 2015.

Soegaard, Mads and Dam, RikkeFriis (eds.). "The Encyclopedia of Human-Computer Interaction, 2nd Ed.".

Aarhus, Denmark: The Interaction Design Foundation. 2014. Available online at http://www.interaction-design.org/encyclopedia/interaction_design.html

Rocha, H.V.; Baranauskas, M.C.C. Design e Avaliação de Interfaces Humano-Computador. 2ª ed. NIED 2003. Disponível em: http://www.nied.unicamp.br/publicacoes

The Interaction Design Foundation https://www.interaction-design.org/

Barbosa, S. e Silva, B. S., Interação Humano-computador. Campus-Elsevier. 2010.

HCI Bibliography (hosted by ACM SIGCHI): Human-Computer Interaction Resources, updated 2016-05-10 http://hcibib.org

topo da página


 

INF-0321 - Verificação e Validação de Software

Carga Horária: 31 horas, 7 aulas presenciais

Professores: Eliane Martins e Bruno Teixeira de Abreu

Pré-Requisito Desejável: INF-0318INF-0319 e INF-0323

Ementa:

Visão geral sobre qualidade de produto. Conceito de Verificação e Validação (V&V) e técnicas. Fundamentos de testes de software: conceitos e desafios. Técnicas de teste caixa preta: baseadas na interface (classes de equivalência, valores-limite, combinatórios e aleatórios) e baseadas em modelos (casos de uso e modelos de estado). Técnicas de teste caixa branca: baseadas no fluxo de controle. Escopo de testes: testes de unidade, integração, sistemas, aceitação e regressão. Testes ágeis: TDD e
BDD. Testes de requisitos não funcionais: testes de segurança. Testes automatizados: pirâmide de testes. Técnicas de verificação estática: passeio, inspeção e revisão. Análise estática automatizada.

Objetivo:

No aspecto teórico, ao final da disciplina espera-se que o aluno tenha adquirido consciência sobre a importância da Verificação e Validação para a qualidade do software que é produzido. Em especial, espera-se criar a conscientização de que testes são essenciais, mas não são a única forma de se garantir a qualidade de um sistema. Com relação aos testes, foco principal da disciplina, espera-se que o aluno tenha compreendido a importância dos mesmos, seu impacto nos custos de desenvolvimento do
software e também que se trata de uma atividade a ser levada em conta desde cedo no desenvolvimento do software e que, como o desenvolvimento, o processo de testes também deve ser dividido em fases e deve ser documentado. Do ponto de vista prático, a disciplina aplica de forma intensa os conceitos discutidos, principalmente o tema de testes ágeis e automatização de testes, este último muito demandado no mercado de trabalho. Ao final, espera-se que o aluno consiga implantar e propagar boas práticas, técnicas, soluções e conceitos aprendidos em sua empresa, debatendo as questões relacionadas a qualidade de software (especificamente sobre testes de software) com maior embasamento e autoridade técnica.

Bibliografia:

J. Gregory, L. Crispin, Pearson Education. Agile Testing: A Practical Guide for Testers and Agile Teams, 2009.

J. Smart, Manning Publications. BDD in Action: Behavior-driven development for the whole software lifecycle, 2014.

R. S. Pressman, McGraw-Hill. Engenharia de Software, 2006.

R. Black, E. V. Veenendaal, D. Graham, Cengage Learning. Foundations of software testing: ISTQB certification, 2012.

M. Delamaro, J. C. Maldonado, M. Jino. Introdução ao Teste de Software, Editora Campus, 2007.

B. Beizer. Software Testing Techniques, International Thomson Computer Press, 1990.

K. Beck. Test Driven Development: By Example, Addison-Wesley, 2002.

R. V. Binder. Testing Object Oriented Systems: Models, Patterns and Tools, Addison-Wesley, 1999.

topo da página



INF-0323 - Linguagens e Ambientes para Programação de Software

Carga Horária: 27 horas, 6 aulas presenciais

Professor: Sandro Rigo

Ementa:

Esta disciplina introduz conceitos básicos de programação orientada a objetos, como encapsulamento, tipos abstratos de dados, herança, classes abstratas, agregação, acoplamento dinâmico, polimorfismo e noções de interface, pacotes e tratamento de exceções. Para exemplificar os conceitos, a disciplina toma como base uma linguagem de programação Java. Além disso, são introduzidos ambientes de desenvolvimento, ferramentas de controle de versão e plataformas de integração contínua.

A lista de tarefas explorará os seguintes tópicos:

  1. Ambiente de Programação e Ferramentas;
  2. Objetos e Classes
  3. Herança e Agregação
  4. Polimorfismo e Acoplamento Dinâmico
  5. Classes Abstratas e Interfaces
  6. Exceções e Pacotes

Objetivo:

Espera-se que ao final do curso o aluno tenha compreendido os conceitos principais de uma linguagem OO moderna, e saiba utilizá-los para programar aplicações de médio porte em um ambiente de programação realista.

Bibliografia:

G. Araújo, Programando em Java, apostila, IC-Unicamp, 2007.

C. M. F. Rubira & P.H.S.Brito, Introdução à Programação Orientada a Objetos usando Java, apostila, IC-Unicamp, 2007.

Ken Arnold & James Gosling, The Java Programming Language, 2nd, Addison-Wesley, 1997.

Bruce Eckel, Thinking in Java, 3a Edição, 2002. 

topo da página


 

INF-0325 - Modelagem e Projeto de Banco de Dados

Carga Horária: 24 horas, 5,5 aulas presenciais

Professores: Célio Cardoso Guimarães e Matheus Silva Mota

Pré-Requisito Desejável: Conhecimento básico em ciência da computação

Ementa:

Conceitos Básicos: Modelagem, Projeto lógico de dados (Modelo Relacional) e normalização de dados relacionais; A Linguagem SQL - Teoria e Prática; Introdução a Bancos de Dados Não-Relacionais; Bancos de Dados não convencionais; Introdução à Recuperação de Informação; Projeto e implementação de aplicações em Sistemas de Informação usando bancos de dados.

Objetivo:

Ao final da disciplina o aluno deverá estar familiarizado com a Tecnologia de Banco de Dados de forma que possam desenvolver modelos de sistemas baseados nesta tecnologia.

Bibliografia:

Fundamentos de banco de dados. Guimarães, Célio. UNICAMP. 2003.

Elmasri, R. and Navathe, S.B. -- Sistemas de Banco de Dados, Addison-Wesley, 4a.edição, 2005.

Korth, H.F. e Silberschatz, A. -- Sistemas de Bancos de Dados, Makron Books, 5.ªedição, 2006.

Ramakrishnan, R. -- Database management systems, McGraw-Hill, 1998.

Ullman, J.D. and Widom, J. -- A first course in database systems, Prentice-Hall, 1997.

Garcia-Molina, H. and Ullman, J.D. and Widom, J. – Database System Implementation, Prentice-Hall, 2000.

Date, C.J. – Introdução a sistemas de Banco de Dados, Campus, 8.ª edição, 2003. 

topo da página


 

INF-0329 - Prática em Engenharia de Software

Carga Horária: 31 horas, 6 aulas presenciais e 1 aula a distância

Professor: Luiz Eduardo Buzato

Pré-Requisito Desejável: INF-0319INF-0321 e INF-0323

Ementa:

Realização de um projeto prático de engenharia de software com apoio de um processo ágil baseado em scrum e programação extrema. O projeto prático consiste na melhoria de uma aplicação cliente-servidor utilizando um processo ágil e programação orientada a objetos em Java. Familiarização com trabalho em equipe utilizando ferramentas de desenvolvimento de software: java, eclipse, git, integração contínua (jenkins), testes de unidade (junit), métricas de qualidade (sonar), e desempenho (operações/segundo, footprint de memória na jvm, etc). O conceito fundamental que norteia a disciplina é que a melhor estratégia para o aprendizado de processo ágil
e programação orientada a objetos é prática.

Objetivo:

Expor o aluno a práticas modernas de construção de software, utilizando os princípios de orientação a objetos, testes e sgbds introduzidos nas disciplinas INF0318, INF319, INF0321, INF0323, e INF0325.

Bibliografia:

Sutherland, J. Scrum: the art of doing twice the work in half the time, 2014.

Schwaber, K; Sutherland, J.; Software in 30 days, 2012.

Sims, C.; Johnson, H.L.; Scrum: a breathtakingly brief and agile introduction, 2014.

Knapp, J. et al, Sprint: How to solve big problems and test new ideas in just five days, 2016.

Martin, R. C; Clean code: a handbook of agile software craftsmanship, 2008.

A. Cockburn, Agile Software Development, Addison-Wesley Longman, 2002.

M. Cohn, Succeeding with Agile: Software Development Using Scrum, Addison-Wesley, 2009.

E. Derby and D. Larsen, Agile Retrospectives Making Good Teams Great, Pragmatic Bookshelf, 2006.

K. Beck, eXtreme Programming: Explained, Addison-Wesley, 2000.

K. Beck, Test-Driven Development: By Example, Addison-Wesley, 2002.

K. Beck and C. Andrés, Extreme Programming Explained: Embrace Change, 2nd Edition, Addison-Wesley Professional, 2004.

K. Beck and M. Fowler, Planning Extreme Programming, Addison-Wesley, 2000.

M. Fowler, Refactoring: Improving the Design of Existing Code, Addison-Wesley, 2000.

E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995.

B.W. Kernighan and R. Pike, The Practice of Programming, Addison-Wesley, 1999.

topo da página


 

INF-0330 - Requisitos de Software e Modelos de Especificação

Carga Horária: 31 horas, 7 aulas presenciais

Professores: Breno Bernard Nicolau de França

Ementa:

Introdução a Engenharia de Software (natureza do software, processos, qualidade, visão sociotecnica); Engenharia de Requisitos; Técnicas de Elicitação (Entrevista, WorkShop, entre outras), Planejamento e Execução; Especificação de requisitos (funcionais e não-funcionais); Casos de Uso (Atores e Descrição); Métodos Ágil e Lean (visão geral), Personas, Histórias de Usuário, Design Thinking.

Objetivo:

Ao final da disciplina o aluno deve compreender as diferentes atividades envolvidas no desenvolvimento de um software, e como o paradigma de desenvolvimento escolhido afeta estas atividades. Finalmente, o aluno deve ser capaz de levantar, avaliar e especificar os requisitos do usuário utilizando modelos.

Bibliografia:

Introdução à Engenharia de Software, Carvalho, A e Chiossi, T,. Editora da UNICAMP, 2001.

Software Engineering: A practitioner’s Approach, Pressman, R. 4ª ed., McGraw-Hill,2004.

Requirements Engineering, Hull, E, Jackson, K.,Dick, J., SpringerVerlag, 2004.

Requirements Engineering: A Good Practice Guide, Sommerville, I. and Sawyer, P. John Wiley & Sons, 1997.

Issues in Requirements Elicitation. Chistel, M.G. and Kang, K.C. Software Engineering Institute, Technical Report CMU/SEI-92-Tr-12, Pittsburgh, PA.Carnegie Mellon University, Sep, 1992.

Applying Use Cases- A practical guide, Schneider, G., Winters, J., Addison-Wesley, 1998. 

topo da página


 

INF-0331 - Componentização e Reuso de Software: Conceitos e Práticas

Carga Horária: 27 horas, 6 aulas presenciais

Professor: André Santanchè

Ementa:

Introdução à componentização, reúso e Engenharia de Software Baseada em Componentes. Componentes de software: principais características, propriedades e categorias. Especificação, modelagem e arquiteturas de componentes utilizando a UML. Componentes distribuídos, componentes na Web, Arquitetura Orientada a
Serviços (SOA) e containers. Implementação, modelos (padrões) e frameworks de componentes. Reúso de software: oportunístico e sistematizado. Manutenção, evolução e gerência de configuração (CM) de componentes e soluções componentizadas. Gestão estratégica de componentes.

Objetivo:

Permitir aos alunos adquirirem uma visão ampla dos conceitos e técnicas da engenharia de software baseada em componentes, desde a identificação e arquitetura de componentes, passando-se pela sua especificação, modelagem, implementação, implantação e evolução. Os laboratórios da disciplina exercitam a modelagem de componentes, utilizando uma abordagem extremamente prática.

Bibliografia:

UML Components: A Simple Process for Specifying Component-Based Software. John Cheesman, John Daniels - Addison-Wesley Professional; 1ST edition (October 13, 2000)

Large Scale Component Based Development (Paperback). Alan W. Brown - Prentice Hall Ptr; 1ST edition (December 15, 2000)

Core J2EE Patterns: Best Practices and Design Strategies, Second Edition. Deepak Alur, Dan Malks, John Crupi - Prentice Hall Ptr; 2 edition (May 10, 2003)

Enterprise Unified Process: The Strategic Reuse Discipline. Scott Ambler, John Nalbone e Michel J. Vizdos - Prentice Hall (Fevereiro, 2005)

Measuring Software Reuse: Principles, Practices and Economic Models. Jeffrey S. Poulin - Addison-Wesley Professional; Primeira edição (Novembro, 1996)

Software Reuse: Architecture, Process and Organization for Business Success. I. Jacobson, M. Griss, P. Jonsson - Addison-Wesley Professional; Primeira edição (Maio, 1997)

UML Components: A Simple Process for Specifying Component-Based Software. John Cheesman, John Daniels - Addison-Wesley Professional; 1ST edition (October 13, 2000)

Large Scale Component Based Development (Paperback). Alan W. Brown - Prentice Hall Ptr; 1ST edition (December 15, 2000)

Core J2EE Patterns: Best Practices and Design Strategies, Second Edition. Deepak Alur, Dan Malks, John Crupi - Prentice Hall Ptr; 2 edition (May 10, 2003)

Enterprise Unified Process: The Strategic Reuse Discipline. Scott Ambler, John Nalbone e Michel J. Vizdos - Prentice Hall (Fevereiro, 2005)

Measuring Software Reuse: Principles, Practices and Economic Models. Jeffrey S. Poulin - Addison-Wesley Professional; Primeira edição (Novembro, 1996)

Software Reuse: Architecture, Process and Organization for Business Success. I. Jacobson, M. Griss, P. Jonsson - Addison-Wesley Professional; Primeira edição (Maio, 1997). 

topo da página


 

INF-0332 - Arquitetura Orientada a Serviços - SOA & WebServices: Conceitos e Práticas

Carga Horária: 22 horas, 5 aulas presenciais

Professor: José Cláudio Vahl Junior

Ementa:

Visão geral sobre arquitetura de software do ponto de vista evolutivo, desde o monolito até arquiteturas modernas com micro serviços, apresentando técnicas de modernização arquitetural. Apresentação dos conceitos de conteinerização de serviços. Design, documentação e construção de APIs REST, enfatizando questões de segurança e gerenciamento, implementando um projeto exploratório com chatbots e padrões de projeto.

Objetivo:

O objetivo dessa disciplina é apresentar aos alunos a forma de construção de aplicações através da utilização de arquitetura modernas com foco em integração de sistemas usando APIs REST. Trata-se de uma abordagem que vem atraindo muita atenção do mercado pois permite a aplicação dos conceitos de conteinerização e escalabilidade, apresentando soluções viáveis e escaláveis para os novos projetos de desenvolvimento. Os alunos serão capacitados nos principais conceitos, benefícios, técnicas, boas práticas, aplicações em estudo de casos e atividades práticas. O objetivo é que os alunos sejam capacitados a desenhar a integração de sistemas usando APIs e possam entender as principais técnicas de implementação desses conceitos, ampliando seu leque de conhecimento de tecnologias e produtos.

Bibliografia:

Fowler, Martin. Patterns of Enterprise Application Architecture. Addison-Wesley Signatures (July 11, 2016).

Lane, Kin & Watters, Audrey. Business of APIs. CreateSpace Independent Publishing Platform (April 28, 2012).

Richardson, Leonard & Amundsen, Mike. RESTful Web APIs. O'Reilly Media, Inc (September, 2013). 

Fowley, Susan J. Microsserviços Prontos Para a Produção: Construindo Sistemas Padronizados em uma Organização de Engenharia de Software. Novatec (October 3, 2017).

Allamaraju, Subbu. RESTful Web Services Cookbook. O’Reilly - Yahoo Press (2010).

topo da página


 

INF-0333 - Gerenciamento de Projetos de Software: Aspectos Econômicos e Planejamento

Carga Horária: 31 horas, 7 presenciais

Professores: Thelma Cecília dos Santos Chiossi e José Alexandre D'Abruzzo Pereira

Ementa:

Conceitos de Gerenciamento de Projetos de Software. Técnicas de gerenciamento de projetos tradicionais e ágeis; Processos das áreas de conhecimento do PMI com ênfase no processo de planejamento; Ferramentas de planejamento: Métricas, Modelos de previsão, Work Breakdown Structure-WBS, PERT e Gant, Gestão de risco, acompanhamento e controle de projetos.

Objetivo:

Ao final da disciplina os alunos deverão ser capazes de: compreender os processos envolvidos no gerenciamento de projetos de software; utilizar ferramentas que auxiliem na elaboração do plano de desenvolvimento de um projeto de software. Utilização prática de uma ferramenta para organização de um projeto ágil.

Bibliografia:

Elisa Hatsue Moriya Huzita , Tania Fatima Calvi Tait e Gislaine Camila Lapasini Leal. Gerência de Projetos de Software, . 2015. Ed Ciênciamoderna.

Guide to the Project Management Body of Knowledge (PMBOK(R) Guide-6a. ed. PMI 2017. (Um Guia do Conhecimento em Gerenciamento de Projetos (Guia PMBOK) 6a edição 2018.

Gerenciando Projetos de Desenvolvimento de Software com PMI, RUP e UML - 5a Ed.2010. EditoraBrasport.

Dick Billows. Project Management Tools & Techniques: Best Practices in Project Management [Print Replica] Kindle Edition, Publisher: 4PM.com (November 5, 2018).

Robert K. Wysocki. Effective Project Management: Traditional, Agile, Extreme, 2019, 8a. ed.

Mike Cohn. Agile Estimating and Planning, 2005

Kniberg. Kanban and Scrum: making the most of both, 2010.

topo da página


 

INF-0334 - Tópicos em Engenharia de Software - I

Carga Horária: 23 horas, 6 aulas a distância

Professor: José Claudio Vahl Jr

Ementa:

Temas atuais e emergentes em Engenharia de Software, envolvendo tanto tecnologias quanto metodologias. Temas atuais transversais à Engenharia de Software. Ambientes e ferramentas para Engenharia de Software.

Objetivo:

Atualizar os alunos em um conjunto de temas recentes em Engenharia de Software. Fornecer aos alunos uma visão crítica de como novas tecnologias e novas metodologias se relacionam e impactam a Engenharia de Software. Permitir aos alunos terem contato com especialistas de mercado e da academia nos assuntos selecionados para a disciplina.

Bibliografia:

Artigos dos congressos de Engenharia de Software, tais como, ICSE e XP.

Referências fornecidas durante o curso pelos convidados.

topo da página


 

INF-0335 - Ambientes para Concepção de Software

Carga Horária: 24 horas-aula

Professores: Leonardo Montecchi

Pré-Requisito Desejável: INF-0330

Ementa:

  • Análise completa de um arcabouço de ferramentas usadas no processo de desenvolvimento e entrega de software.
  • Aspectos de versionamento de software, como resolução de conflitos, mesclagem, ramificações, etc.
  • Integração contínua.
  • Acesso a banco de dados NoSQL.

Objetivo:

Ao final da disciplina o aluno deverá estar familiarizado com as principais ferramentas que auxiliam a concepção e desenvolvimento de software.

Bibliografia:
Jez Humble, David Farley “Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation” Addison-Wesley, 2010.

Pramod J. Sadalage, Martin Fowler, "NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence", Addison-Wesley Professional, 2012.

Documentação Git, https://git-scm.com/docs/

Documentação MongoDB, https://docs.mongodb.com/

topo da página