Instituto de Computação - UNICAMP

MC705 - Laboratório de Programação de Sistemas

Islene Calciolari Garcia

João Eduardo Ferreira Bertacchi

Dicas para a especificação


Este conjunto de itens pode servir de guia para a entrega da especificação. Este documento acrescenta alguns comentários em azul
às dicas para a primeira apresentação. Note que os exemplos estão todos resumidos e servem apenas para ilustrar os tópicos a serem abordados.

Definição do problema

Escopo do problema

Inicie com as características gerais do seu sistema.

Tanto no texto da apresentação quanto na especificação deve ficar claro:

1) qual é o problema e o que será vendido

Exemplo: Será implementada uma loja online de venda de livros. Existem L produtos (livros) diferentes. Cada estoque armazena no máximo LL cópias de cada produto. Cada cliente pode comprar no máximo l produtos de cada tipo e ll produtos no total....

2) características especiais deste tipo de aplicação
Exemplo: Caso um livro não esteja disponível na edição solicitada pelo cliente, pode-se oferecer uma edição mais nova.

3) qual é o objetivo/motivação da implementação

Exemplo: Com esta implementação pretende-se conseguir um serviço de venda livros com alta disponibilidade e que tenha bom tempo de resposta.

Infraestrutura

Exemplo: S estoques localizados em locais físicos diferentes. Cada estoque possui seu próprio servidor com os dados totalmente replicados. Eles ligados entre si por uma rede WAN. Os clientes fazem as compras através de um interface web que acessa o servidor/estoque mais próximo fisicamente do cliente....

Pode ser interessante a apresentação de uma figura que ilustre o problema e a infraestrutura.

Operações

Cada grupo deve apresentar uma lista de operações esperadas para o sistema. O funcionamento de cada operação deve ser detalhado (a explicação pode ser feita pensando-se em casos de uso da operação).

Exemplo:

  1. Lista produtos disponíveis

    Exibe uma lista com os produtos existentes (disponíveis ou não no estoque).

  2. Consulta se o produto X está disponível

    O usuário informa o produto desejado e o sistema avisa se o produto está disponível no estoque (local ou em qualquer outro)

  3. Adiciona X livros do tipo Y ao carrinho de compras

    Caso o produto Y esteja disponível em algum estoque, X unidades são adicionadas ao carrinho de compras.

  4. Efetua compra

    O cliente informa o endereço de entrega. O sistema verifica se os produtos do carrinho estão disponíveis nas quantidades desejadas nos estoques. Caso não haja produtos suficientes em estoque o sistema informa o cliente do problema para que ele modifique o carrinho de compras. Caso todos os produtos estejam disponíveis no estoque local, o sistema subtrai dele os produtos do carrinho. As unidades que não forem fornecidas pelo estoque local serão fornecidas pelo estoque mais próximo. Note que mesmo quando o produto não está disponível localmente, o produto é removido do estoque (operação local) e é criado um pedido com o produto, a quantidade e o estoque que está enviando.

  5. Adiciona Y livros do tipo X no estoque.

    Adiciona produtos no estoque e propaga a informação para outros servidores.

  6. ...

Definição da solução

Arquitetura do sistema

Exemplo: Serão implementados processos clientes que irão interagir com os processos servidores via gerentes de réplicas...

Detalhamento das operações

É importante descrever em alto nível como as operações serão implementadas, ressaltando as possíveis interações entre os servidores.

Algoritmo e modelo de consistência

Exemplo: Será utilizado o algoritmo proposto por Fulano e Beltrano, que adota o modelo de consistência Tal. Para as operações X e Y, o sistema impõe maiores restrições de consistência do que para as operações W e Z. (...)

O funcionamento do algoritmo utilizado deve ser descrito!

É importante descrever casos de inconsistências e como estes serão contornados.

Deve ser definido o modelo de consistência para o sistema e qual o seu comportamento em casos especiais.

Exemplo: O sistema privilegia o desempenho, mesmo que isso possa causar a venda de um livro que na realidade não está mais em estoque...   

Linguagem e ferramentas adotadas

Exemplo: O sistema será implementado em Python e utilizará o banco de dados IC-Database. Será utilizada a biblioteca de replicação GNU-Replica versão 1.2.3.

Simplificações

O grupo pode ter decidido fazer simplificações que tornem o projeto mais factível.
Exemplo: Não será implementado um WEB Service, mas apenas uma interface simples...

Auto-avaliação da solução

Cada grupo deve levantar pontos positivos e negativos da sua solução. Os seguintes pontos podem ser comentados: desempenho, disponibilidade, consistência dos dados, tolerância a falhas, confiabilidade e escalabilidade.

Você deve deixar claro:

1) O problema que você pretende resolver realmente será resolvido da forma como você propôs? Por quê?

Exemplo: A solução adotada realmente irá aumentar a disponibilidade e o desempenho na maior parte do dia porque...

2) Quais são os possíveis efeitos colaterais da solução?

Exemplo: O sistema pode ficar indisponível no período de sincronizanação dos dados, mas esta tarefa deve ocorrer de madrugada...

3) Haverá uma diminuição na consistência dos dados? Em quais casos? Por que isto é (in)aceitável?

Exemplo:  Eventualmente, um livro pode demorar para chegar, mas isso não é problema pois normalmente os clientes já têm muita coisa para ler em casa... :-)

Referências

Colocar referências para artigos, livros e/ou sites.