Código: | EIC0048 | Sigla: | ASSO |
Áreas Científicas | |
---|---|
Classificação | Área Científica |
OFICIAL | Engenharia de Software |
Ativa? | Sim |
Página e-learning: | https://moodle.fe.up.pt/ |
Unidade Responsável: | Departamento de Engenharia Informática |
Curso/CE Responsável: | Mestrado Integrado em Engenharia Informática e Computação |
Sigla | Nº de Estudantes | Plano de Estudos | Anos Curriculares | Créditos UCN | Créditos ECTS | Horas de Contacto | Horas Totais |
---|---|---|---|---|---|---|---|
MIEIC | 30 | Plano de estudos a partir de 2009/10 | 4 | - | 6 | 56 | 162 |
ENQUADRAMENTO À medida que os sistemas de software aumentam de dimensão e de complexidade torna-se cada vez mais importante compreendê-los a níveis de abstracção mais elevados. A arquitectura de um sistema de software descreve a sua estrutura global em termos dos seus componentes, das propriedades externas desses componentes e das suas interrelações. Para sistemas de média e grande dimensão a escolha adequada da arquitectura assume uma importância crucial para o sucesso do seu desenvolvimento.
OBJETIVOS ESPECÍFICOS A disciplina de Arquitecturas de Sistemas de Software tem como objectivo principal introduzir os conceitos de arquitecturas de software, padrões de desenho e tópicos directamente relacionados, tais como o de componentes de software. Pretende ensinar a desenhar, compreender e avaliar arquitecturas de sistemas de software, tanto ao nível de abstracção de macro-arquitectura como de micro-arquitectura e assim familiarizar os alunos com os conceitos fundamentais de arquitectura de software, as propriedades e aplicabilidade dos diferentes estilos de arquitectura existentes, os padrões de desenho mais populares, componentes de software, arquitecturas reutilizáveis e as relações destes conceitos todos com a reutilização de software.
DISTRIBUIÇÃO PERCENTUAL Componente Científica: 50% Componente Tecnológica 50%.
RESULTADOS DA APRENDIZAGEM No final da disciplina os alunos deverão ser capazes de:
* Reconhecer os principais estilos de arquitectura existentes para sistemas de software.
* Descrever uma arquitectura de forma precisa.
* Idealizar diferentes arquitecturas alternativas para resolver um mesmo problema e avaliar de forma justificada qual a melhor, quer em termos de desenho, quer em termos de reutilização.
* Reconhecer e compreender diversos padrões de desenho.
* Conhecer e aplicar diversos métodos e técnicas de reutilização de software.
* Construir um sistema de software de média dimensão de acordo com uma especificação de requisitos e uma especificação de arquitectura, seleccionando e aplicando padrões de desenho e utilizando um método de desenvolvimento baseado em componentes.
* Utilizar definições e ferramentas de desenvolvimento existentes para tornar mais expedita a realização das tarefas anteriores.
CONHECIMENTO PRÉVIO Os alunos devem ter conhecimentos e experiência anterior em desenvolvimento de software, programação orientada por objectos, e engenharia de software.
Introdução: *Desenho de software: conceitos, princípios e abordagens fundamentais. *O que é arquitectura de software? *A importância da arquitectura de software. *Exemplos de arquitecturas aos níveis micro e macro: padrões de desenho, frameworks e linhas de produção. Estilos de Arquitectura * Os principais estilos arquitecturais * Exemplos clássicos Padrões de Desenho: *As origens dos padrões de software. *Tipos de padrões de software: padrões de arquitectura, padrões de desenho, estruturas idiomáticas. *Exemplos de Padrões de Arquitectura: POSA patterns. *Exemplos de Padrões de Desenho: GoF patterns. Arquitecturas de Software: *Arquitecturas e Atributos de Qualidade. *Estilos de arquitecturas, modelos de referência e arquitecturas de referência: pipes and filters, data abstraction,object-orientation, event-based systems, layered systems, repositories, interpreters, process-control systems. *Desenho, avaliação e refinamento de arquitecturas de software. *Representação e Documentação de arquitecturas de software. *Reutilização de arquitecturas de software: linhas de produção, frameworks, componentes de software. Casos de Estudo *Estudo de arquitecturas simples. *Estudo de arquitecturas tecnológicas complexas.
As aulas teóricas são utilizadas tanto para a exposição formal dos principais conhecimentos da disciplina como para a apresentação final e discussão dos projectos desenvolvidos pelos alunos ao longo do semestre. Por forma a focar a atenção dos alunos nos tópicos principais, serão propostas pequenas questões de resposta facultativa e livre sobre os tópicos em estudo para desenvolvimento fora de aulas. Ao longo do semestre os alunos terão oportunidade de colocar em prática os conhecimentos transmitidos através de pequenos exercícios, jogos de simulação e desenvolvimento incremental de um projecto de média dimensão. As questões, os exercícios e o projecto conjuntamente incentivarão os alunos a complementar os conhecimentos transmitidos com outros conhecimentos resultantes de pesquisas individuais efectuadas sobre os conteúdos da disciplina.
Descrição | Tipo | Tempo (Horas) | Peso (%) | Data Conclusão |
---|---|---|---|---|
Projecto | Trabalho escrito | 60,00 | 60,00 | |
Teste | Teste | 2,00 | 30,00 | |
Desempenho Individual | Participação presencial | 42,00 | 10,00 | |
Total: | - | 100,00 |
Descrição | Tipo | Tempo (Horas) | Data Conclusão |
---|---|---|---|
Estudo individual | Estudo autónomo | 24 | |
Participação em aulas | Frequência das aulas | 36 | |
Total: | 60,00 |
50% no Teste. 50% no Projecto.
Nota Final = (Teste x 30%) + (Projecto x 60%) + (Desempenho Individual x 10%).
Idênticas às dos alunos ordinários.
A classificação final pode ser melhorada através de repetição do teste (em casos excepcionais devidamente justificados) e/ou evolução do projecto.
A disciplina pressupõe conhecimentos de engenharia de software e experiência de desenvolvimento de sistemas de software.