Modelos e Artefatos

Objetivos

(Prof.Jacques Philippe Sauvé)

Os modelos e outros artefatos (deliverables)

Modelos de Análise

Exemplo de Modelo de Análise

Breve descrição do sistema desejado

Glossário

Detalhes levantados durante a análise em preparação para fazer o modelo conceitual

Modelo conceitual

User Stories

  1. Adicionar, remover e alterar uma pessoa. O CPF é usado como chave. Ao remover entidades, cuidado para não deixar outras entidades órfãos. Por exemplo, se uma pessoa possui portfólios, então ela não pode ser removida.
  2. Adicionar, remover e alterar uma instituição financeira
  3. Adicionar, remover e alterar um instrumento financeiro
  4. Adicionar e remover donos de portfólios.
  5. Criar e alterar composições recursivas de portfólios e os atributos de portfólios
  6. Adicionar, remover e alterar uma transação (comprar, vender, receber dividendos, etc.)
  7. Adicionar, remover e alterar preços de ativos para qualquer data. Isso só deve ser possível para ativos em que fizer sentido (ex. não se pode alterar o valor de um título)
  8. Achar o número de conta de um portfólio
  9. Achar todos os dividendos para uma ação (Achar todas as transações de divivendos que referenciam uma ação. )
  10. Achar todos os pagamentos de juros e retorno do principal para um título
  11. Achar todas as "transações de comércio" para um ativo (isto é, pulando transações de pagamento de dividendos, retorno do principal e juros).
  12. Achar todas as transações para um portfólio
  13. Calcular o total de taxas pagas para transações de um portfólio num intervalo de tempo
  14. Achar os ativos num portfólio para uma data específica. ( Queremos uma lista de todos os ativos, com suas quantidades. Lembre de descer um portfólio recursivamente e juntar ativos do mesmo tipo somando suas quantidades. Só interessam ativos para os quais a quantidade é > 0.)
  15. Achar as opções (Stock options) de um portfólio que vencem dentro de 1 mês
  16. Calcular o valor de um portfólio para uma data específica. ( Estamos supondo aqui que o valor de cada ativo para a data especificada está disponível. Porém, se não estiver, faça algo sensato.)
  17. Calcular o ROI de um portfólio num intervalo de tempo. Há várias definições para ROI. Na definição usada aqui, o ROI é o "Internal Rate of Return" (IRR). Detalhes sobre o cálculo do IRR podem ser vistos aqui: http://invest-faq.com/articles/analy-int-rate-return.html. A forma de calcular isso é iterativa: supõe uma taxa de retorno (IRR) e calcule o "valor presente" do fluxo de fundos do portfólio com essa taxa para a data final em questão; e altere a taxa de retorno (para cima ou para baixo) até que o valor presente seja zero. Se não houver convergência em 10 iterações, pare dando erro.

Testes de aceitação

# TA3.1 adicao de um instrumento
   zerarObjetos
   criarCash id=if1 nome=cash descricao="Dinheiro em caixa"
   expect "id=if1,nome=cash,descricao=Dinheiro em caixa,valor=R$0,00" toString id=if1
   expect "{[id=if1,nome=cash,descricao=Dinheiro em caixa,valor=R$0,00]}" localizarInstrumento nome=cash 
# TA3.2 alteracao de um instrumento
   zerarObjetos
   criarCash id=if1 nome=cash descricao="Dinheiro em caixa"
   alterarCash id=if1 nome=caixa
   expect {} localizarInstrumento nome=cash
   expect "{[id=if1,nome=caixa,descricao=Dinheiro em caixa,valor=R$0,00]}" localizarInstrumento nome=caixa 
# TA3.3 remocao de um instrumento
   zerarObjetos
   expectError removerInstrumento id=if1
   criarCash id=if1 nome=cash descricao="Dinheiro em caixa"
   removerInstrumento id=if1
   expect {} localizarInstrumento nome=cash  
# TA3.4 adicao de um instrumento duplicado
   zerarObjetos
   criarCash id=if1 nome=cash descricao="Dinheiro em caixa"
   expectError criarCash id=if1 nome=caixa descricao="Grana em caixa"
 
# TA3.5 remocao de um instrumento inexistente
   zerarObjetos
   criarCash id=if1 nome=cash descricao="Dinheiro em caixa"
   expectError removerInstrumento id=if2
# TA3.6 remocao de um instrumento referenciado num portfolio
   zerarObjetos
   criarPortfolio id=p1 nome=portjacques descricao="Portfolio principal de Jacques" dono="Jacques Sauve" instituicao=Bradesco numeroDeConta=1234-5
   criarCash id=if1 nome=cash descricao="Dinheiro em caixa"
   # numa transacao, se nao houver data, a data de agora é usada
   transDeposito id=t1 instrumento=if1 portfolio=p1 quantidade=10000
   expectError removerInstrumento id=if1 
# TA3.7 criacao de acoes
   zerarObjetos
   criarAcoes id=if2 nome=acoesPetrobras descricao="Acoes da Petrobras" nomeDePregao=PETROBRAS tipoAcao=ON
   expect "{[id=if2,nome=acoesPetrobras,descricao=Acoes da Petrobras,nomeDePregao=PETROBRAS,tipoAcao=ON,valor=R$0,00]}" \
       localizarInstrumento nome=acoesPetrobras 
# TA3.8 criacao de titulo
   zerarObjetos
   criarTitulo id=if3 nome=tituloBR descricao="Titulo da Divida Publica Brasileira"
   expect "{[id=if3,nome=tituloBR,descricao=Titulo da Divida Publica Brasileira,valor=R$0,00]}" \
       localizarInstrumento nome=tituloBR

intro programa