Engenharia de Sistemas de Software


Arquiteturas de Software (Sem. 1)

Objectivos de aprendizagem

* Conhecer e compreender, tendo por base o RUP, as várias etapas do processo de conceção e
desenvolvimento de um sistema de software complexo e de grande escala e usar a linguagem UML como
ferramenta de base para a sua modelação;
* Conhecer e ser capaz de aplicar princípios avançados de engenharia de software (ES), designadamente IOC
(Inversion of Control), DI (Dependency Injection) e de separação de camadas (cf. modelo MVC - model, view e
controller), bem como aplicar padrões usuais (“design patterns”);
* Saber usar tecnologias Java para desenvolvimento de aplicações Web, designadamente, Servlets, Java
Server Pages (ou Java Server Faces ou Structs) e Beans (bem como tecnologias de persistência), e usá-las
segundo os princípios do modelo MVC;
* Saber modelar em Alloy pequenos subsistemas de um dado sistema de software e realizar a verificação
formal da satisfação de propriedades que fazem parte dos requisitos funcionais de tais subsistemas.

Conteúdos programáticos

1.- Introdução às Arquiteturas de Software
Análise das plataformas J2EE e .NET
2.- Introdução ao Rational Unified Process (RUP)
3.- Engenharia de Software baseada em Modelos: UML
Modelação de sistemas software usando UML
Transformação sistemática de modelos UML
4.- JAVA avançado
Generics; Implementação de classes genéricas
Elisão de tipos em Java
Mecanismo de Reflexão
Factory methods
5.- Princípios de Engenharia de Software
Inversão de Controlo (IOC)
Injeção de Dependência (DI)
6.- Padrões de Conceção e Desenvolvimento (Design Patterns)
7.- Tecnologia Java para aplicações Web
Servlets
Java Server Pages (JSP)
Java Beans
Modelo MVC de implementação
MVC usando Structs ou JSF
Tecnologias para Persistência
DAOs (Data Access objects)
TAOs (Transfer Objects)
JPA (Java Persistence API)
Hibernate
8.- Validação e verificação de modelos de software em Alloy

Metodologias de ensino e avaliação

Aulas : 45 hours
Projectos diversos extra-aulas a realizar em grupo
Avaliação: 2 projectos de grupo

Bibliografia

F. Mário Martins, Notas Teóricas de Arquiteturas de Sofware, DI/UM, 2011.
UML Distilled: A Brief Guide to the Standard Object Modeling Language (3rd Edition), Martin Fowler, AddisonWesley, 2003
Core Servlets and Java Server Pages, Martin Hall and Larry Brown, free e-book, 2010.
Design Patterns: Elements of reusable Object-Oriented Software, E. Gamma et al., Addison-Wesley, 2000.

Engenharia de Requisitos (Sem. 1)

Objectivos de aprendizagem

• Definir, no âmbito de todo o processo de engenharia de software, a intervenção da equipa de engenharia de
requisitos e o envolvimento formal dos stakeholders
• Escolher a forma como devem ser capturados os requisitos, em particular decidir quais as técnicas a usar
para levantar os requisitos junto das fontes identificadas
• Detectar, negociar e resolver conflitos entre os requisitos capturados
• Estruturar o documento de requisitos a dois níveis (os requisitos do utilizador e os requisitos de sistema) e
assegurar a sua qualidade e verificabilidade
• Examinar o documento de requisitos, garantindo que descreve o sistema pretendido, através de revisões
formais, de inspecções ou de criação de protótipos
• Gerir a alteração dos requisitos, através de técnicas de rastreabilidade e de análise de impacto

Conteúdos programáticos

• Processo de engenharia de requisitos
• Levantamento de requisitos
• Análise de requisitos
• Especificação e modelação de requisitos
• Validação de requisitos
• Gestão de requisitos

Metodologias de ensino e avaliação

Aulas teóricas (com alguma predominância para exposição de matéria) e aulas práticas para aplicar os
conceitos e as técnicas/práticas
Avaliação:
Teste escrito
Exercícios e projetos

Bibliografia

Aurum A, Wohlin C (eds.); Engineering and Managing Software Requirements, Springer, 2005, ISBN 978-3-54025043-2
Robertson S, Robertson J; “Mastering the Requirements Process”, 2nd edition, Addison-Wesley, 2006, ISBN 0321-41949-9

