Métodos Formais em Engenharia de Software

Mestrado de [Engenharia] Informática (2009/10)

Tópicos

Avisos

03 Set Lancamento das classificações finais - ver secção Funcionamento

19 Jul As notas da 2ª milestone de PI1 foram (finalmente) lançadas.

12 Jul A data de entrega dos exercícios de Coq foi adiada para o dia 29 de Julho.

29 Jun - Palestra HASLab de 30-Jun foi adiada devido à ICPC'10- detalhes aqui

27 Jun - A sessão da manhã do dia 1-Jul será dedicada à preparação da última milestone - ver Sumários

27 Jun - Data da última Milestone do PI(II): 15-Julho. Mais detalhes sobre a calendarização do mês de Julho na página de Sumários

15 Jun - Actualizada informação relativa a provas de avaliação individual (ver Funcionamento)

24 Mai Atenção à data da segunda Milestone do PI(II): 17-Junho. A terceira (e última, com participação da indústria) será em meados de Julho.

22 Abr Atenção à data da primeira Milestone do PI(II): 6-Maio. A segunda será em meados de Junho e a terceira (e última) em meados de Julho.

3 Fev Atenção à calendarização das provas de avaliação e milestones (ver sumários da UCE).

9 Dez O relatório referente à primeira Milestone (10-Dez) pode ser entregue até ao dia 17-Dez.

3 Dez O fórum dos alunos encontra-se aqui.

29 Out Está a partir de hoje on-line o repositório de ferramentas da associação FME.

29 Out A sessão de CSI de 05-Nov será ocupada pelo módulo AMT (ver sumários)

29 Set As aulas começaram no dia 1 de Outubro às 9h00.

29 Set Criação do site.

Processos e Arquitecturas de Software

Este módulo constitui uma introdução ao estudo da arquitectura dos sistemas na dupla perspectiva da estrutura das suas interações e do comportamento emergente. Como os restantes módulos nesta UCE, também este adopta um ponto de vista científico-pedagógico que procura aliar o rigor e poder de cálculo matematicamente fundamentado a uma componente laboratorial que, na forma de projecto horizontal de módulo, integra aspectos metodológicos e de realização tecnológica (sobre, por exemplo, plataformas orientadas a componentes, serviços-web, linguagens de coordenação e plataformas específicas sobre e.g. Java ou C#).

A primeira parte do curso é uma introdução à especificação e cálculo do comportamento dos sistemas a partir de uma caracterização matemática das noções de interacção, como elemento base da computação, e de processo, como padrão de interações. Será colocada uma enfâse particular no estudo de processos capazes de auto-reconfigurarem dinamicamente as suas interligações e possibilidades de interação. Esta abordagem será situada no contexo da programação reactiva, onde surgiu, e do fenónomo da computação global na análise do qual é um instrumento fundamental. De um ponto de vista técnico esta primeira componente é baseada no cálculo-Pi e nos métodos coindutivos, traçando-se através deles uma ponte com o cálculo de funcionalidade e estruturas de informação discutidos noutros módulos desta UCE.

A segunda parte do curso, capitalizando nos fundamentos estudados, incide sobre a sua aplicação à especificação, análise e transformação de arquitecturas de software.

Esta segunda componente, inicia-se com uma caracterização da disciplina de arquitectura de software, referindo os standards aplicáveis e traçando a história do conceito em Engenharia de Software. Em particular será enfatizada a diferença entre arquitecturas baseadas na interconecção estática (compile-time) de módulos, orientada à macro-estrutura da aplicação e ao controlo do fluxo de recursos entre módulos, e arquitecturas baseadas na orquestração dinâmica (run-time) de componentes e serviços autónomos, distribuídos ao longo de redes de computação global e altamente heterogéneos. A ênfase é, neste último caso, colocada no controlo do fluxo de interacções (não raro baseadas em comunicação anónima e de localização variável) e na integração de entidades heterogéneas cujas ligações são estabelecidas e revistas dinamicamente, sem interrupção de serviço. Procura-se motivar os alunos para os desafios colocados pela passagem, paralela à registada na prática económica, de uma visão que enfatizava o software como produto para uma outra que o encara essencialmente como um serviço.

É nesse contexto que o curso vai caracterizar diversos estilos arquitecturais, sublinhado o modo como tanto conceitos base (e.g., objecto, contrato, interface, componente, serviço, connector, glue code, padrão, configuração, etc.) como opções metodológicas emergem dos desafios e complexidade dos problemas reais emergentes quer na concepção quer na re-engenharia de software. Discutem-se, em particular,

  • arquitecturas orientadas ao objecto
  • arquitecturas orientadas à componente
  • arquitecturas orientadas ao serviço Em cada caso discute-se o vocabulário associado, estilos de interação, composicionalidade,
modelos formais, e tecnologias associadas. São especificamente abordados abordando especificamente os problemas
  • da orquestração e interacção de componentes (objectos, serviços, recursos),
  • da mobilidade e reconfiguração dinâmica dessas conecções,
  • da planificação, documentação, análise e evolução arquitectural.

Programa

  • Componentes, Serviços e Processos
    • Motivação: estrutura vs. comportamento; prescrição vs. observação; indução vs. coindução.
    • Interacção e cálculo de processos.
    • Componentes e Serviços como processos interactivos.
    • Mobilidade e reconfiguração dinâmica de software. Introdução ao Pi-calculus.
    • Estudo de caso e sua análise laboratorial (com recurso ao mwb).

  • Projecto e Cálculo de Arquitecturas de Software
    • Motivação e história do conceito em Engenharia de Software.
    • Modelação de arquitecturas; ADL (Architecture Description Languages); Estilos e padrões arquitecturais; metodologias.
    • Arquitecturas Orientadas ao Objecto. Composição de objectos.
    • Arquitecturas Orientadas à Componente. Coordenação de componentes.
    • Arquitecturas Orientadas ao Serviço. Orquestração de serviços.
    • Documentação, projecto e análise de arquitecturas de software.
    • Estudos de caso.

r3 - 04 May 2007 - 10:47:32 - AlcinoCunha
This site is powered by the TWiki collaboration platform Copyright © by the contributing authors. Ideas, requests, problems? Send feedback.
Syndicate this site RSSATOM