ApresentaçãoChamada de TrabalhosChamada de FerramentasMini-cursos e TutoriaisComissãoPalestrantes InternacionaisPrograma e inscriçãoAcomodaçõesEdições Anteriores
 

 
Nenad Medvidović é Professor Associado no Departamento de Ciência da Computação da University of Southern California. Ele é membro do USC Center for Systems and Software Engineering (CSSE) e professor associado ao Institute for Software Research (ISR) na University of California, em Irvine.

Medvidović recebeu seu Ph.D. em 1999 do Departamento de Ciências da Computação e Informação da University of California em Irvine sob a direção do Professor Richard N. Taylor. Ele também recebeu um M.S. em Ciências da Computação e Informação em 1995 da University of California em Irvine, e um B.S. em Ciência da Computação summa cum laude em 1992 do Departamento de Ciência e Engenharia da Computação na Arizona State University. Medvidović recebeu os prêmios National Science Foundation CAREER (2000) e ITR (2003), assim como o Okawa Foundation Research Grant (2005).

A pesquisa de Medvidović é voltada para a área de desenvolvimento de software baseado em arquiteturas. Seu trabalho está focado em modelagem e análise de arquitetura de software; infra-estrutura de middleware para implementação de arquiteturas; arquiteturas de linhas de produtos; estilos arquiteturais; e suporte arquitetural para desenvolvimento de software em ambientes embarcados altamente distribuídos, móveis, e com restrição de recursos. Ele é membro da Association for Computing Machinery (ACM), ACM Special Interest Group on Software Engineering (SIGSOFT), e do Institute of Electrical and Electronics Engineers (IEEE).

Keynote Talk I: Moving Architectural Description from Under the Technology Lamppost

Software architecture description languages (ADLs) were a particularly active research area in the 1990s. In 2000, I co-authored an extensive study of existing ADLs, which has served as a useful reference to software architecture researchers and practitioners. However, the field of software architecture and our understanding of it have undergone a number of changes in the past several years. In particular, the Unified Modeling Language (UML) has gained a lot of popularity and wide adoption, and as a result many of the ADLs I had studied have been pushed into obscurity. In this talk, I will argue that the main reason behind this is that the early ADLs focused almost exclusively on the technological aspects of architecture, and mostly ignored the application domain and business contexts within which software systems, and development organizations, exist. Together, these three concerns - technology, domain, and business - constitute the three lampposts needed to appropriately il luminate software architecture and architectural description. I will use this new framework to evaluate both the languages from my original study, as well as several more recent ADLs (including UML 2.0).
     
Dr. Paul Clements é um membro senior do corpo técnico no Instituto de Engenharia de Software (Software Engineering Institute - SEI) na Universidade Carnegie Mellon (Carnegie Mellon University), onde ele vem trabalhando desde 1994 liderando ou acompanhando projetos em engenharia de linhas de produtos de software e análise e documentação de arquitetura de software.

Clements é co-autor de três livros orientados a prática sobre arquitetura de software: "Software Architecture in Practice" (1998, segunda edição em 2003), "Evaluating Software Architectures: Methods and Case Studies" (2001), e "Documenting Software Architectures: View and Beyond" (2002). Ele também foi co-autor de "Software Product Lines: Practices and Patterns" (2001), e foi co-autor e editor de "Constructing Superior Software" (1999). Clements ainda escreveu dezenas de artigos em engenharia de software refletindo seu constante interesse no projeto e especificação de sistemas de software desafiadores.

Ele recebeu seu bacharel (B. S.) em ciências matemátics em 1977, e seu mestrado (M. S.) em ciência da computação em 1980, ambos da University of North Carolina em Chapel Hill. Ele recebeu seu Ph.D. em ciência da computação da University of Texas em Austin em 1994.

Keynote Talk II: Software Product Lines: Past, Present, and Future

A software product line is a set of software-intensive systems sharing a common, managed set of features that satisfy the specific needs of a particular market segment or mission and that are developed from a common set of core assets in a prescribed way. This talk will give a brief introduction to software product lines and highlight some major success stories. Then it will turn to the state of product line research and pose some challenge problems for the future.
 

