Neste módulo, convidam-se os alunos a trocar a visão construtiva do arquitecto de software pela
visão do avaliador, ou gestor de qualidade. Ensinam-se as competências necessárias para esse efeito
a nível da ciência da análise e teste de software, a vários níveis de granularidade, isto é,
desde o teste unitário de rotinas, funções ou serviços, até ao teste integrado de aplicações.
É importante referir que este módulo não apresenta análise e teste de programas como um simples aglomerado de
técnicas ad-hoc. Em lugar disso, é apresentada uma abordagem coerente em que a análise e o teste estão
ligados entre si, de forma complementar às técnicas de construção de programas. Nesta visão, por exemplo, as
baterias de teste são vistas como contrapartidas extensionais das propriedades intencionais que
podem ser derivadas dos modelos abstractos de problemas (especificações). Consequentemente, a geração
model-driven de testes emerge em paralelo com a engenharia reversa e refinamento por cálculo de modelos em programas. Este enquadramento teórico da análise e do teste equipa os alunos com conhecimentos sólidos numa
área que é apreendida pela maioria dos programadores de uma forma intuitiva e muito pouco sistemática.
A articulação do módulo com Projecto Integrado (PI) é, assim,
a dual da adoptada pelos outros dentro da UCE: em lugar de construir novo software aplicacional,
os alunos empregarão uma gama de métodos e ferramentas para avaliarem e
testarem software já existente, por exemplo, software de domínio público
disponível.
Programa
Teoria geral da análise de programas. Interpretação abstracta. Técnicas de slicing.
Teste à unidade, teste funcional, análise de cobertura de uma bateria de testes.
Teste orientado ao modelo, geração automática de testes, teste por injecção falhas.
Métricas para avaliação de software, normas de codificação, estilo e documentação.
Compreensão de programas, engenharia reversa.
Verificação, análise de segurança, avaliação de risco.
O objectivo deste módulo é mostrar como, de modelos abstractos, puramente
declarativos, como os que se estudaram em Métodos Formais , se podem inferir aplicações reais, implementadas em arquitectura cliente-servidor,
com garantia de correcção por cálculo.
No plano operacional, aborda-se a derivação de máquinas de estados abstractas
(ASM, vulg. objectos) que prestam serviços através de uma API pública
a partir dos modelos declarativos estudados em Métodos Formais, por
factorização do seu estado interno. Esta derivação designa-se objectificação e obdece a regras precisas.
Passa-se de seguida ao estudo do refinamento de tais ASMs, que se processa
aos dois níveis do serviço que prestam: dataware e middleware.
Ao primeiro nível, é dada particular ênfase a um cálculo de estruturas de
dados que decorre do cálculo de relações binárias estudado anteriormente
e que, em particular, substitui o cálculo de normalização de bases de dados
relacionais. O uso do referido cálculo é apoiado por uma ferramenta (2LT)
desenvolvida localmente e que calcula modelos de dados concretos em SQL a
partir de modelos abstractos em Haskell. Ao segundo nível, estuda-se como
calcular o código dos métodos (eg. em C/C++, Java, etc) a partir dos respectivos
modelos abstractos e com base na ordem de refinamento que introduz definição
e determinismo.
No plano prático (e através de um trabalho laboratorial de grupo)
o módulo articula com PI (Projecto Integrado)
na medida em que se pede aos alunos que desenvolvam protótipos de ASMs em arquitectura cliente-servidor,
parte da qual fica em fase de protótipo e a outra é implementada numa plataforma de desenvolvimento,
em articulação com Processos e Arquitectura de Software (PAS).
Tal prototipagem beneficia, por sua vez, das técnicas estudadas no semestre anterior em
Análise e Teste de Software (ATS).
Programa
Cálculo de refinamento formal de dados. Noção de impedância entre formatos de dados. Princípio da representação de dados. Relações de abstracção e de representação. Inequações de refinamento. Teorema de desrecursivação genérica. Relações de pertença estrutural e acessibilidade estrutural. Implementação de tipos indutivos polinomais em linguagens com gestão de memória dinâmica: Introdução de apontadores em linguagens tipo C/C++. Representação orientada a objectos.
Cálculo de refinamento algorítmico. A eficiência como principal motivação para o refinamento algorítmico. Fases do refinamento algorítmico: simulação, redução do não-determinismo, mudança de estrutura de dados virtual. Lei de refinamento funcional. Lei de refinamento relacional. Leis de fusão "vertical" e "horizontal". Lei de refinamento de simultâneo de dados e algoritmos. Cálculo de ciclos while como hilomorfismos.
Prototipagem rápida e integração com outras tecnologias. Integração de protótipos reactivos em arquitecturas cliente-servidor. Emulação de serviços intermédios ("middleware") e de serviços de dados ("dataware").
As aulas desta UCE decorrem todas num só dia, à 5ª-feira, das 9h00-18h00 e numa só sala, o Laboratório DI 1.08. Os meios audiovisuais estão localizados na parte anterior do laboratório.
A parte posterior está ocupada com 6 Macs Core2duo 2.0GHz/2GB/250GB/ATI2400XT/20", com sistema operativo Mac OS X. Outros sistemas operativos estão disponíveis através de Vmware Fusion. Nestas máquinas encontra-se todo o software necessário à componente experimental da UCE.
Os alunos podem deixar os seus haveres no laboratório no período de almoço. Podem ainda usar os armários que estão sob as janelas para aí deixarem material de umas sessões para outras.
A entrada no laboratório está controlada por um sistema de identificação de impressão digital, estando o acesso reservado a docentes das UCEs que aí funcionam e técnicos.
São feitas adaptações sempre que necessário (por exemplo, aquando das milestones do Projecto Integrado (PI), sessões de docentes convidados, etc)
Regime de Avaliação
A nota final é a média pesada das notas obtidas nos diferentes módulos:
Cálculo de Sistemas de Informação (15%).
Análise, Modelação e Teste (15%).
Verificação Formal de Software (15%).
Processos e Arquitecturas de Software (15%).
Projecto Integrado (40%).
Para obter aprovação à UCE os alunos terão que ter aprovação em todos os módulos: excepcionalmente poderão ser aprovados alunos que tenham reprovado a um dos módulos teóricos (a aprovação no projecto integrado é sempre obrigatória). Oportunamente serão indicados os métodos de avaliação para cada um dos módulos.
Para cada aluno, identificado pelo seu número, a nota de AMT vem em primeiro lugar e a de CSI em segundo. Lista por ordem crescente de número de aluno:
Para cada aluno, identificado pelo seu número, seguindo o formato
Nr= (NT (Teste ou Exame), Exerc UPPAAL, Final). Lista por ordem crescente de número de aluno:
A ciência tem a ver com o perceber-se como o mundo e as suas coisas funcionam
e a tecnologia com o garantir que certas coisas que se desejam acontecem
de forma fiável e repetível. A necessidade de basear
a segunda em resultados da primeira é uma constante da evolução das disciplinas
de engenharia, a única de facto capaz de ultrapassar as limitações do
puro experimentalismo e do amadorismo, e de promover a transmissão segura
do conhecimento.
Ora o resultado científico recorre, por natureza, à fórmula matemática
para poder ser expresso e, assim, ser susceptível de raciocínio. É assim
que as engenharias "clássicas", como a civil, a mecânica, a electrotécnica,
a electrónica, etc, recorrem sistematicamente a disciplinas da matemática
(algumas já centenárias) para a arrumação dos seus corpos de conhecimento.
São exemplos conhecidos de todos nós o cálculo diferencial/integral,
a análise numérica, a geometria analítica, etc, etc.
Com o advento das chamadas Tecnologias da Informação esta situação
alterou-se.
Na verdade,
essas tecnologias desde cedo mostraram alguma dificuldade em sobreviver
sobre tal herança científica,
pelo facto de esta estar demasiado comprometida com a modelização de
entidades da vida real que,
como o espaço e o tempo,
são por natureza contínuas e infinitas.
Ora o suporte computacional capaz de mecanizar esses modelos é,
por limitação física,
discreto e finito.
O que faz com que sejam a matemática discreta, a lógica formal, a
álgebra universal, etc.
as disciplinas em que o projecto científico do 'software' se alicerça.
Contudo, essas disciplinas encerram uma dificuldade - a de, por serem demasiado descritivas,
os raciocínios dificilmente escalarem a problemas de tamanho real.
Existem duas alternativas para sair dessa dificuldade:
apostar em ferramentas de verificação (demonstradores de teoremas, etc) ou apostar em
notações mais económicas e susceptíveis ao raciocínio.
Este módulo segue a segunda destas vias, sendo a sua base o ensino do cálculo de
relações binárias dito 'pointfree' (sem variáveis) e a sua essência a chamada
transformada 'pointfree' que converte expressões da lógica e matemática discreta
como forma de agilizar o raciocínios necessários.
Objectivos
Este módulo estrutura-se, pois, a dois níveis - descrição e cálculo.
No primeiro, ensina-se a especificar 'software' através da criação de
modelos abstractos sobre os quais se pode raciocinar e garantir
propriedades desejáveis ('model-oriented specification'). Ensinam-se várias abordagens à
animação e teste de modelos: o recurso à linguagem funcional
Haskell (equipada com bibliotecas desenvolvidas para esse efeito),
o recurso ao JML
e as VDMTools (CSK) que animam o VDM-SL (ISO/IEC standard 13817-1.
No segundo, ensina-se a converter esses modelos para a notação relacional e a raciocinar sobre
eles. O exercício estende-se a outras áreas da modelação como, por exemplo, a formulação de
uma semântica para diagramas ER (entidade-relação), etc.
Pela sua natureza propedêutica, o módulo é central às que a acompanham neste módulo.
A sua articulação com o Projecto Integrado (PI)
é feita ao nível da prototipagem e animação de modelos.
Programa
Introdução à especificação formal como método de controlo de qualidade em 'software'. Binómio modelação / implementação. Engenharia orientada ao modelo (MDE).
Ciclo de vida do desenvolvimento formal de 'software'. Especificação formal construtiva. Modelo de um problema. Prototipagem e animação. Validação por teste. Importância da verificação formal das propriedades de um modelo. Obrigações e métodos de prova. Sub-especificação e não-determinismo. Relação (especificação) versus função (implementação).
Introdução ao cálculo de relações. Inclusão, composição e intersecção de relações. Conversa de uma relação. Formulação de propriedades em notação "pointfree".
Taxonomia de relações binárias. As funções vistas como casos particulares de relações. Representação de predicados lógicos por relações binárias. Ordens. Estruturação do cálculo relacional com base em conecções de Galois (CG).
Significado de um invariante. Prova de preservação de um invariante. Noção de precondição mais fraca que garante uma propriedade. Regras para combinação de especificações que satisfazem propriedades.
A integridade-referencial como uma classe de invariantes sobre relações simples e finitas em bases de dados. Diagramas Entidades-Relações (ERD) e sua semântica pointfree baseada na preordem de definição de relações.
Uso do Haskell como linguagem de modelação. Invariantes, pre e pós-condições em Haskell. A biblioteca CamilaMonad. Animação de modelos em Haskell.
Recurso ao JML para anotação formal de código Java.
O "standard" ISO/IEC 13817-1 (VDM-SL). Significado de um modelo VDM-SL. Semântica relacional de um par pre-/post-. Relações em compreensão. Relações simples finitas e sua representação em VDM-SL ("mappings").
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.
Modelos e seu papel na concepção de soluções. Protótipos. Captação de requisitos e sua relação com a interpretação gramatical.
Limites da tipagem estática. Necessidade de invariantes de tipo. Primeira obrigação de prova: preservação de um invariante.
Necessidade de pre-condições para (a) especificação implícita de funções; (b) modelar o indeterminismo da realidade; (c) modelar relações; (d) permitir liberalidade ao especificador.
Pares pre/post: satisfiabilidade. Obrigações de prova: necessidade de uma transformada para a lógica e teoria de conjuntos. Transformada PF.
Estudo do cálculo de relações binárias. Relações simples e relações co-reflexivas. Representação de conjuntos por co-reflexivas.
"Extended Static Checking" (ESC) usando a transformada-PF. Caso de estudo em verificação estática estendida: o VFS (Verified File System).
Propriedades expressas sob a forma de conecções de Galois.
Polimorfismo funcional versus ESC: tipos vistos como relações. Cálculo da relação associada a um tipo polimórfico. Teorema grátis de uma função polimórfica (ou teorema de Reynolds-Wadler).
"ESC for free'': Regras do cálculo de obrigações de prova.
Análise, Modelação e Teste
Formal methods and the formal method life-cycle.
The role of abstraction in formal modelling.
Languages for formal specification and systems modelling.
The “design-by-contract” approach to software development.
Unit testing, Functional testing, Test coverage analysis.
Model-driven testing, Test generation, Model checking, Fault injection.
Introdução à verificação formal. Estudo de uma linguagem imperativa simples. Semântica operacional de transições dada por uma máquina abstracta. Semântica operacional estrutural. Semântica de avaliação. Propriedades e relação entre semânticas.
Apresentação e revisão de conceitos básicos da lógica. Os problemas de decisão SAT e a sua complexidade. Sistemas de prova automática e sistemas de prova assistida.
Lógica de Hoare. Construção de árvores de prova com base na noção de "pré-condição mais fraca". Uma arquitectura para a verificação de programas. Algoritmo VCGen.
Estudo do plugin “Jessie'' para verificação dedutiva. O VCGen genérico “Why'' e interface gráfica “Gwhy''. Sua utilização com múltiplas ferramentas de prova automática. A linguagem de anotações ACSL; verificação baseada em contratos.
Sistemas de tipos e lambda calculi tipados. Apresentação do sistema de tipos de suporte ao sistema Coq: "Calculus of Inductive Constructions" (CIC). Exemplos em Coq de diversas definições indutivas e análise dos recursores gerados pelo sistema.
Processos e Arquitecturas de Software
Introdução aos sistemas reactivos. Motivação e definição base.
Fundamentos: sistemas, comportamento e coindução.
Noção de sistema de transição etiquetado e correspondente morfismo. Noção de simulação e bisimulação. Propriedades.
Modelação de processos em CCS. Sintaxe e semântica operacional. Exemplos. Bissimilaridade e equivalência estrita.
Cálculo de processos em CCS. Equivalência e igualdade observacional. Leis. O teorema da expansão. Resolução de equações.
Estudo de linguagens para descrição de arquitecturas de software: REO e ORC.
Projecto Integrado
Nestas horas lectivas os alunos realizam, em grupo, projectos propostos pelas empresas
que patrocinam a UCE, previamente apresentados pelos proponentes numa workshop interna que dá início ao processo.
No decorrer do projecto há visitas dos alunos às instalações das empresas sempre que tal é conveniente.
No final do ano, o PI fecha-se com uma outra workshop em que os grupos apresentam os seus resultados aos docentes e staff das empresas (por video-conferência, se necessário), participando estes últimos também na sessão de avaliação final.
TWiki's Education/MFES0910 webThe Education/MFES0910 web of TWiki. TWiki is a Web-Based Collaboration Platform for the Enterprise.http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910Copyright 2020 by contributing authors2020-10-30T14:39:22ZWebStatisticshttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/WebStatistics2020-10-30T14:39:22ZStatistics for Education/MFES0910 Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors for topic ... (last changed by TWikiGuest)TWikiGuestWebSideBarhttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/WebSideBar2012-09-26T19:23:52ZTópicos Benvindo a MFES Docentes Contacto principal Alunos Funcionamento Programa Sumários Material Projecto (PI) ... (last changed by JoseNunoOliveira)JoseNunoOliveiraMaterialhttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Material2012-07-15T18:12:58ZÍndice do material disponível: Bibliografia Luca Aceto, Anna Ingólfsdóttir, Kim G. Larsen, Jiri Srba. Systems: Modelling, Specification and Verification . ... (last changed by JoseNunoOliveira)JoseNunoOliveiraFuncionamentohttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Funcionamento2011-04-11T10:52:58ZÍndice: Onde As aulas desta UCE decorrem todas num só dia, à 5ª feira , das 9h00 18h00 e numa só sala, o Laboratório DI 1.08 . Os meios audiovisuais estão localizados ... (last changed by JoseNunoOliveira)JoseNunoOliveiraProjectoIntegradohttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/ProjectoIntegrado2010-11-19T23:35:21ZProjecto Integrado (II) 15 July Milestone Workshop schedule Morning: Begin End Description External(s) Medium 10h00 10h30 SIG1 J.Visser ... (last changed by JoseNunoOliveira)JoseNunoOliveiraAvisoshttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Avisos2010-10-06T19:51:39Z03 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 ... (last changed by JoseNunoOliveira)JoseNunoOliveiraAlunoshttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Alunos2010-07-29T21:37:06ZAlunos Número Nome Foto E mail 10934 Gonçalo Veiga gjveiga.lesi AT gmail DOT com 13405 Manuel Costa mane costa AT hotmail DOT com ... (last changed by JoseNunoOliveira)JoseNunoOliveiraCalendariohttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Calendario2010-07-15T15:40:23Z (last changed by JoseNunoOliveira)JoseNunoOliveiraWebHomehttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/WebHome2010-06-28T09:36:37ZBem vindo a MFES Bem vindo à página da edição de 2009/10 da UCE de Métodos Formais em Engenharia de Software . O meu nome é José Nuno Oliveira e sou o responsável ... (last changed by JoseNunoOliveira)JoseNunoOliveiraEquipaDocentehttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/EquipaDocente2010-05-28T16:32:00ZEquipa docente Soares Barbosa Bernardo Barros Alcino Cunha João Frade Nuno Oliveira Sousa Pinto ... (last changed by JoseNunoOliveira)JoseNunoOliveiraProgramahttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Programa2010-05-25T11:09:37ZMódulos A UCE consta dos módulos seguintes, CSI Cálculo de Sistemas de Informação AMT Análise, Modelação e Teste VFS Verificação Formal de Software ... (last changed by JoseNunoOliveira)JoseNunoOliveiraSponsorshttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Sponsors2010-05-17T12:01:39ZParcerias JoseNunoOliveira 17 May 2010 (last changed by JoseNunoOliveira)JoseNunoOliveiraWebPreferenceshttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/WebPreferences2009-10-01T11:32:14ZEducation/MFES0910 Web Preferences The following settings are web preferences of the Education/MFES0910 web. These preferences overwrite the site level preferences ... (last changed by JoseNunoOliveira)JoseNunoOliveiraWebTopicActionshttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/WebTopicActions2009-09-29T16:53:07Z (last changed by AlcinoCunha)AlcinoCunhaMetodosFormaishttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/MetodosFormais2007-05-10T22:38:09ZMétodos Formais Preâmbulo A ciência tem a ver com o perceber se como o mundo e as suas coisas funcionam e a tecnologia com o garantir que certas coisas que se ... (last changed by JoseNunoOliveira)JoseNunoOliveiraCalculoSistemasInformacaohttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/CalculoSistemasInformacao2007-05-10T22:13:51ZCálculo de Sistemas de Informação O objectivo deste módulo é mostrar como, de modelos abstractos, puramente declarativos, como os que se estudaram em Formais , se ... (last changed by JoseNunoOliveira)JoseNunoOliveira
Índice do material disponível: Bibliografia Luca Aceto, Anna Ingólfsdóttir, Kim G. Larsen, Jiri Srba. Systems: Modelling, Specification and Verification . ...
Índice: Onde As aulas desta UCE decorrem todas num só dia, à 5ª feira , das 9h00 18h00 e numa só sala, o Laboratório DI 1.08 . Os meios audiovisuais estão localizados ...
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 ...
Bem vindo a MFES Bem vindo à página da edição de 2009/10 da UCE de Métodos Formais em Engenharia de Software . O meu nome é José Nuno Oliveira e sou o responsável ...
Módulos A UCE consta dos módulos seguintes, CSI Cálculo de Sistemas de Informação AMT Análise, Modelação e Teste VFS Verificação Formal de Software ...
Education/MFES0910 Web Preferences The following settings are web preferences of the Education/MFES0910 web. These preferences overwrite the site level preferences ...
Métodos Formais Preâmbulo A ciência tem a ver com o perceber se como o mundo e as suas coisas funcionam e a tecnologia com o garantir que certas coisas que se ...
Cálculo de Sistemas de Informação O objectivo deste módulo é mostrar como, de modelos abstractos, puramente declarativos, como os que se estudaram em Formais , se ...
Análise e Teste de Software Neste módulo, convidam se os alunos a trocar a visão construtiva do arquitecto de software pela visão do avaliador , ou gestor de ...
Módulos Os conteúdos programáticos desta UCE são agrupados em 4 módulos temáticos e um de projecto integrador, de acordo com a seguinte estrutura: Métodos Formais ...
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 ...
Bem vindo à página da edição de 2009/10 da UCE de Métodos Formais em Engenharia de Software.
O meu nome é José Nuno Oliveira e sou o responsável por esta unidade curricular, que conta com uma equipa de docentes altamente qualificados na investigação e ensino de métodos formais aplicados ao desenvolvimento de software.
Todos fazemos parte do Laboratório HASLab (Formal Methods for High-Assurance Software), em que se vem consolidando know-how em métodos formais desde há mais de 25 anos.
Nas suas (cerca de) 300 horas anuais de ensino em métodos científicos de programação, incluindo (cerca de) 75 horas de acompanhamento de projectos propostos por parceiros nacionais e estrangeiros, esta UCE é porventura uma das mais expressivas unidades curriculares na área, à escala europeia.
Os módulos que compoem MFES corporizam os principais vectores de que depende o projecto fiável de aplicações à escala industrial.
Na sua componente teórica, a visão é a de abordar problemas de software segundo uma autêntica perspectiva de engenharia, criando modelos matemáticos sobre os quais é possível raciocinar e calcular.
Na sua componente prática, a UCE ensina a conceber e animar modelos de problemas, testando-os atempada e exaustivamente antes de se proceder à fase de cálculo e implementação, por forma a evitar erros de perspectiva ou infantilidades de concepção. Em suma: ensina-se a saber modelar e calcular, sim, mas também a saber testar e avaliar.
No seu conjunto, os conteúdos desta UCE pretendem realizar o desígnio de que é possível afixar o carimbo
nos artefactos de software desenvolvidos segundo os seus princípios metodológicos.
Parcerias
Citações
There are two ways of constructing a software design: one way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies.
Análise e Teste de Software Neste módulo, convidam se os alunos a trocar a visão construtiva do arquitecto de software pela visão do avaliador , ou gestor de ...
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 ...
Cálculo de Sistemas de Informação O objectivo deste módulo é mostrar como, de modelos abstractos, puramente declarativos, como os que se estudaram em Formais , se ...
Índice: Onde As aulas desta UCE decorrem todas num só dia, à 5ª feira , das 9h00 18h00 e numa só sala, o Laboratório DI 1.08 . Os meios audiovisuais estão localizados ...
Índice do material disponível: Bibliografia Luca Aceto, Anna Ingólfsdóttir, Kim G. Larsen, Jiri Srba. Systems: Modelling, Specification and Verification . ...
Métodos Formais Preâmbulo A ciência tem a ver com o perceber se como o mundo e as suas coisas funcionam e a tecnologia com o garantir que certas coisas que se ...
Módulos Os conteúdos programáticos desta UCE são agrupados em 4 módulos temáticos e um de projecto integrador, de acordo com a seguinte estrutura: Métodos Formais ...
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 ...
Módulos A UCE consta dos módulos seguintes, CSI Cálculo de Sistemas de Informação AMT Análise, Modelação e Teste VFS Verificação Formal de Software ...
Bem vindo a MFES Bem vindo à página da edição de 2009/10 da UCE de Métodos Formais em Engenharia de Software . O meu nome é José Nuno Oliveira e sou o responsável ...
Education/MFES0910 Web Preferences The following settings are web preferences of the Education/MFES0910 web. These preferences overwrite the site level preferences ...
This is a subscription service to be automatically notified by e-mail when topics change in this Education/MFES0910 web. This is a convenient service, so you do not have to come back and check all the time if something has changed. To subscribe, please add a bullet with your WikiName in alphabetical order to this list:
Each TWiki web has an automatic e-mail notification service that sends you an e-mail with links to all of the topics modified since the last alert.
Users subscribe to email notifications using their WikiName or an alternative email address, and can specify the webs/topics they wish to track using one of these bullet list formats:
three spaces * [ webname . ] wikiName - SMTP mail address three spaces * [ webName . ] wikiName three spaces * SMTP mail address three spaces * SMTP mail address : topics three spaces * [ webname . ] wikiName : topics
In the above examples, topics is a space-separated list of topic names. The user may further customize the specific content they will receive using the following formats:
Specify topics without a Web. prefix
Topics must exist in this web.
Topics may be specified using * wildcards
Each topic may optionally be preceded by a '+' or '-' sign. The '+' sign means "subscribe to this topic" (the same as not putting anything). The '-' sign means "unsubscribe" or "don't send notifications regarding this topic". This allows users to elect to filter out certain topics (and their children, to an arbitrary depth). Topic filters ('-') take precedence over topic includes ('+').
Each topic may optionally be followed by an integer in parentheses, indicating the depth of the tree of children below that topic. Changes in all these children will be detected and reported along with changes to the topic itself. Note This uses the TWiki "Topic parent" feature.
Each topic may optionally be immediately followed by an exclamation mark ! or a question mark ? with no intervening spaces, indicating that the topic (and children if there is a tree depth specifier as well) should be mailed out as complete topics instead of change summaries. ! causes the topic to be mailed every time even if there have been no changes, ? will mail the topic only if there have been changes to it. This only makes sense for subscriptions.
For example:
Subscribe Daisy to all changes to topics in this web.
* daisy.cutter@flowers.com
Subscribe Daisy to all changes in all webs that start with Web.
* daisy.cutter@flowers.com: Web*
Subscribe Daisy to changes to topics starting with Petal, and their immediate children, WeedKillers and children to a depth of 3, and all topics that match start with Pretty and end with Flowers e.g. PrettyPinkFlowers
Subscribe Daisy to the full content of NewsLetter whenever it has changed
* daisy@flowers.com: TWiki.NewsLetter?
Subscribe buttercup to NewsLetter and its immediate children, even if it hasn't changed.
* buttercup@flowers.com: TWiki.NewsLetter! (1)
Subscribe GardenGroup (which includes Petunia) to all changed topics under AllnewsLetters to a depth of 3. Then unsubscribe Petunia from the ManureNewsLetter, which she would normally get as a member of GardenGroup? :
A user may be listed many times in the WebNotify topic. Where a user has several lines in WebNotify that all match the same topic, they will only be notified about changes that topic once (though they will still receive individual mails for news topics).
If a TWiki group is listed for notification, the group will be recursively expanded to the e-mail addresses of all members.
Tip: List names in alphabetical order to make it easier to find the names.
Note for System Administrators: Notification is supported by an add-on to the TWiki kernel called the MailerContrib. See the MailerContrib topic for details of how to set up this service.
Note: If you prefer a news feed, point your reader to WebRss (for RSS 1.0 feeds) or WebAtom (for ATOM 1.0 feeds). Learn more at WebRssBase and WebAtomBase, respectively.
These settings override the defaults for this web only. See full list of defaults with explanation. Many of the settings below are commented out. Remove the # sign to enable a local customisation.
Natural Skin configuration
Set SKIN=nat
Set SKINSTYLE = Plain
Set STYLEBORDER = thin
Set STYLEBUTTONS = off
Set STYLESIDEBAR = left
Set STYLEVARIATION = none
Set STYLESEARCHBOX = off
Set PAGETITLE = Métodos Formais em Engenharia de Software
Set NATWEBLOGO = Métodos Formais em Engenharia de Software
Web-specific background color: (Pick a lighter one of the StandardColors).
Set WEBBGCOLOR = #D0D0D0
Note: This setting is automatically configured when you create a web
Image, URL and alternate tooltip text of web's logo. Note: Don't add your own local logos to the TWikiLogos topic; create your own logos topic instead.
Set WEBLOGOALT = Métodos Formais em Engenharia de Software
List this web in the SiteMap. If you want the web listed, then set SITEMAPLIST to on, do not set NOSEARCHALL, and add the "what" and "use to..." description for the site map. Use links that include the name of the web, i.e. Education/MFES0910.Topic links. Note: Unlike other variables, the setting of SITEMAPLIST is not inherited from parent webs. It has to be set in every web that is to be listed in the SiteMap
Set SITEMAPLIST = on
Set SITEMAPWHAT = Métodos Formais em Engenharia de Software
Set SITEMAPUSETO = Mestrado de [Engenharia] Informática (2009/10)
Note: Above settings are automatically configured when you create a web
Exclude web from a web="all" search: (Set to on for hidden webs).
Set NOSEARCHALL =
Note: This setting is automatically configured when you create a web
Prevent automatic linking of WikiWords and acronyms (if set to on); link WikiWords (if empty); can be overwritten by web preferences:
#Set NOAUTOLINK =
Note: You can still use the [[...][...]] syntax to link topics if you disabled WikiWord linking. The <noautolink> ... </noautolink> syntax can be used to prevents links within a block of text.
Default template for new topics for this web:
WebTopicEditTemplate? : Default template for new topics in this web. (Site-level is used if topic does not exist)
Comma separated list of forms that can be attached to topics in this web. See TWikiForms for more information.
Set WEBFORMS =
Users or groups who are not / are allowed to view / change / rename topics in the Education/MFES0910 web: (See TWikiAccessControl). Remove the # to enable any of these settings. Remember that an empty setting is a valid setting; setting DENYWEBVIEW to nothing means that anyone can view the web.
Preferences are used as TWikiVariables by enclosing the name in percent signs. Example:
When you write variable %WEBBGCOLOR% , it gets expanded to #D0D0D0
The sequential order of the preference settings is significant. Define preferences that use other preferences first, i.e. set WEBCOPYRIGHT before WIKIWEBMASTER since %WEBCOPYRIGHT% uses the %WIKIWEBMASTER% variable.
You can introduce your own preferences variables and use them in your topics and templates.
TWiki search results for \.*
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910
The Education/MFES0910 web of TWiki. TWiki is a Web-Based Collaboration Platform for the Enterprise.en-usCopyright 2020 by contributing authorsTWiki Administrator [webmaster@di.uminho.pt]The contributing authors of TWikiTWikiDIUM.Education/MFES0910
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910
/twiki/pub/Main/LocalLogos/um_eengP.jpgWebSideBar
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/WebSideBar
Tópicos Benvindo a MFES Docentes Contacto principal Alunos Funcionamento Programa Sumários Material Projecto (PI) ... (last changed by JoseNunoOliveira)2012-09-26T19:23:52ZJoseNunoOliveiraMaterial
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Material
Índice do material disponível: Bibliografia Luca Aceto, Anna Ingólfsdóttir, Kim G. Larsen, Jiri Srba. Systems: Modelling, Specification and Verification . ... (last changed by JoseNunoOliveira)2012-07-15T18:12:58ZJoseNunoOliveiraFuncionamento
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Funcionamento
Índice: Onde As aulas desta UCE decorrem todas num só dia, à 5ª feira , das 9h00 18h00 e numa só sala, o Laboratório DI 1.08 . Os meios audiovisuais estão localizados ... (last changed by JoseNunoOliveira)2011-04-11T10:52:58ZJoseNunoOliveiraProjectoIntegrado
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/ProjectoIntegrado
Projecto Integrado (II) 15 July Milestone Workshop schedule Morning: Begin End Description External(s) Medium 10h00 10h30 SIG1 J.Visser ... (last changed by JoseNunoOliveira)2010-11-19T23:35:21ZJoseNunoOliveiraAvisos
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/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 ... (last changed by JoseNunoOliveira)2010-10-06T19:51:39ZJoseNunoOliveiraAlunos
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Alunos
Alunos Número Nome Foto E mail 10934 Gonçalo Veiga gjveiga.lesi AT gmail DOT com 13405 Manuel Costa mane costa AT hotmail DOT com ... (last changed by JoseNunoOliveira)2010-07-29T21:37:06ZJoseNunoOliveiraCalendario
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Calendario
(last changed by JoseNunoOliveira)2010-07-15T15:40:23ZJoseNunoOliveiraWebHome
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/WebHome
Bem vindo a MFES Bem vindo à página da edição de 2009/10 da UCE de Métodos Formais em Engenharia de Software . O meu nome é José Nuno Oliveira e sou o responsável ... (last changed by JoseNunoOliveira)2010-06-28T09:36:37ZJoseNunoOliveiraEquipaDocente
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/EquipaDocente
Equipa docente Soares Barbosa Bernardo Barros Alcino Cunha João Frade Nuno Oliveira Sousa Pinto ... (last changed by JoseNunoOliveira)2010-05-28T16:32:00ZJoseNunoOliveiraPrograma
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Programa
Módulos A UCE consta dos módulos seguintes, CSI Cálculo de Sistemas de Informação AMT Análise, Modelação e Teste VFS Verificação Formal de Software ... (last changed by JoseNunoOliveira)2010-05-25T11:09:37ZJoseNunoOliveiraSponsors
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Sponsors
Parcerias JoseNunoOliveira 17 May 2010 (last changed by JoseNunoOliveira)2010-05-17T12:01:39ZJoseNunoOliveiraWebPreferences
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/WebPreferences
Education/MFES0910 Web Preferences The following settings are web preferences of the Education/MFES0910 web. These preferences overwrite the site level preferences ... (last changed by JoseNunoOliveira)2009-10-01T11:32:14ZJoseNunoOliveiraWebTopicActions
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/WebTopicActions
(last changed by AlcinoCunha)2009-09-29T16:53:07ZAlcinoCunhaMetodosFormais
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/MetodosFormais
Métodos Formais Preâmbulo A ciência tem a ver com o perceber se como o mundo e as suas coisas funcionam e a tecnologia com o garantir que certas coisas que se ... (last changed by JoseNunoOliveira)2007-05-10T22:38:09ZJoseNunoOliveiraCalculoSistemasInformacao
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/CalculoSistemasInformacao
Cálculo de Sistemas de Informação O objectivo deste módulo é mostrar como, de modelos abstractos, puramente declarativos, como os que se estudaram em Formais , se ... (last changed by JoseNunoOliveira)2007-05-10T22:13:51ZJoseNunoOliveiraAnaliseTesteSoftware
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/AnaliseTesteSoftware
Análise e Teste de Software Neste módulo, convidam se os alunos a trocar a visão construtiva do arquitecto de software pela visão do avaliador , ou gestor de ... (last changed by JoseNunoOliveira)2007-05-10T11:55:22ZJoseNunoOliveira
Neste módulo, convidam-se os alunos a trocar a visão construtiva do arquitecto de software pela
visão do avaliador, ou gestor de qualidade. Ensinam-se as competências necessárias para esse efeito
a nível da ciência da análise e teste de software, a vários níveis de granularidade, isto é,
desde o teste unitário de rotinas, funções ou serviços, até ao teste integrado de aplicações.
É importante referir que este módulo não apresenta análise e teste de programas como um simples aglomerado de
técnicas ad-hoc. Em lugar disso, é apresentada uma abordagem coerente em que a análise e o teste estão
ligados entre si, de forma complementar às técnicas de construção de programas. Nesta visão, por exemplo, as
baterias de teste são vistas como contrapartidas extensionais das propriedades intencionais que
podem ser derivadas dos modelos abstractos de problemas (especificações). Consequentemente, a geração
model-driven de testes emerge em paralelo com a engenharia reversa e refinamento por cálculo de modelos em programas. Este enquadramento teórico da análise e do teste equipa os alunos com conhecimentos sólidos numa
área que é apreendida pela maioria dos programadores de uma forma intuitiva e muito pouco sistemática.
A articulação do módulo com Projecto Integrado (PI) é, assim,
a dual da adoptada pelos outros dentro da UCE: em lugar de construir novo software aplicacional,
os alunos empregarão uma gama de métodos e ferramentas para avaliarem e
testarem software já existente, por exemplo, software de domínio público
disponível.
Programa
Teoria geral da análise de programas. Interpretação abstracta. Técnicas de slicing.
Teste à unidade, teste funcional, análise de cobertura de uma bateria de testes.
Teste orientado ao modelo, geração automática de testes, teste por injecção falhas.
Métricas para avaliação de software, normas de codificação, estilo e documentação.
Compreensão de programas, engenharia reversa.
Verificação, análise de segurança, avaliação de risco.
O objectivo deste módulo é mostrar como, de modelos abstractos, puramente
declarativos, como os que se estudaram em Métodos Formais , se podem inferir aplicações reais, implementadas em arquitectura cliente-servidor,
com garantia de correcção por cálculo.
No plano operacional, aborda-se a derivação de máquinas de estados abstractas
(ASM, vulg. objectos) que prestam serviços através de uma API pública
a partir dos modelos declarativos estudados em Métodos Formais, por
factorização do seu estado interno. Esta derivação designa-se objectificação e obdece a regras precisas.
Passa-se de seguida ao estudo do refinamento de tais ASMs, que se processa
aos dois níveis do serviço que prestam: dataware e middleware.
Ao primeiro nível, é dada particular ênfase a um cálculo de estruturas de
dados que decorre do cálculo de relações binárias estudado anteriormente
e que, em particular, substitui o cálculo de normalização de bases de dados
relacionais. O uso do referido cálculo é apoiado por uma ferramenta (2LT)
desenvolvida localmente e que calcula modelos de dados concretos em SQL a
partir de modelos abstractos em Haskell. Ao segundo nível, estuda-se como
calcular o código dos métodos (eg. em C/C++, Java, etc) a partir dos respectivos
modelos abstractos e com base na ordem de refinamento que introduz definição
e determinismo.
No plano prático (e através de um trabalho laboratorial de grupo)
o módulo articula com PI (Projecto Integrado)
na medida em que se pede aos alunos que desenvolvam protótipos de ASMs em arquitectura cliente-servidor,
parte da qual fica em fase de protótipo e a outra é implementada numa plataforma de desenvolvimento,
em articulação com Processos e Arquitectura de Software (PAS).
Tal prototipagem beneficia, por sua vez, das técnicas estudadas no semestre anterior em
Análise e Teste de Software (ATS).
Programa
Cálculo de refinamento formal de dados. Noção de impedância entre formatos de dados. Princípio da representação de dados. Relações de abstracção e de representação. Inequações de refinamento. Teorema de desrecursivação genérica. Relações de pertença estrutural e acessibilidade estrutural. Implementação de tipos indutivos polinomais em linguagens com gestão de memória dinâmica: Introdução de apontadores em linguagens tipo C/C++. Representação orientada a objectos.
Cálculo de refinamento algorítmico. A eficiência como principal motivação para o refinamento algorítmico. Fases do refinamento algorítmico: simulação, redução do não-determinismo, mudança de estrutura de dados virtual. Lei de refinamento funcional. Lei de refinamento relacional. Leis de fusão "vertical" e "horizontal". Lei de refinamento de simultâneo de dados e algoritmos. Cálculo de ciclos while como hilomorfismos.
Prototipagem rápida e integração com outras tecnologias. Integração de protótipos reactivos em arquitecturas cliente-servidor. Emulação de serviços intermédios ("middleware") e de serviços de dados ("dataware").
As aulas desta UCE decorrem todas num só dia, à 5ª-feira, das 9h00-18h00 e numa só sala, o Laboratório DI 1.08. Os meios audiovisuais estão localizados na parte anterior do laboratório.
A parte posterior está ocupada com 6 Macs Core2duo 2.0GHz/2GB/250GB/ATI2400XT/20", com sistema operativo Mac OS X. Outros sistemas operativos estão disponíveis através de Vmware Fusion. Nestas máquinas encontra-se todo o software necessário à componente experimental da UCE.
Os alunos podem deixar os seus haveres no laboratório no período de almoço. Podem ainda usar os armários que estão sob as janelas para aí deixarem material de umas sessões para outras.
A entrada no laboratório está controlada por um sistema de identificação de impressão digital, estando o acesso reservado a docentes das UCEs que aí funcionam e técnicos.
São feitas adaptações sempre que necessário (por exemplo, aquando das milestones do Projecto Integrado (PI), sessões de docentes convidados, etc)
Regime de Avaliação
A nota final é a média pesada das notas obtidas nos diferentes módulos:
Cálculo de Sistemas de Informação (15%).
Análise, Modelação e Teste (15%).
Verificação Formal de Software (15%).
Processos e Arquitecturas de Software (15%).
Projecto Integrado (40%).
Para obter aprovação à UCE os alunos terão que ter aprovação em todos os módulos: excepcionalmente poderão ser aprovados alunos que tenham reprovado a um dos módulos teóricos (a aprovação no projecto integrado é sempre obrigatória). Oportunamente serão indicados os métodos de avaliação para cada um dos módulos.
Para cada aluno, identificado pelo seu número, a nota de AMT vem em primeiro lugar e a de CSI em segundo. Lista por ordem crescente de número de aluno:
Para cada aluno, identificado pelo seu número, seguindo o formato
Nr= (NT (Teste ou Exame), Exerc UPPAAL, Final). Lista por ordem crescente de número de aluno:
A ciência tem a ver com o perceber-se como o mundo e as suas coisas funcionam
e a tecnologia com o garantir que certas coisas que se desejam acontecem
de forma fiável e repetível. A necessidade de basear
a segunda em resultados da primeira é uma constante da evolução das disciplinas
de engenharia, a única de facto capaz de ultrapassar as limitações do
puro experimentalismo e do amadorismo, e de promover a transmissão segura
do conhecimento.
Ora o resultado científico recorre, por natureza, à fórmula matemática
para poder ser expresso e, assim, ser susceptível de raciocínio. É assim
que as engenharias "clássicas", como a civil, a mecânica, a electrotécnica,
a electrónica, etc, recorrem sistematicamente a disciplinas da matemática
(algumas já centenárias) para a arrumação dos seus corpos de conhecimento.
São exemplos conhecidos de todos nós o cálculo diferencial/integral,
a análise numérica, a geometria analítica, etc, etc.
Com o advento das chamadas Tecnologias da Informação esta situação
alterou-se.
Na verdade,
essas tecnologias desde cedo mostraram alguma dificuldade em sobreviver
sobre tal herança científica,
pelo facto de esta estar demasiado comprometida com a modelização de
entidades da vida real que,
como o espaço e o tempo,
são por natureza contínuas e infinitas.
Ora o suporte computacional capaz de mecanizar esses modelos é,
por limitação física,
discreto e finito.
O que faz com que sejam a matemática discreta, a lógica formal, a
álgebra universal, etc.
as disciplinas em que o projecto científico do 'software' se alicerça.
Contudo, essas disciplinas encerram uma dificuldade - a de, por serem demasiado descritivas,
os raciocínios dificilmente escalarem a problemas de tamanho real.
Existem duas alternativas para sair dessa dificuldade:
apostar em ferramentas de verificação (demonstradores de teoremas, etc) ou apostar em
notações mais económicas e susceptíveis ao raciocínio.
Este módulo segue a segunda destas vias, sendo a sua base o ensino do cálculo de
relações binárias dito 'pointfree' (sem variáveis) e a sua essência a chamada
transformada 'pointfree' que converte expressões da lógica e matemática discreta
como forma de agilizar o raciocínios necessários.
Objectivos
Este módulo estrutura-se, pois, a dois níveis - descrição e cálculo.
No primeiro, ensina-se a especificar 'software' através da criação de
modelos abstractos sobre os quais se pode raciocinar e garantir
propriedades desejáveis ('model-oriented specification'). Ensinam-se várias abordagens à
animação e teste de modelos: o recurso à linguagem funcional
Haskell (equipada com bibliotecas desenvolvidas para esse efeito),
o recurso ao JML
e as VDMTools (CSK) que animam o VDM-SL (ISO/IEC standard 13817-1.
No segundo, ensina-se a converter esses modelos para a notação relacional e a raciocinar sobre
eles. O exercício estende-se a outras áreas da modelação como, por exemplo, a formulação de
uma semântica para diagramas ER (entidade-relação), etc.
Pela sua natureza propedêutica, o módulo é central às que a acompanham neste módulo.
A sua articulação com o Projecto Integrado (PI)
é feita ao nível da prototipagem e animação de modelos.
Programa
Introdução à especificação formal como método de controlo de qualidade em 'software'. Binómio modelação / implementação. Engenharia orientada ao modelo (MDE).
Ciclo de vida do desenvolvimento formal de 'software'. Especificação formal construtiva. Modelo de um problema. Prototipagem e animação. Validação por teste. Importância da verificação formal das propriedades de um modelo. Obrigações e métodos de prova. Sub-especificação e não-determinismo. Relação (especificação) versus função (implementação).
Introdução ao cálculo de relações. Inclusão, composição e intersecção de relações. Conversa de uma relação. Formulação de propriedades em notação "pointfree".
Taxonomia de relações binárias. As funções vistas como casos particulares de relações. Representação de predicados lógicos por relações binárias. Ordens. Estruturação do cálculo relacional com base em conecções de Galois (CG).
Significado de um invariante. Prova de preservação de um invariante. Noção de precondição mais fraca que garante uma propriedade. Regras para combinação de especificações que satisfazem propriedades.
A integridade-referencial como uma classe de invariantes sobre relações simples e finitas em bases de dados. Diagramas Entidades-Relações (ERD) e sua semântica pointfree baseada na preordem de definição de relações.
Uso do Haskell como linguagem de modelação. Invariantes, pre e pós-condições em Haskell. A biblioteca CamilaMonad. Animação de modelos em Haskell.
Recurso ao JML para anotação formal de código Java.
O "standard" ISO/IEC 13817-1 (VDM-SL). Significado de um modelo VDM-SL. Semântica relacional de um par pre-/post-. Relações em compreensão. Relações simples finitas e sua representação em VDM-SL ("mappings").
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.
Modelos e seu papel na concepção de soluções. Protótipos. Captação de requisitos e sua relação com a interpretação gramatical.
Limites da tipagem estática. Necessidade de invariantes de tipo. Primeira obrigação de prova: preservação de um invariante.
Necessidade de pre-condições para (a) especificação implícita de funções; (b) modelar o indeterminismo da realidade; (c) modelar relações; (d) permitir liberalidade ao especificador.
Pares pre/post: satisfiabilidade. Obrigações de prova: necessidade de uma transformada para a lógica e teoria de conjuntos. Transformada PF.
Estudo do cálculo de relações binárias. Relações simples e relações co-reflexivas. Representação de conjuntos por co-reflexivas.
"Extended Static Checking" (ESC) usando a transformada-PF. Caso de estudo em verificação estática estendida: o VFS (Verified File System).
Propriedades expressas sob a forma de conecções de Galois.
Polimorfismo funcional versus ESC: tipos vistos como relações. Cálculo da relação associada a um tipo polimórfico. Teorema grátis de uma função polimórfica (ou teorema de Reynolds-Wadler).
"ESC for free'': Regras do cálculo de obrigações de prova.
Análise, Modelação e Teste
Formal methods and the formal method life-cycle.
The role of abstraction in formal modelling.
Languages for formal specification and systems modelling.
The “design-by-contract” approach to software development.
Unit testing, Functional testing, Test coverage analysis.
Model-driven testing, Test generation, Model checking, Fault injection.
Introdução à verificação formal. Estudo de uma linguagem imperativa simples. Semântica operacional de transições dada por uma máquina abstracta. Semântica operacional estrutural. Semântica de avaliação. Propriedades e relação entre semânticas.
Apresentação e revisão de conceitos básicos da lógica. Os problemas de decisão SAT e a sua complexidade. Sistemas de prova automática e sistemas de prova assistida.
Lógica de Hoare. Construção de árvores de prova com base na noção de "pré-condição mais fraca". Uma arquitectura para a verificação de programas. Algoritmo VCGen.
Estudo do plugin “Jessie'' para verificação dedutiva. O VCGen genérico “Why'' e interface gráfica “Gwhy''. Sua utilização com múltiplas ferramentas de prova automática. A linguagem de anotações ACSL; verificação baseada em contratos.
Sistemas de tipos e lambda calculi tipados. Apresentação do sistema de tipos de suporte ao sistema Coq: "Calculus of Inductive Constructions" (CIC). Exemplos em Coq de diversas definições indutivas e análise dos recursores gerados pelo sistema.
Processos e Arquitecturas de Software
Introdução aos sistemas reactivos. Motivação e definição base.
Fundamentos: sistemas, comportamento e coindução.
Noção de sistema de transição etiquetado e correspondente morfismo. Noção de simulação e bisimulação. Propriedades.
Modelação de processos em CCS. Sintaxe e semântica operacional. Exemplos. Bissimilaridade e equivalência estrita.
Cálculo de processos em CCS. Equivalência e igualdade observacional. Leis. O teorema da expansão. Resolução de equações.
Estudo de linguagens para descrição de arquitecturas de software: REO e ORC.
Projecto Integrado
Nestas horas lectivas os alunos realizam, em grupo, projectos propostos pelas empresas
que patrocinam a UCE, previamente apresentados pelos proponentes numa workshop interna que dá início ao processo.
No decorrer do projecto há visitas dos alunos às instalações das empresas sempre que tal é conveniente.
No final do ano, o PI fecha-se com uma outra workshop em que os grupos apresentam os seus resultados aos docentes e staff das empresas (por video-conferência, se necessário), participando estes últimos também na sessão de avaliação final.
TWiki's Education/MFES0910 webThe Education/MFES0910 web of TWiki. TWiki is a Web-Based Collaboration Platform for the Enterprise.http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910Copyright 2020 by contributing authors2020-10-30T14:39:22ZWebStatisticshttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/WebStatistics2020-10-30T14:39:22ZStatistics for Education/MFES0910 Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors for topic ... (last changed by TWikiGuest)TWikiGuestWebSideBarhttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/WebSideBar2012-09-26T19:23:52ZTópicos Benvindo a MFES Docentes Contacto principal Alunos Funcionamento Programa Sumários Material Projecto (PI) ... (last changed by JoseNunoOliveira)JoseNunoOliveiraMaterialhttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Material2012-07-15T18:12:58ZÍndice do material disponível: Bibliografia Luca Aceto, Anna Ingólfsdóttir, Kim G. Larsen, Jiri Srba. Systems: Modelling, Specification and Verification . ... (last changed by JoseNunoOliveira)JoseNunoOliveiraFuncionamentohttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Funcionamento2011-04-11T10:52:58ZÍndice: Onde As aulas desta UCE decorrem todas num só dia, à 5ª feira , das 9h00 18h00 e numa só sala, o Laboratório DI 1.08 . Os meios audiovisuais estão localizados ... (last changed by JoseNunoOliveira)JoseNunoOliveiraProjectoIntegradohttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/ProjectoIntegrado2010-11-19T23:35:21ZProjecto Integrado (II) 15 July Milestone Workshop schedule Morning: Begin End Description External(s) Medium 10h00 10h30 SIG1 J.Visser ... (last changed by JoseNunoOliveira)JoseNunoOliveiraAvisoshttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Avisos2010-10-06T19:51:39Z03 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 ... (last changed by JoseNunoOliveira)JoseNunoOliveiraAlunoshttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Alunos2010-07-29T21:37:06ZAlunos Número Nome Foto E mail 10934 Gonçalo Veiga gjveiga.lesi AT gmail DOT com 13405 Manuel Costa mane costa AT hotmail DOT com ... (last changed by JoseNunoOliveira)JoseNunoOliveiraCalendariohttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Calendario2010-07-15T15:40:23Z (last changed by JoseNunoOliveira)JoseNunoOliveiraWebHomehttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/WebHome2010-06-28T09:36:37ZBem vindo a MFES Bem vindo à página da edição de 2009/10 da UCE de Métodos Formais em Engenharia de Software . O meu nome é José Nuno Oliveira e sou o responsável ... (last changed by JoseNunoOliveira)JoseNunoOliveiraEquipaDocentehttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/EquipaDocente2010-05-28T16:32:00ZEquipa docente Soares Barbosa Bernardo Barros Alcino Cunha João Frade Nuno Oliveira Sousa Pinto ... (last changed by JoseNunoOliveira)JoseNunoOliveiraProgramahttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Programa2010-05-25T11:09:37ZMódulos A UCE consta dos módulos seguintes, CSI Cálculo de Sistemas de Informação AMT Análise, Modelação e Teste VFS Verificação Formal de Software ... (last changed by JoseNunoOliveira)JoseNunoOliveiraSponsorshttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Sponsors2010-05-17T12:01:39ZParcerias JoseNunoOliveira 17 May 2010 (last changed by JoseNunoOliveira)JoseNunoOliveiraWebPreferenceshttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/WebPreferences2009-10-01T11:32:14ZEducation/MFES0910 Web Preferences The following settings are web preferences of the Education/MFES0910 web. These preferences overwrite the site level preferences ... (last changed by JoseNunoOliveira)JoseNunoOliveiraWebTopicActionshttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/WebTopicActions2009-09-29T16:53:07Z (last changed by AlcinoCunha)AlcinoCunhaMetodosFormaishttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/MetodosFormais2007-05-10T22:38:09ZMétodos Formais Preâmbulo A ciência tem a ver com o perceber se como o mundo e as suas coisas funcionam e a tecnologia com o garantir que certas coisas que se ... (last changed by JoseNunoOliveira)JoseNunoOliveiraCalculoSistemasInformacaohttp://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/CalculoSistemasInformacao2007-05-10T22:13:51ZCálculo de Sistemas de Informação O objectivo deste módulo é mostrar como, de modelos abstractos, puramente declarativos, como os que se estudaram em Formais , se ... (last changed by JoseNunoOliveira)JoseNunoOliveira
Índice do material disponível: Bibliografia Luca Aceto, Anna Ingólfsdóttir, Kim G. Larsen, Jiri Srba. Systems: Modelling, Specification and Verification . ...
Índice: Onde As aulas desta UCE decorrem todas num só dia, à 5ª feira , das 9h00 18h00 e numa só sala, o Laboratório DI 1.08 . Os meios audiovisuais estão localizados ...
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 ...
Bem vindo a MFES Bem vindo à página da edição de 2009/10 da UCE de Métodos Formais em Engenharia de Software . O meu nome é José Nuno Oliveira e sou o responsável ...
Módulos A UCE consta dos módulos seguintes, CSI Cálculo de Sistemas de Informação AMT Análise, Modelação e Teste VFS Verificação Formal de Software ...
Education/MFES0910 Web Preferences The following settings are web preferences of the Education/MFES0910 web. These preferences overwrite the site level preferences ...
Métodos Formais Preâmbulo A ciência tem a ver com o perceber se como o mundo e as suas coisas funcionam e a tecnologia com o garantir que certas coisas que se ...
Cálculo de Sistemas de Informação O objectivo deste módulo é mostrar como, de modelos abstractos, puramente declarativos, como os que se estudaram em Formais , se ...
Análise e Teste de Software Neste módulo, convidam se os alunos a trocar a visão construtiva do arquitecto de software pela visão do avaliador , ou gestor de ...
Módulos Os conteúdos programáticos desta UCE são agrupados em 4 módulos temáticos e um de projecto integrador, de acordo com a seguinte estrutura: Métodos Formais ...
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 ...
Bem vindo à página da edição de 2009/10 da UCE de Métodos Formais em Engenharia de Software.
O meu nome é José Nuno Oliveira e sou o responsável por esta unidade curricular, que conta com uma equipa de docentes altamente qualificados na investigação e ensino de métodos formais aplicados ao desenvolvimento de software.
Todos fazemos parte do Laboratório HASLab (Formal Methods for High-Assurance Software), em que se vem consolidando know-how em métodos formais desde há mais de 25 anos.
Nas suas (cerca de) 300 horas anuais de ensino em métodos científicos de programação, incluindo (cerca de) 75 horas de acompanhamento de projectos propostos por parceiros nacionais e estrangeiros, esta UCE é porventura uma das mais expressivas unidades curriculares na área, à escala europeia.
Os módulos que compoem MFES corporizam os principais vectores de que depende o projecto fiável de aplicações à escala industrial.
Na sua componente teórica, a visão é a de abordar problemas de software segundo uma autêntica perspectiva de engenharia, criando modelos matemáticos sobre os quais é possível raciocinar e calcular.
Na sua componente prática, a UCE ensina a conceber e animar modelos de problemas, testando-os atempada e exaustivamente antes de se proceder à fase de cálculo e implementação, por forma a evitar erros de perspectiva ou infantilidades de concepção. Em suma: ensina-se a saber modelar e calcular, sim, mas também a saber testar e avaliar.
No seu conjunto, os conteúdos desta UCE pretendem realizar o desígnio de que é possível afixar o carimbo
nos artefactos de software desenvolvidos segundo os seus princípios metodológicos.
Parcerias
Citações
There are two ways of constructing a software design: one way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies.
Análise e Teste de Software Neste módulo, convidam se os alunos a trocar a visão construtiva do arquitecto de software pela visão do avaliador , ou gestor de ...
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 ...
Cálculo de Sistemas de Informação O objectivo deste módulo é mostrar como, de modelos abstractos, puramente declarativos, como os que se estudaram em Formais , se ...
Índice: Onde As aulas desta UCE decorrem todas num só dia, à 5ª feira , das 9h00 18h00 e numa só sala, o Laboratório DI 1.08 . Os meios audiovisuais estão localizados ...
Índice do material disponível: Bibliografia Luca Aceto, Anna Ingólfsdóttir, Kim G. Larsen, Jiri Srba. Systems: Modelling, Specification and Verification . ...
Métodos Formais Preâmbulo A ciência tem a ver com o perceber se como o mundo e as suas coisas funcionam e a tecnologia com o garantir que certas coisas que se ...
Módulos Os conteúdos programáticos desta UCE são agrupados em 4 módulos temáticos e um de projecto integrador, de acordo com a seguinte estrutura: Métodos Formais ...
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 ...
Módulos A UCE consta dos módulos seguintes, CSI Cálculo de Sistemas de Informação AMT Análise, Modelação e Teste VFS Verificação Formal de Software ...
Bem vindo a MFES Bem vindo à página da edição de 2009/10 da UCE de Métodos Formais em Engenharia de Software . O meu nome é José Nuno Oliveira e sou o responsável ...
Education/MFES0910 Web Preferences The following settings are web preferences of the Education/MFES0910 web. These preferences overwrite the site level preferences ...
This is a subscription service to be automatically notified by e-mail when topics change in this Education/MFES0910 web. This is a convenient service, so you do not have to come back and check all the time if something has changed. To subscribe, please add a bullet with your WikiName in alphabetical order to this list:
Each TWiki web has an automatic e-mail notification service that sends you an e-mail with links to all of the topics modified since the last alert.
Users subscribe to email notifications using their WikiName or an alternative email address, and can specify the webs/topics they wish to track using one of these bullet list formats:
three spaces * [ webname . ] wikiName - SMTP mail address three spaces * [ webName . ] wikiName three spaces * SMTP mail address three spaces * SMTP mail address : topics three spaces * [ webname . ] wikiName : topics
In the above examples, topics is a space-separated list of topic names. The user may further customize the specific content they will receive using the following formats:
Specify topics without a Web. prefix
Topics must exist in this web.
Topics may be specified using * wildcards
Each topic may optionally be preceded by a '+' or '-' sign. The '+' sign means "subscribe to this topic" (the same as not putting anything). The '-' sign means "unsubscribe" or "don't send notifications regarding this topic". This allows users to elect to filter out certain topics (and their children, to an arbitrary depth). Topic filters ('-') take precedence over topic includes ('+').
Each topic may optionally be followed by an integer in parentheses, indicating the depth of the tree of children below that topic. Changes in all these children will be detected and reported along with changes to the topic itself. Note This uses the TWiki "Topic parent" feature.
Each topic may optionally be immediately followed by an exclamation mark ! or a question mark ? with no intervening spaces, indicating that the topic (and children if there is a tree depth specifier as well) should be mailed out as complete topics instead of change summaries. ! causes the topic to be mailed every time even if there have been no changes, ? will mail the topic only if there have been changes to it. This only makes sense for subscriptions.
For example:
Subscribe Daisy to all changes to topics in this web.
* daisy.cutter@flowers.com
Subscribe Daisy to all changes in all webs that start with Web.
* daisy.cutter@flowers.com: Web*
Subscribe Daisy to changes to topics starting with Petal, and their immediate children, WeedKillers and children to a depth of 3, and all topics that match start with Pretty and end with Flowers e.g. PrettyPinkFlowers
Subscribe Daisy to the full content of NewsLetter whenever it has changed
* daisy@flowers.com: TWiki.NewsLetter?
Subscribe buttercup to NewsLetter and its immediate children, even if it hasn't changed.
* buttercup@flowers.com: TWiki.NewsLetter! (1)
Subscribe GardenGroup (which includes Petunia) to all changed topics under AllnewsLetters to a depth of 3. Then unsubscribe Petunia from the ManureNewsLetter, which she would normally get as a member of GardenGroup? :
A user may be listed many times in the WebNotify topic. Where a user has several lines in WebNotify that all match the same topic, they will only be notified about changes that topic once (though they will still receive individual mails for news topics).
If a TWiki group is listed for notification, the group will be recursively expanded to the e-mail addresses of all members.
Tip: List names in alphabetical order to make it easier to find the names.
Note for System Administrators: Notification is supported by an add-on to the TWiki kernel called the MailerContrib. See the MailerContrib topic for details of how to set up this service.
Note: If you prefer a news feed, point your reader to WebRss (for RSS 1.0 feeds) or WebAtom (for ATOM 1.0 feeds). Learn more at WebRssBase and WebAtomBase, respectively.
These settings override the defaults for this web only. See full list of defaults with explanation. Many of the settings below are commented out. Remove the # sign to enable a local customisation.
Natural Skin configuration
Set SKIN=nat
Set SKINSTYLE = Plain
Set STYLEBORDER = thin
Set STYLEBUTTONS = off
Set STYLESIDEBAR = left
Set STYLEVARIATION = none
Set STYLESEARCHBOX = off
Set PAGETITLE = Métodos Formais em Engenharia de Software
Set NATWEBLOGO = Métodos Formais em Engenharia de Software
Web-specific background color: (Pick a lighter one of the StandardColors).
Set WEBBGCOLOR = #D0D0D0
Note: This setting is automatically configured when you create a web
Image, URL and alternate tooltip text of web's logo. Note: Don't add your own local logos to the TWikiLogos topic; create your own logos topic instead.
Set WEBLOGOALT = Métodos Formais em Engenharia de Software
List this web in the SiteMap. If you want the web listed, then set SITEMAPLIST to on, do not set NOSEARCHALL, and add the "what" and "use to..." description for the site map. Use links that include the name of the web, i.e. Education/MFES0910.Topic links. Note: Unlike other variables, the setting of SITEMAPLIST is not inherited from parent webs. It has to be set in every web that is to be listed in the SiteMap
Set SITEMAPLIST = on
Set SITEMAPWHAT = Métodos Formais em Engenharia de Software
Set SITEMAPUSETO = Mestrado de [Engenharia] Informática (2009/10)
Note: Above settings are automatically configured when you create a web
Exclude web from a web="all" search: (Set to on for hidden webs).
Set NOSEARCHALL =
Note: This setting is automatically configured when you create a web
Prevent automatic linking of WikiWords and acronyms (if set to on); link WikiWords (if empty); can be overwritten by web preferences:
#Set NOAUTOLINK =
Note: You can still use the [[...][...]] syntax to link topics if you disabled WikiWord linking. The <noautolink> ... </noautolink> syntax can be used to prevents links within a block of text.
Default template for new topics for this web:
WebTopicEditTemplate? : Default template for new topics in this web. (Site-level is used if topic does not exist)
Comma separated list of forms that can be attached to topics in this web. See TWikiForms for more information.
Set WEBFORMS =
Users or groups who are not / are allowed to view / change / rename topics in the Education/MFES0910 web: (See TWikiAccessControl). Remove the # to enable any of these settings. Remember that an empty setting is a valid setting; setting DENYWEBVIEW to nothing means that anyone can view the web.
Preferences are used as TWikiVariables by enclosing the name in percent signs. Example:
When you write variable %WEBBGCOLOR% , it gets expanded to #D0D0D0
The sequential order of the preference settings is significant. Define preferences that use other preferences first, i.e. set WEBCOPYRIGHT before WIKIWEBMASTER since %WEBCOPYRIGHT% uses the %WIKIWEBMASTER% variable.
You can introduce your own preferences variables and use them in your topics and templates.
TWiki search results for \.*
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910
The Education/MFES0910 web of TWiki. TWiki is a Web-Based Collaboration Platform for the Enterprise.en-usCopyright 2020 by contributing authorsTWiki Administrator [webmaster@di.uminho.pt]The contributing authors of TWikiTWikiDIUM.Education/MFES0910
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910
/twiki/pub/Main/LocalLogos/um_eengP.jpgWebSideBar
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/WebSideBar
Tópicos Benvindo a MFES Docentes Contacto principal Alunos Funcionamento Programa Sumários Material Projecto (PI) ... (last changed by JoseNunoOliveira)2012-09-26T19:23:52ZJoseNunoOliveiraMaterial
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Material
Índice do material disponível: Bibliografia Luca Aceto, Anna Ingólfsdóttir, Kim G. Larsen, Jiri Srba. Systems: Modelling, Specification and Verification . ... (last changed by JoseNunoOliveira)2012-07-15T18:12:58ZJoseNunoOliveiraFuncionamento
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Funcionamento
Índice: Onde As aulas desta UCE decorrem todas num só dia, à 5ª feira , das 9h00 18h00 e numa só sala, o Laboratório DI 1.08 . Os meios audiovisuais estão localizados ... (last changed by JoseNunoOliveira)2011-04-11T10:52:58ZJoseNunoOliveiraProjectoIntegrado
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/ProjectoIntegrado
Projecto Integrado (II) 15 July Milestone Workshop schedule Morning: Begin End Description External(s) Medium 10h00 10h30 SIG1 J.Visser ... (last changed by JoseNunoOliveira)2010-11-19T23:35:21ZJoseNunoOliveiraAvisos
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/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 ... (last changed by JoseNunoOliveira)2010-10-06T19:51:39ZJoseNunoOliveiraAlunos
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Alunos
Alunos Número Nome Foto E mail 10934 Gonçalo Veiga gjveiga.lesi AT gmail DOT com 13405 Manuel Costa mane costa AT hotmail DOT com ... (last changed by JoseNunoOliveira)2010-07-29T21:37:06ZJoseNunoOliveiraCalendario
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Calendario
(last changed by JoseNunoOliveira)2010-07-15T15:40:23ZJoseNunoOliveiraWebHome
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/WebHome
Bem vindo a MFES Bem vindo à página da edição de 2009/10 da UCE de Métodos Formais em Engenharia de Software . O meu nome é José Nuno Oliveira e sou o responsável ... (last changed by JoseNunoOliveira)2010-06-28T09:36:37ZJoseNunoOliveiraEquipaDocente
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/EquipaDocente
Equipa docente Soares Barbosa Bernardo Barros Alcino Cunha João Frade Nuno Oliveira Sousa Pinto ... (last changed by JoseNunoOliveira)2010-05-28T16:32:00ZJoseNunoOliveiraPrograma
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Programa
Módulos A UCE consta dos módulos seguintes, CSI Cálculo de Sistemas de Informação AMT Análise, Modelação e Teste VFS Verificação Formal de Software ... (last changed by JoseNunoOliveira)2010-05-25T11:09:37ZJoseNunoOliveiraSponsors
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/Sponsors
Parcerias JoseNunoOliveira 17 May 2010 (last changed by JoseNunoOliveira)2010-05-17T12:01:39ZJoseNunoOliveiraWebPreferences
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/WebPreferences
Education/MFES0910 Web Preferences The following settings are web preferences of the Education/MFES0910 web. These preferences overwrite the site level preferences ... (last changed by JoseNunoOliveira)2009-10-01T11:32:14ZJoseNunoOliveiraWebTopicActions
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/WebTopicActions
(last changed by AlcinoCunha)2009-09-29T16:53:07ZAlcinoCunhaMetodosFormais
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/MetodosFormais
Métodos Formais Preâmbulo A ciência tem a ver com o perceber se como o mundo e as suas coisas funcionam e a tecnologia com o garantir que certas coisas que se ... (last changed by JoseNunoOliveira)2007-05-10T22:38:09ZJoseNunoOliveiraCalculoSistemasInformacao
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/CalculoSistemasInformacao
Cálculo de Sistemas de Informação O objectivo deste módulo é mostrar como, de modelos abstractos, puramente declarativos, como os que se estudaram em Formais , se ... (last changed by JoseNunoOliveira)2007-05-10T22:13:51ZJoseNunoOliveiraAnaliseTesteSoftware
http://wiki.di.uminho.pt/twiki/bin/view/Education/MFES0910/AnaliseTesteSoftware
Análise e Teste de Software Neste módulo, convidam se os alunos a trocar a visão construtiva do arquitecto de software pela visão do avaliador , ou gestor de ... (last changed by JoseNunoOliveira)2007-05-10T11:55:22ZJoseNunoOliveira