Página Inicial > Boas práticas > Passo a passo para a elaboração do modelo de domínio – Parte 1 de 2

Passo a passo para a elaboração do modelo de domínio – Parte 1 de 2

Neste artigo irei abordar as práticas e técnicas utilizadas para a elaboração do modelo de domínio para o desenvolvimento de software

Quando você está criando seu modelo de domínio, uma boa fonte de classes de domínio inclui a descrição de requisitos em alto nível, aqueles que são geralmente (mas nem sempre) escrito na forma "O sistema deve fazer isso, o sistema não deve fazer isso. " É útil verificar esses requisitos, extraindo os substantivos e frases substantivas. Você pode refiná-las para criar o modelo de domínio inicial. Com isso em mente, vamos percorrer os requisitos de alto nível para para o desenvolvimento de um software para uma Livraria Virtual, e e extrair as classes de domínio possíveis.


Passo 1 : Elencar os requisitos de alto nível para o software a ser modelado

1. A livraria vai ser baseada na Web

2. A livraria deve ser capaz de vender livros, com os pedidos aceitos através da Internet.

3. O usuário deve ser capaz de adicionar livros em um carrinho de compras on-line, antes do processo de checkout.
a. Da mesma forma, o usuário deve ser capaz de remover itens do carrinho de compras.

4. O usuário deve ser capaz de manter listas de desejos dos livros que ele quer comprar posteriormente.

5. O usuário deve ser capaz de cancelar as encomendas antes que eles sejam expedidas.

6. O usuário deve ser capaz de pagar com cartão de crédito ou boleto bancário.

7. Deve ser possível para o usuário devolver os livros.

8. O site da livraria deve ser embutido em sites de parceiros associados usando mini catálogos,
que são derivados de um catálogo global armazenado em um banco de dados central.

a. O mini-catálogos deve ser definido em XML, já que eles vão ser transferidos entre sistemas externos.

9. O usuário deve ser capaz de criar uma conta de cliente, de modo que o sistema armazene detalhes do usuário (nome, endereço e detalhes do cartão de crédito) no início da sessão.

a. O sistema deve manter uma lista de contas no banco de dados central.

b. Quando um usuário faz logon, sua senha deve ser sempre comparada com a
senhas na lista da conta principal.

10. O usuário deve ser capaz de procurar livros por vários métodos de pesquisa: título, autor,
palavra-chave ou categoria, e depois ver os detalhes dos livros.

11. Deve ser possível para o usuário publicar resenhas de livros favoritos; os comentários de revisão
deve aparecer na tela de detalhes do livro. A revisão deve incluir uma avaliação de cliente
(1-5), que normalmente é mostrada junto com o título do livro nas listas de livros.

a. As resenhas bibliográficas devem ser moderadas, isto é, verificados e aprovadas por um membro do
staff antes de serem publicados no site.

b. Comentários mais longos devem ser truncados na tela de detalhes do livro, o cliente pode
clicar para ler a revisão completa em uma página separada.

12. Deve ser possível para o staff publicar opiniões editorial de livros. Estes devem também
aparecem na tela de detalhes do livro.

14. A livraria deve ser escalável, com os seguintes requisitos específicos:

a. A livraria deve ser capaz de manter as contas de usuário para até 100.000
clientes nos seus primeiros seis meses, e depois desse período de 1.000.000 de contas.

b. A livraria deve ser capaz de atender até 1.000 usuários simultâneos (10.000
após seis meses).

c. A livraria deve ser capaz de acomodar até 100 solicitações de pesquisa por minuto
(1.000 / minuto, depois de seis meses).

d. A livraria deve ser capaz de acomodar até 100 compras por hora
(1.000 horas / depois de seis meses).

Passo 2: Análise textual dos requisitos em alto nível – identificar classes de domínio candidatas

Realizar uma análise textual  dos requisitos de alto nível, para identificar os substantivos e registrá-los na tabela abaixo

Autor

Checkout

Lista de Contas Principal

Palavra Chave

Avaliação do Cliente

Comentários de Revisão

Lista de Desejos

Parceiros Associados

Banco de Dados

Conta do Cliente

Lista de Livros

Pedidos

Boleto Bancário

Conta do Usuário

Livraria

Resenha Bibliográfica

Carrinho de Compras

Detalhes de Livros

Livros

Senha

Cartão Crédito

Internet

Método de Pesquisa

Título

Catalogo Global

Itens

Mini-catálogo

Usuário

Categoria

Lista de Contas

Opnião do Editorial