Tutoriais: Mini-cursos: Tutorial I: Improving a Distributed Software System's Quality of Service via Architecture-Driven Dynamic Redeployment (Nenad Medvidović)

Nenad Medvidović é Professor Associado no Departamento de Ciência da Computação da University of Southern California. Ele é membro do USC Center for Systems and Software Engineering (CSSE) e professor associado ao Institute for Software Research (ISR) na University of California, em Irvine. Sua biografia está descrita com mais detalhes aqui.

A qualidade de serviço (QoS) oferecida por um sistema de software distribuído depende de muitos parâmetros de sistema, como banda derede, confiabilidade de links, freqüência de interações entre componentes de software, e assim por diante. A arquitetura de deployment de um sistema distribuido (isto é, o mapeamento de componentes de software para as máquinas correspondentes) pode ter um impacto significante sobre a qualidade de serviço deste sistema. Além disso, a arquitetura de deployment influenciará a satisfação dos usuários, dado que estes têm preferências de QoS diferentes para os serviços do sistema que eles acessam. Encontrar uma arquitetura de deployment que maximiza a satisfação geral dos usuários é um problema desafiador, e com muitas facetas. Nesta palestra, eu apresentarei: (i) um modelo extensível d e arquitetura de deployment de sistemas de software; (ii) uma suíte de algoritmos adaptáveis para estimar um redeployment melhorado; (iii) um ambiente visual para explorar automaticamente um grande número de opções de deployment; e (iv) uma infra-estrutura de execução para efetuar os deployments preferidos durante a execução do sistema. Eu discutirei a avaliação desta abordagem em um grande número de cenários representativos, incluindo duas instalações industriais.


Tutorial II: Software Product Lines: Essential Practices for Success (Paul Clements)

Dr. Paul Clements é um membro senior do corpo técnico no Instituto de Engenharia de Software (Software Engineering Institute - SEI) na Universidade Carnegie Mellon (Carnegie Mellon University), onde ele vem trabalhando desde 1994 liderando ou acompanhando projetos em engenharia de linhas de produtos de software e análise e documentação de arquitetura de software. Sua biografia está descrita com mais detalhes aqui.

Uma linha de produtos de software é um conjunto de sistemas intensivos em software que compartilham um conjunto gerenciado e comum de funcionalidades que satisfazem necessidades específicas de um segmento particular de mercado ou missão e que são desenvolvidos a partir de um conjunto comum de artefatos centrais de acordo com regras bem determinadas. Empresas de todos os tamanhos e domínios estão utilizando a abordagem de linhas de produtos de software para conseguir melhorias impressionantes em tempo de desenvolvimento, produtividade, custo, e qualidade. Este tutorial fará uma introdução às atividades essenciais e práticas de sucesso. Nós discutiremos o que são (e o que não são) linhas de produtos, e as três atividades essenciais para conseguir uma linha de produtos de software: desenvolvimento de artefatos centrais, desenvolvimento e gerenciamento de p rodutos. Este tutorial cobrirá algumas das práticas essenciais exclusivas do desenvolvimento de linhas de produtos de software, e apresentará histórias de sucesso de linhas de produto de software industrial.


Tutorial III: Evaluating a Service-Oriented Architecture (Paulo Merson)

Paulo Merson tem mais de 16 anos de experiência com desenvolvimento de software. Ele trabalha atualmente no Instituto de Engenharia de Software (SEI) em Carnegie Mellon com arquitetura de software, arquitetura orientada a serviços, o ATAM e previsões em desenvolvimento baseado em componentes. Uma de suas responsabilidades no SEI é ministrar um curso de dois dias chamado "Documenting Software Architectures" para profissionais da indústria e do governo. Recentemente, tem ministrado palestras para estudantes de graduação sobre temas tais como J2EE, AOP, UML 2.0 e tutoriais em conferências e palestras convidadas em diferentes empresas. Antes de entrar para o SEI, foi um consultor em J2EE e trabalhou na implementação de diversas aplicações em empresas. Ele tem seu título de bacha rel pela Universidade de Brasíla e seu título de mestre em engenharia de software pela universidade Carnegie Mellon.

