690 likes | 872 Views
Reutilização (Engenharia de Domínio). Toacy C. de Oliveira COPPE/UFRJ. Introdução Conceitos Análise de Domínio Projeto e Implementação de Domínios Métodos. Agenda. Engenharia de Domínio. Introdução. Motivação.
E N D
Reutilização(Engenharia de Domínio) Toacy C. de Oliveira COPPE/UFRJ Toacy C. Oliveira - COPPE/UFRJ
Introdução Conceitos Análise de Domínio Projeto e Implementação de Domínios Métodos Agenda Toacy C. Oliveira - COPPE/UFRJ
Engenharia de Domínio Introdução Toacy C. Oliveira - COPPE/UFRJ
Motivação • Como observado em [Parnas76], a quantidade de recursos necessários para desenvolver uma aplicação seria reduzido se esta fizesse parte de um grupo de aplicações similares (uma família de aplicações) que pudessem ser desenvolvidas a partir de um núcleo em comum. Toacy C. Oliveira - COPPE/UFRJ
Problema • Como identificar esta família ? • Como identificar o que é comum e o que não é ? • Como identificar uma aplicação pertencente à familia? Toacy C. Oliveira - COPPE/UFRJ
Resposta • Análise de Domínio • Engenharia de Domínio (termo mais abrangente) Toacy C. Oliveira - COPPE/UFRJ
Motivação para ED (não-tec) • A maioria dos sistemas de software podem ser classificados de acordo com a área do negócio e o tipo de tarefas que estes suportam. • Ex: Sistemas de Reserva de Passagens, Registro Médico, Gerenciamento de Estoque... Toacy C. Oliveira - COPPE/UFRJ
Motivação para ED (tec) • Similarmente, parte destes sistemas podem ser classificadas do acordo com sua funcionalidade. • Banco de Dados, Pacotes para Sincronização, Workflow, GUI.. Toacy C. Oliveira - COPPE/UFRJ
Domínio ? • Área organizada ao redor de uma classe de sistemas. • Ex. Telecomunicações • Parte de um sistema. • Ex. Persistência Toacy C. Oliveira - COPPE/UFRJ
Engenharia de Domínio • É a atividade de coletar, organizar e armazenar experiências passadas adquiridas na construção de sistemas ou parte de sistemas em um domínio em particular, na forma de uma artefato reutilizável. É também responsável por prover meios de reutilizar estas artefatos na construção de novos sistemas. Toacy C. Oliveira - COPPE/UFRJ
Passos • Análise de Domínio • Projeto do Domínio • Implementação do Domínio Toacy C. Oliveira - COPPE/UFRJ
Análise de Domínio • Define um conjunto de requisitos reutilizáveis em um domínio. Toacy C. Oliveira - COPPE/UFRJ
Projeto do Domínio • Estabelece uma arquitetura comum aos sistemas de um dado domínio. Toacy C. Oliveira - COPPE/UFRJ
Implementação do Domínio • Implementação dos artefatos reutilizáveis (componentes, linguagens de domínio, geradores) e a infra-estrutura de reuso. Toacy C. Oliveira - COPPE/UFRJ
SE vs DE • SE (Software Engineering) • Visa o desenvolvimento de um sistema específico para um usuário específico em um contexto específico. • DE (Domain Engineering) • Visa o desenvolvimento de um artefato reutilizável, ou seja, genérico e flexível o suficiente para dar origem a várias aplicações.Leva em consideração um conjunto de usuários e um conjunto de contextos de utilização. Toacy C. Oliveira - COPPE/UFRJ
DE vs AE Toacy C. Oliveira - COPPE/UFRJ
Engenharia de Domínio Conceitos Toacy C. Oliveira - COPPE/UFRJ
Domínio [Dicionário] • “A sphere of activity, concern, or function; a field, e.g. the domain of history.” American Heritage Dictionary Toacy C. Oliveira - COPPE/UFRJ
Domínio [Czarnecki99] • An area of knowledge: • scoped to maximize the satisfaction of the requirements of its stakeholders, • including a set of concepts and terminology understood by practitioners in that area, and • including knowledge of how to build software systems (or parts of software systems) in that area. Toacy C. Oliveira - COPPE/UFRJ
Análise de Domínio Conceitos Toacy C. Oliveira - COPPE/UFRJ
Análise de Domínio • Objetivos • Selecionar e definir o domínio foco. • Colecionar informações relevantes sobre o domínio e integrá-la a um Modelo de Domínio coerente. • Originalmente proposto por [Neighbors81] quando desenvolvendo o paradigma Draco. Toacy C. Oliveira - COPPE/UFRJ
Fontes de Informação • Especialistas no Domínio • Manuais • Livros • Protótipos • Experimentos Toacy C. Oliveira - COPPE/UFRJ
Modelo do Domínio*** • Representação das propriedades comuns e variáveis de um sistema em um domínio bem como suas interdependências (somente do que varia) . Toacy C. Oliveira - COPPE/UFRJ
Estrutura do Modelo • Definição do Domínio • Léxico do Domínio / Domain Specific Language • Modelos Conceituais • Modelos de Features Toacy C. Oliveira - COPPE/UFRJ
Definição • Define o escopo do domínio e caracteriza seu conteúdo através de exemplos de sistemas em seu domínio, contra-exemplos (sistemas fora do domínio) e regras genéricas de inclusão e exclusão. • Ex : “Todo sistema com a funcionalidade XXX pertence ao domínio”. Toacy C. Oliveira - COPPE/UFRJ
Léxico • Define o vocabulário • Ex Dicionário de Dado, DSL, UML Profile. Toacy C. Oliveira - COPPE/UFRJ
Modelo Conceitual • Descreve os conceitos em algum formalismo. • Ex. UML, Fluxograma,... Toacy C. Oliveira - COPPE/UFRJ
Modelo de Features • Define um conjunto de requisitos reutilizáveis e configuráveis que especificam um sistema no domínio. Este requisito é chamado de Feature (será apresentado em breve). Toacy C. Oliveira - COPPE/UFRJ
Um “template”*** Toacy C. Oliveira - COPPE/UFRJ
Um “exemplo”*** Toacy C. Oliveira - COPPE/UFRJ
Projeto & Implementação Domínio Conceitos Toacy C. Oliveira - COPPE/UFRJ
Objetivo • Projeto • Desenvolver uma arquitetura para os sistemas do domínio. • Implementação • Materialização do projeto em componentes, geradores para configuração e etc. Toacy C. Oliveira - COPPE/UFRJ
Arquitetura (1) • “Abstractly, software architecture involves the description of elements from which systems are built, interactions among those elements, patterns that guide their composition, and constraints on these patterns. In general, a particular system is defined in terms of a collection of components and interactions among these components. Such a system may in turn be used as a (composite) element in a larger system design.” [ShawGarlan96] Toacy C. Oliveira - COPPE/UFRJ
Arquitetura (2) • A software architecture is a description of the subsystems and components of a software system and the relationships between them. Subsystems and components are typically specified in different views to show the relevant functional and nonfunctional properties of a software system. The software architecture of a system is an artifact. It is the result of the software development activity. [Buschmann et al96] Toacy C. Oliveira - COPPE/UFRJ
Padrão Arquitetural • Configuração recorrente dos elementos de uma arquitetura. • Layers • Pipes and Filters • Blackboard • Broker • Model-View-Controller • Microkernnel Toacy C. Oliveira - COPPE/UFRJ
Arquitetura Real • Normalmente está baseada em mais de um padrão ao mesmo tempo. • É um projeto de alto nível que satisfaz a todos os requisitos mas permite um alto grau de flexibilidade/liberdade para a implementação. • Ex OO Framework Toacy C. Oliveira - COPPE/UFRJ
Engenharia de Domínio Métodos Toacy C. Oliveira - COPPE/UFRJ
Por que outro ? • Métodos Tradicionais • Não diferenciam Engenharia de Domínio da Engenharia da Aplicação (ES). • Não levam em consideração a delimitação do domínio (não há escopo). • Não diferenciam entre a modelagem da variabilidade no contexto de uma ou várias aplicações. • Não representam a variabilidade de forma independente da plataforma. Toacy C. Oliveira - COPPE/UFRJ
Métodos • FODA (Feature-Oriented Domain Analysis) [Kang90] • FORM (Feature-Oriented Reuse Method) [Kang98] • ODM (Organization Domain Modeling) [SCK96] • RSEB (Reuse-Driven Software Engineering Business) [JacobsonGriss97] • FeatuRSEB (Featured RSEB) [GrissFavaro98] • PuLSE (Product Line Software Engineering) [BDF99] • FAST (Family-Oriented Abstraction, Specification, and Translation) [Weiss99] Toacy C. Oliveira - COPPE/UFRJ
Engenharia de Domínio O Modelo de Features Toacy C. Oliveira - COPPE/UFRJ
O Modelo de Features*** • Representação hierárquica que visa capturar os relacionamentos estruturais entre as Features de um domínio de aplicação. Toacy C. Oliveira - COPPE/UFRJ
Feature • Aspecto visível pelo usuário, qualidade ou característica presente em uma aplicação. • Característica ou conceito essencial para um stakeholder/cliente das aplicações em um domínio. Toacy C. Oliveira - COPPE/UFRJ
Exemplo • Quando alguém compra um automóvel é necessário fazer uma escolha sobre a característica transmissão (manual ou automática). • Automóvel • Transmissão • Manual • Automática Toacy C. Oliveira - COPPE/UFRJ
Representação da Feature • Nome • Deve ser conciso e capaz de descrever a característica em questão. • É utilizado como parte do vocabulário do domínio • Modelo de Features = Taxonomia Toacy C. Oliveira - COPPE/UFRJ
Representação Gráfica Transmissão Toacy C. Oliveira - COPPE/UFRJ
Exemplos Persistência EstratégiadeVenda Transmissão Toacy C. Oliveira - COPPE/UFRJ
Features = Classes ? • Classes => descrição genérica de um conjunto de objetos. • Features => descrição genérica de instâncias de features. Toacy C. Oliveira - COPPE/UFRJ
Features != Classes • Instâncias de Classes => têm propriedades pré-definidas, estado. • Instâncias de Features ou de conceitos => pode ser qualquer coisa. Toacy C. Oliveira - COPPE/UFRJ
Diagrama de Features • É composto por um conjunto de nós (Features), relacionamentos entre estes nós e ícones nos relacionamentos. • Tem a forma de uma árvore onde a raiz representa o conceito em questão (concept node). Os outros nós da árvore reprsentam as features (feature node). Toacy C. Oliveira - COPPE/UFRJ
Exemplo Carro Motor Transmissão Potência Toacy C. Oliveira - COPPE/UFRJ