MC705 - Laboratório de Programação de Sistemas
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:
- Lista produtos disponíveis
Exibe uma lista com os produtos existentes
(disponíveis ou não no estoque).
- 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)
- 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.
- 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.
- Adiciona Y livros do tipo X no estoque.
Adiciona produtos no estoque e propaga a
informação para outros servidores.
- ...
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.