Você está envolvido no desenvolvimento de uma arquitetura orientada a serviços (SOA), ou está considerado esta abordagem para seu próximo projeto ? Você acredita que a avaliação da arquitetura é um passo importante no ciclo de vida do software porque, entre outros benefícios, ela detecta problemas difíceis de corrigir depois que a implementação terminou ? Se você respondeu "sim" a ambas as perguntas, então nós o convidamos a comparecer a este mini-curso, onde apresentaremos informações práticas para avaliar a arquitetura de um sistema SOA. Nós discutiremos como descrever a arquitetura, que abordagens arquiteturais são aplicáveis e outros aspectos da análise da arquitetura - sempre com um olhar específico de soluções SOA. Neste mini-curso, o Método de Análise de B alanço de Arquitetura do SEI (Architecture Tradeoff Analysis Method, ATAM) será utilizado como referência para os passos, entradas e saídas de uma técnica de avaliação de arquitetura.

Mini-curso I: Gerência de Reutilização de Software (Cláudia Werner)


Cláudia Werner é Doutora (1992) em Engenharia de Sistemas e Computação pela COPPE/UFRJ. Professor do Programa de Engenharia de Sistemas e Computação da COPPE/UFRJ desde 1993. Tem vários artigos em revistas, congressos nacionais e internacionais. Participou de projetos de consultoria na Petrobrás, Embratel, Banco Central e CEPEL e de cursos para Petrobrás, Embratel, Citibank, Câmara Municipal do Rio de Janeiro, IBM do Brasil e Banco Central. Áreas de Atuação: Engenharia de Software, Orientação a Objetos e Reutilização de Software.

A Reutilização de Software é a disciplina responsável pela criação de sistemas de software a partir de software preexistente. Este conceito vai além da simples reutilização de código, na medida em que outros produtos como especificações, projetos e planos de teste podem também ser reutilizados. A principal motivação para a reutilização de software é o aumento dos níveis de produtividade e qualidade no processo de desenvolvimento de software. A busca pela melhoria da qualidade de software e o aumento da produtividade tem sido amplamente explorados pela comunidade de engenharia de software, dentro e fora do país. Muitas organizações têm relatado nos últimos anos casos bem sucedidos de uso de uma estratégia de reutilização no processo de desenvolvimento de software. O potencial da reutilização de software pode ser alcançado a partir de um Programa de Reutilização bem estabelecido, que tenha como objetivo introduzir a reutilização na empresa como um meio para torná-la mais competitiva, agilizando sua produção e possibilitando o desenvolvimento de produtos de software de qualidade. Este mini-curso tem como objetivo apresentar a Gerência de Reutilização, incluindo aspectos econômicos, organizacionais e de pessoal que podem levar uma empresa a reutilizar software de forma efetiva. Apresentamos ainda as normas existentes e o modelo de referência MPS.BR que tratam sobre o tema em questão.


Mini-curso II: MDA - Padrões, Tecnologias e Desafios (Glêdson Elias)

Glêdson Elias é Doutor em Ciência da Computação pelo CIn/UFPE (2002). Iniciou a carreira acadêmica em 1993, e, atualmente, é Professor do Programa de Pós-Graduação em Informática do DI/UFPB, onde coordena o grupo COMPOSE(www.compose.ufpb.br). Suas principais áreas de atuação são: Engenharia de Software, Tecnologias de Componentes; Sistemas Distribuídos, Middleware e Computação Móvel.

Este mini-curso faz uma análise crítica da MDA (Model-Driven Architecture) e evidencia o que pode ser adotado nas práticas atuais de desenvolvimento de software e quais são as promessas e visões para o futuro. Inicialmente, este mini-curso aborda conceitos básicos de MDA, como modelos, meta-modelos, transformações de modelos, PIM, PSM e CIM, relevando a importância destes para o desenvolvimento de software baseados em modelos. A seguir, este mini-curso discute as principais tecnologias atualmente disponíveis, incluindo MOF, UML, XMI, CWM, SPEM e QVT, enumerando ferramentas disponíveis, quando possível. Por fim, este mini-curso identifica problemas e desafios, sugerindo tendências de pesquisa neste campo.


 


Instituto de Computação (IC)



UNICAMP - Universidade Estadual de Campinas