Vous êtes sur la page 1sur 32

Diego Pereira Mendes

 Introdução

 Engenharia de Domínio

 Linha de Produto de Software (LPS)

 Estudo de Caso

 Conclusão

2
 Contextualização (Desenvolvimento Tradicional)

 Produto único

 Ciclo de vida repetitivo

 Vale a pena um grande esforço ser usado apenas


uma vez? Por que não reaproveitá-lo?

3
 Contextualização (Desenvolvimento Proposto)

 Ideia de Henry Ford em 1914 (“Linha de


montagem”)

 Reaproveitamento de peças

 Vários modelos

4
 Contextualização (Desenvolvimento Proposto)

Limpador de Pára-
brisa Traseiro: Motor: 1.0, 1.6 ou
opcional 2.0
Câmbio:
automático ou
Ar
manual
Condicionado:
opcional

 Pode ser feito o mesmo com softwares? - Sim.

5
 Definição
 Domínio
 Processo sistemático (mesmo conjunto de regras)
 Componentes reutilizáveis de software
 Não depende de um projeto concreto

 Semelhanças com a Engenharia de Software


Engenharia de Software Engenharia de Domínio
Análise de requisitos Análise de domínio

Especificação do sistema Especificação da infraestrutura

Projeto e implementação Implementação da infraestrutura

6
 Exemplo:

7
8
 Gestão de Produto
 Qual o objetivo?
 Aspectos econômicos
 Escopo do domínio

9
 Engenharia de requisitos de domínio
 Viabilidade (resumo do uso da arquitetura)
 Requisitos de domínio (O que é o domínio? Qual a
necessidade dos stakeholders? O que é prioridade? )
 Validação de requisitos

10
 Desenho de domínio
 Define a arquitetura de referência
 Variabilidade
 Representação de variabilidade em caso de uso

11
 Desenho de domínio
 Representação de variabilidade (Jacobson, Griss e
Jonsson em 1997)
 Estereótipo <<extend>> e a marca “•”

12
 Desenho de domínio
 Descrição do cenário
Id: CA01
Ator: Professora
Objetivo: agenda {V0} utilizando o sistema
Pré-condição: o usuário ter logado no sistema
Cenário de sucesso:
- Quando o sistema é iniciado o sistema mostra as possíveis funções de { V0 }
- Para utilizar as funções de { V0 } o usuário deve proceder:
- {V2}
------------------------------------------------------------------------
V0: alternative
V0: 1. Aula teórica
2. Aula prática
------------------------------------------------------------------------
V2: parâmetro
if V0=1 then
procedure_A:
- digite a data no campo1
- confirme pressionando o botão OK

else if V0=2 then


procedure_A:
- digite a data no campo1
- digite o local no campo2
- confirme pressionando o botão OK

13
 Desenho de domínio
 Configuration knowledge
 “suponha que aula prática obriga fazer aula teórica no
mesmo dia”
Componente Tarefa
Agendar Aula Selecionar o cenário CA01

Utilizar componente AulaTeorica.java, e não utilizar o


Agenda Aula Teórica
componente AulaPratica.java

Utilizar o componente AulaTeorica.java e também


Agenda Aula Prática
AulaPratica.java

14
 Desenho de domínio
 Modelo de features (características)
- Determina quais os produtos são válidos no domínio
- “Incorpora” o Configuration knowledge (facilidade gráfica)
- Feature Modeling Plug-in (FMP)

15
 Realização do domínio
 Implementação da arquitetura (Codificação)

16
 Realização do domínio
 Programação Orientada a Aspecto (framework AspectJ)
 Separa e organiza o código de acordo com sua
importância
 Permite a criação de métodos, variáveis, classes em
tempo de execução
 Interesses tranversais
 A arquitetura
 Impossível com programação tradicional

17
 Realização do domínio
 Ex:

18
 Testes de domínio
 Verifica se os componentes gerados estão de acordo
com o Configuration knowledge

19
 Definição
 Família de sistema
 Ativos em comum
 Forma preestabelecida (Planos de produção)
 Segmento particular ou missão

 Desenvolvimento para adaptações


 Ideia de Henry Ford em 1914 (“Linha de montagem”)
 Produção de carros com equipamentos customizados
(adicionais, acessórios)

20
 Produtos com características:
 Comuns
 Variáveis

 Estratégias de desenvolvimento de uma LPS


 Pró-ativa (todo o desenvolvimento)
 Extrativa (produtos já existentes)
 Reativa (incremental, ampliada aos poucos)

21
 O que não é LPS?
 Desenvolvimento de um sistema único com reuso
 Requer vários produtos

 Desenvolvimento baseado em componentes:


 Tem que está de acordo com a arquitetura da linha de
produção

 Releases e versões de um mesmo produto


 Cada produto possui suas releases e versões

22
 Atividades essenciais para uma linha de produto
de software Engenharia da
Aplicação
Engenharia de
Domínio

Técnico e
organizacional
23
 Vantagens
 Lucratividade
 Qualidade (erros detectados mais rápido)
 Produtividade

 Desvantagens
 Muito esforço inicial
 Padronizações desapropriadas
 Evolução da abordagem (precisa sempre ser revisado e
atualizado)
 Caso contrário, podem ter mudanças (interesses pessoais)
e comprometer o modelo

24
 Desenvolvimento de uma LPS para calculadoras
 Objetivo: Mostrar o funcionamento de uma LPS
usando as definições apresentadas
 Cenário: Imagine um escola onde cada
professor de matemática dependendo da turma
em que ministra aula precisa de uma
calculadora
 Ensino Infantil: Calculadora Simples(+,-,x e :)
 Ensino Fundamental: Calculadora Avançada (+,-,x, :,
seno, cosseno, tangente e raiz quadrada)

25
 Engenharia de Domínio
 Gestão do Produto (Já foi explicado todo o cenário)
 Engenharia de requisitos de domínio
CÓDIGO DESCRIÇÃO
O sistema deverá permitir que o usuário faça operações
C01
matemáticas
Existe um número enorme de operações matemáticas, onde
C02 dependendo da área do profissional, ele pode usar algumas
operações e outras não
É observado que existem várias operações (Somar, Subtrair,
C03 multiplicar, Dividir, Raiz quadrada, exponencial e entre outras que
podem surgir)
O operador do sistema será na maioria das vezes, qualquer
C04
profissional da área matemática dos diversos ramos
Todos os usuários usam operações básicas (Somar, Subtrair,
C05
Multiplicar e Dividir)

26
 Engenharia de Domínio
 Desenho do domínio

27
 Engenharia de Domínio
 Desenho do domínio
 Configuration knowledge
Feature Tarefa
Calculadora Selecionar o cenário CA01

Não utilizar os componentes ModoAvancado, Seno,


Funções Simples Cosseno, Tangente, RaizQuadrada
E utilizar Soma, Subtracao, Divisao e Multiplicacao

Utilizar todos os componentes válidos na feature Funções


Funções Avançadas Simples acrescido dos componentes ModoAvancado, Seno,
Cosseno, Tangente, RaizQuadrada

28
 Engenharia de Domínio
 Desenho do domínio
 Modelo features

29
 Engenharia de Domínio
 Realização do domínio (ex: Calculadora Avançada)

30
 Engenharia de Domínio
 Realização do domínio

31
 Facilidade
 Agilidade
 Menor Custo
 Muito Esforço
 Precisa de uma profunda análise (vale a pena
usar LPS em determinados casos?)

32

Vous aimerez peut-être aussi