Engenharia Web (Sem. 2)

Objectivos de aprendizagem

• Conceber, desenvolver, instalar e manter aplicações web
• Identificar as questões de âmbito legal, profissional, social e ético envolvidas no desenvolvimento de
aplicações web usáveis e acessíveis
• Adaptar uma aplicação web a outros contextos de utilização, em função dos requisitos capturados
• Descrever e discutir as técnicas, os métodos e as abordagens usados no desenvolvimento web

Conteúdos programáticos

• Tecnologias
• Processo de desenvolvimento
• Engenharia de requisitos
• Conceção de aplicações web
• Adaptação
• Implementação, deployment e manutenção
• Avaliação da qualidade
• Web semântica e 2.0

Metodologias de ensino e avaliação

Aulas teóricas (com alguma predominância para exposição de matéria) e aulas práticas para aplicar os
conceitos e as técnicas/práticas
Avaliação:
Teste escrito
Exercícios e projetos

Bibliografia

Emilia Mendes, Nile Mosley (Eds.), Web Engineering, Springer, ISBN 3-540-28196-7, 2006
Gerti Kappel, Birgit Pr oll, Siegfried Reich, Werner Retschitzegger (eds.) "Web Engineering: The Discipline of
Systematic Development of Web Applications", John Wiley & Sons, 2003

Gestão do Processo de Software (Sem. 2)

Objectivos de aprendizagem

Os estudantes que completarem esta UC com sucesso, deverão ser capazes de: 1. Discutir alternativas de
aplicação das técnicas do PMBoK em projectos de software; 2. Elaborar o plano de um projeto de
desenvolvimento de sistemas de informação, seguindo as orientações do PMBoK; 3. Compreender e aplicar os
métodos adequados para registar o progresso de um projecto (Execução do Projecto); 4. Aplicar as técnicas
propostas pelo PMBoK para monitorizar o progresso de um projecto (EVM - Earned Value Management); 5.
Compreender os princípios, temas e processos propostos pelo método PRINCE2 .

Conteúdos programáticos

1. Introdução à Gestão de Projetos
1.1.Contexto de um projeto
1.2. Organização de um projeto
1.3. A Framework do PMBoK
1.4. As Áreas de Conhecimento
2. Técnicas e Ferramentas para o Planeamento de um projeto segundo o PMBOK
2.1 Planeamento do âmbito
2.2. Planeamento do tempo
2.3. Planeamento do custo
2.4 Planeamento da qualidade
2.5. Planeamento das outras áreas de conhecimento
2.6. Mecanismo para o Planeamento de Projetos de software
3. Execução, Controlo e Encerramento do projeto (PMBOK)
3.1. Relatórios do progresso
3.2. EVM – Earned Value Management
3.3. Controlar as alterações do projeto
3.4. Encerramento do projeto
4. PRINCE2 - Projects in a Controlled Environment
4.1.Introdução
4.2. Princípios
4.3. Temas
4.4. Processos
4.5. Conclusões

Metodologias de ensino e avaliação

Os métodos de ensino/aprendizagem incluem:
• o método expositivo;
• o método interrogativo;
• o método activo.
Método de avaliação:
Inclui a realização de um projecto, individual ou em grupo, versando uma das temáticas introduzidos na
unidade curricular. A nota final é calculada com base em:
Nota final = 15% relatório intermédio + 85% nota de projecto

Bibliografia

Kerzner H (2006) Project Management – A Systems Approach to Planning, Scheduling and Controlling. 9ª ed.
Wiley. Hoboken, NJ, USA.
Meredith JR, Mantel SJJ (2005) Project Management: A Managerial Approach. 6ª ed. Wiley. Hoboken, NJ, USA.
PMI (2008) A Guide to the Project Management Body of Knowledge, PMBOK. 4ª ed. PMI Standards Committee.
Upper Darby, PA, USA
TSO (2009) PRINCE2 - Managing Successful Projects with PRINCE2, TSO Ireland
Miguel, António (2006). Gestão moderna de projectos: melhores técnicas e práticas. FCA - Lisboa.
Lewis, J. P. (2011) Project planning, scheduling & control: the ultimate hands-on guide to bringing projects in
on time and on budget, 5th ed. ed., New York: McGraw-Hill Professional ; London : McGraw-Hill [distributor]