Palavra Chave

 

Passo 3: Analisar quais substantivos representam verdadeiramente uma classe de domínio

Após identificar as classes candidatas a partir dos requisitos de alto nível, o próximo passo é o de analisar quais representam verdadeiramente uma classe do sistema.

Como nós identificamos qual desses nomes candidatos realmente descreve classes no nosso domínio de problema? Uma abordagem muito utilizada é desafiar a nome candidato a algumas questões conforme mostrado a seguir:

1. O nome candidato está dentro das fronteiras do sistema? Se não, ele deve ser um ator do seu sistema

2. O candidato tem um comportamento identificável no domínio do problema (exemplo: nos podemos dar nomes aos serviços ou funções que são necessários no nosso domínio do problema, e que esse candidato irá ser o dono e prover o serviço ou função?)

3. O candidato possui uma estrutura identificada? (exemplo: é possível identificar algum conjunto de dados que esse candidato irá possuir e manipular?)

4. Esse candidato tem relacionamentos com outros candidatos?

Deccorrente dessa análise obtem-se os seguintes resultados:

a. Usuário e Cliente possuem o mesmo significado e representa um ator do sistema e deve ser utilizado nos diagramas de casos de uso

b. Cliente e conta de cliente não são duplicidades e representam coisas diferentes. Conta do cliente é uma entidade que será armazenada no banco de dados. Já cliente ou usuário é um ator.

c. Conta do cliente e conta do usuário são duplicidades, e será mantido conta do cliente

d. Os termos lista de contas e lista de contas principal são duplicidades, e será mantido apenas lista de contas principal.

e. Os termos resenha bibliográfica e comentário de revisão são duplicidades, e será mantido apenas comentário de revisão.

f. Temos diversos termos candidatos a catálogo ou lista de livros: Lista de livros; mini-catálogo; catálogo global. Catálogos e listas são provavelmente conceitos diferentes. Parece que o texto está tentando nos dizer alguma coisa. Quando houver dúvida, pergunte ao cliente até obter um entendimento claro sobre a questão.

g. Lista de livros é provavelmente um termo guarda-chuva para diferentes tipos de listas. Vamos mantê-lo e verificar como ele se sai no desenho do diagrama de domínio

h. O termo internet é muito genérico e não acrescenta algo no modelo de domínio

i. O termo password não representa um objeto e deve ser um elemento de tela, portanto será removido. O mesmo se aplica para título e palavra-chave.

j.Livro e detalhes dos livros são duplicidades. Vamos manter apenas livros.

k.O termo item é vago e confuso mas representa um conceito válido: um item que foi adicionado ao carrinho de compras do cliente. Vamos mudar o nome para item do carrinho e mantê-lo na lista.

l.O termo livraria é muito abrangente e está fora do modelo de domínio.

A partir dessa análise elabora-se uma segunda tabela contendo as classes candidatas de domínio

Autor

Checkout

Método de Pesquisa

Avaliação do Cliente

Comentários de Revisão

Mini-catálogo

Banco de Dados

Conta do Cliente

Opnião do Editorial

Boleto Bancário

Itens do carrinho

Parceiros Associados

Carrinho de Compras

Lista de Contas

Pedidos

Cartão Crédito

Lista de Desejos

 

Catalogo Global

Lista de Livros

 

Categoria

Livros

 

 

Passo 4: Desenhar a primeira versão do modelo de domínio

A partir da tabela do passo 3, desenhar o diagrama de classes de domínio do sistema de livraria virtual. Utilizar o relacionamento de agregação (tem um) entre as classes de domínio

image

Aguarde segunda parte desse artigo, onde será detalhado os passos necessários para o refinamento do modelo de classes.

Artigo adaptado do livro Use Case Driven Object Modeling with UML, Theory and Pratice. Doug Rosenberg e Matt Stephens

Artigo adaptado de texto Geetting from use case to code, Part 1, disponível em http://www.ibm.com/developerworks/rational/library/5383.html

Compartilhe:
  • Print
  • email
  • RSS
  • Add to favorites
  • Digg
  • Twitter
  • Facebook
  • MySpace
  • LinkedIn
  • del.icio.us
  • Slashdot
  • Technorati
  • Rec6
  • Google Bookmarks
  • Yahoo! Bookmarks
  • Yahoo! Buzz

Related posts:

  1. Piores práticas para o desenvolvimento de software – Parte 2 de 2
  2. Sete erros mais comuns ao se escrever casos de uso
Categories: Boas práticas Tags: