Tutoriais
Teste Baseado em Modelos para Sistemas de Tempo Real
Palestrantes
Wilkerson de L. Andrade (UFCG)
Gustavo H. P. Carvalho (UFPE)
Patrícia D. L. Machado (UFCG)
Resumo
Nos últimos cinquenta anos, a indústria tem se deparado com um aumento significativo de componentes embarcados de HW-SW em sistemas críticos. Um relatório da NASA publicado em 2009 destaca que, de 1960 a 2000, a quantidade de funcionalidades fornecidas por software embarcado em aeronaves militares tem crescido de 8% para 80%. Este cenário não é um privilégio da indústria da aviação. A indústria automobilística, por exemplo, tem se tornado ainda mais dependente de componentes embarcados. Claramente, essa tendência aumenta o tamanho e a complexidade do software e, com relação aos sistemas críticos, segurança e confiabilidade são questões centrais. Atualmente, muitas pesquisas têm como enfoque alcançar níveis desejados de segurança e confiabilidade nestes sistemas. Algumas abordagens para tratar o problema são baseadas em verificação formal de modelos e propriedades, enquanto outras contam com técnicas de Teste Baseado em Modelos (TBM). Neste sentido, este tutorial terá como enfoque as possibilidades de TBM considerando sistemas de tempo real.
Adaptive and Self-managing Systems
Palestrantes
Luciano Baresi (Politecnico di Milano - Dipartimento di Elettronica e Informazione)
Resumo
Adaptability is becoming a key feature of many modern software systems. In some cases, it simply consists in adjusting the topology of the system or the configuration of its components. In other cases, components can enter and leave the system continuously, and adaptation must accommodate them seamlessly. These systems must be able to self-adjust themselves to the new conditions; user intervention must be limited. These systems are often referred to as adaptive or self-managing systems. They mimic conventional control systems and embed the monitor-analyze-plan-execute control (feedback) loop to support adaptation as intrinsic property. They comprise sensors, which can be dedicated software elements that provide field data for decision-making, and actuators, which apply planned decisions. This tutorial will introduce this class of software systems and will discuss some interesting proposals to highlight the key elements. We must distinguish between those systems that consider a fixed set of elements and those that support more dynamism and allow components to enter and leave the system. Adaptation capabilities range from rule-based systems to bio-inspired solutions. Moreover, required changes can come from a centralized controller, or the different components can cooperate and coordinate themselves through decentralized, peer-to-peer solutions. The tutorial will conclude with the presentation of a complete solution and of some ideas for further research in the field.
SMT (Satisfiability Modulo Theories): um cálculo para a ciência da computação
Palestrantes
Leonardo de Moura (Microsoft Research)
Resumo
SMT (Satisfiability Modulo Theories) consiste em checar a satisfiabilidade de formulas em lógica de primeira ordem em relação a uma ou mais teorias. O problema combina algumas das mais fundamentais áreas da ciência da computação. Ele combina o problema de satisfação Booleana (SAT) com domínios, tais como, os estudados em otimização e manipulação simbólica de termos. Ele também se beneficia dos mais prolíficos problemas estudados em lógica simbólica no ultimo século: o problema da decisão, completude e incompletude de teorias lógicas, e complexidade. O problema de combinar algoritmos específicos para um domínio é tão profundo e complexo quanto o processo de encontrar novos algoritmos que funcionem bem em problemas encontrados na indústria. SMT está presente no coração de diversas ferramentas de engenharia de software, tais como, geradores automáticos de testes, analisadores de programas, verificadores de tipo e checadores de modelo. Um provador SMT que leva em consideração os recentes avanços da área é varias ordens de magnitude mais rápido que uma solução ad-hoc. Nesse tutorial apresentaremos uma introdução a SMT solvers, descreveremos como eles são usados na Microsoft, e diversos exemplos baseados no provador de teoremas Z3. Z3 é livre para aplicações acadêmicas e/ou sem fins lucrativos.
Explorando o Intangível: Um Panorama da Visualização de Software e suas Aplicações.
Palestrantes
Marcelo Schots (COPPE/UFRJ, UERJ)
Cláudia Maria Lima Werner (COPPE/UFRJ)
Resumo
Atualmente, na era da informação, a criação de ferramentas, técnicas e metodologias que apoiem a interpretação e manipulação de grandes massas de dados são vistas como formas de utilizar a informação existente como apoio à tomada de decisão. A Visualização de Software, uma subárea da Visualização de Informação, tem como foco de pesquisa a utilização de recursos computacionais para potencializar a percepção, compreensão e assimilação da informação do software e sobre o software pelo usuário, por meio do estímulo da capacidade cognitiva humana. Este tutorial apresenta uma visão geral da área de visualização de software, incluindo os principais conceitos e técnicas de visualização, além de casos de aplicações científicas e comerciais. Algumas pesquisas em andamento também serão apresentadas.
Ecossistemas de Software: Estágio Atual, Direções de Pesquisa e a Prática na Indústria de Software
Palestrantes
Cláudia Maria Lima Werner (COPPE/UFRJ)
Rodrigo Pereira dos Santos (COPPE/UFRJ)
Carina Alves (UFPE)
Resumo
O desenvolvimento de software progride cada vez mais em pesquisa teórica e aplicada, e apresenta desafios que estão além da alçada puramente técnica. Desenvolver um software unicamente como produto tem sido substituído pelo desenvolvimento de múltiplos produtos, derivados de uma plataforma baseada em uma arquitetura comum e integrados com outros softwares em redes de componentes e stakeholders. Nesse sentido, o estudo dos ecossistemas de software (ECOSs) emerge como um tópico de pesquisa aplicada na área de Engenharia de Software (ES). Os ECOSs representam uma abordagem para a melhoria da visão da ES no contexto intra e interorganizacional, bem como para agregar reutilizabilidade ao envolver usuários e desenvolvedores externos no processo de abertura e desenvolvimento de plataformas. Este tutorial visa apresentar os fundamentos de ECOSs, discutindo conceitos e características, assim como tecnologias e abordagens para gerência e desenvolvimento de ECOSs para lidar com o tripé arquitetura-negócios-redes sociais. Além disso, processos de qualidade que apoiam os ECOSs são apresentados, como Gerência de Reutilização e Desenvolvimento para Reutilização. Casos reais são discutidos a fim de explorar estudos realizados na academia e na indústria. Por fim, algumas considerações encerram o tutorial, realizando uma análise de direções de pesquisa e prática em ECOSs.