Documento de Arquitetura Projeto Histórico de Alterações Data Versão Descrição Responsável 04/03/2009 1.0 Criação do documento Otávio Augusto 05/03/2009 1.0 Revisão do documento André Leitão 2-9 ÍNDICE 1. INTRODUÇÃO 4 2. REPRESENTAÇÃO DA ARQUITETURA 4 2.1 Camadas no SICOP 4 2.2 Camada de Apresentação 5 2.3 Camada de Negócio 5 2.4 Camada de Dados 5 2.5 Banco de Dados 5 3. VISÃO DE CASOS DE USO 3.1.1 4. 5 [RFCA001] Incluir 6 VISÃO LÓGICA 4.1 Visão Geral 4.1.1 4.1.2 4.1.3 5. 7 7 7 8 Camada de Apresentação Camada de Negócio Camada de persistência 8 VISÃO DE IMPLEMENTAÇÃO 8 5.1 Pacotes de Design Significativos do Ponto de Vista da Arquitetura 8 5.2 Persistência 8 5.3 Visão de Distribuição 9 3-9 1. Introdução Este documento tem como propósito descrever a arquitetura do Sistema SICOP, explicitando algumas tecnologias que são empregadas e a separação em camadas usada na aplicação. O SICOP será um sistema para dispositivos móveis, sendo implementado em camadas e usando as diversas tecnologias disponíveis na plataforma .NET. A seguir descreveremos como o sistema está organizado com relação às camadas, a fim de se ter uma melhor solução na arquitetura do sistema. 2. Representação da Arquitetura 2.1 Camadas no SICOP O SICOP será constituído por três camadas: camada de apresentação, camada de negócio e a camada de dados. Nosso sistema está organizado sobre este padrão e a partir desta divisão é permitido ter uma independência entre estas camadas. Abaixo segue uma breve descrição sobre cada uma. Camada de Apresentação: Permite que o usuário interaja com a aplicação. Nessa camada vamos expor a lógica de negócios para o usuário. Trata-se da interface com o usuário. Camada de Negócio: Camada responsável por manter as regras de negócio estabelecidas para o usuário. A implementação da lógica da aplicação fica nesta camada a qual irá ser exposta ao usuário. Camada de Dados: Camada responsável pelo armazenamento dos dados no banco de dados. Esta camada recebe requisições da camada de negócio para a execução de uma determinada ação e consta de classes que manipulam esses dados. Essencialmente, estas três camadas abstraem: dados e funcionalidades, apresentação e comportamento de uma aplicação. A arquitetura do nosso sistema pode ser resumida pela ilustração abaixo: Camada de Apresentação Camada de Negócio Camada de Dados Banco de Dados Figura 1 – Representação Arquitetura 4-9 2.2 Camada de Apresentação A camada de apresentação é implementada em geral através de telas desenvolvidas no Visual Studio 2008. Esta camada consta de um conjunto de classes que compõem as telas do sistema. As classes das camadas inferiores são expostas para a camada de apresentação através das fachadas. 2.3 Camada de Negócio A camada de negócio do SICOP fica entre a camada de apresentação e a camada de dados, possibilitando a correta separação entre esses dois níveis. Esta camada, por sua vez, apresenta as regras de negócio da aplicação, ou seja, quaisquer validações da aplicação estarão implementadas nesta camada. 2.4 Camada de Dados É composta de diversas classes, implementadas no padrão .NET que tem a finalidade de inserir os dados no banco de dados. 2.5 Banco de Dados Contém as tabelas do sistema onde são acessadas pela camada de persistência. O SGBD utilizado por nossa aplicação é o SQL Server 2000 Windows CE Edition 2.0. 3. Visão de Casos de Uso Esta seção apresenta as funcionalidades do cenário de cadastro, abordando de forma genérica, que serve para todos os casos de cadastro. Figura 2 – Tela Principal SICOP 5-9 A interface é composta pelos seguintes componentes como indicado na figura 2: Botão Inferior Esquerdo: Apresenta os cadastros da aplicação(Ocorrência, Laudo, Coleta Dados,etc). Botão Inferior Direito: Permite solicitar informações à Central (Consultar Ficha Policial, etc). 3.1.1 [RFCA001] Cadastrar Descrição: Esse caso de uso permite ao usuário inserir dados na aplicação e posteriormente enviá-los ao DP. Quatro telas compõem este caso de uso citado como Exemplo e esta é representada pela figura 3 abaixo. Figura 3 – Exemplo de Tela de Cadastro 3.1.1.1 Fluxo principal 1. O usuário acessa, atráves do menu da tela principal, a opção desejada, sendo apresentada a Tela como a da figura 3. 2. O usuário preenche os campos e clica no [x]; 3. A aplicação valida as informações necessárias e pergunta se o usuário deseja salvar os dados. Fluxo de erro [FE001] Campos inválidos A aplicação apresenta uma mensagem de erro ao usuário e solicita o correto preenchimento. 6-9 3.1.1.2 Fluxo Alternativo [FA001] Confirmar operação Se o usuário clicar em SIM quando lhe for perguntado se deseja salvar as informações, estas serão armazenadas em banco. [FA001] Cancelamento da operação Se o usuário clicar em NÃO quando lhe for perguntado se deseja salvar as informações, o usuário retornará para a Tela Inicial (figura 2) e nada acontece. 4. Visão Lógica As seções seguintes descrevem os elementos envolvidos na implementação do cenário de cadastros. 4.1 Visão Geral Uma visão das classes e seus relacionamentos podem ser vistos na figura a seguir. Figura 4 - Diagrama de classes do cenário de cadastros 4.1.1 Camada de Apresentação A camada de apresentação desse cenário é implementada através Visual Studio 2008. As telas são responsáveis por interagir com o usuário para apresentar e obter os dados nas operações de inserção, remoção, atualização e busca para a entidade de Ocorrência. 7-9 4.1.2 Camada de Negócio Nessa camada temos duas importantes classes, a Fachada e os cadastros (CadastroOcorrencia). A principal entidade deste cenário é a fachada, responsável por todas as operações do sistema. Ela é única, ou seja, usada por todos os casos de uso. A fachada é responsável pela execução de todas as ações do caso de uso, se comunicando diretamente com os cadastros. A classe Fachada utiliza os serviços dos cadastros (CadastroOcorrencia) para validar e atualizar os dados das Ocorrências. Após a atualização dos usuários a persistência da transação é delegada para a classe IRepositorioOcorrencia, da camada de dados (persistência). 4.1.3 Camada de persistência Para que a camada de persistência seja mais independente existe uma interface chamada IRepositorioOcorrencia. Desta forma, qualquer implementação de persistência (BDR, arquivos, etc.) pode existir sem a necessidade de modificações nas outras camadas. 5. Visão de Implementação 5.1 Pacotes de Design Significativos do Ponto de Vista da Arquitetura A divisão do sistema em pacotes se dá da seguinte forma: cada entidade possui um pacote com todas as classes relacionadas (entidade, negócio, repositórios). Alem destes um pacote chamado tela que conterá todas as classes de interface com o usuário. Uma visão geral dos pacotes e seus relacionamentos podem ser vistos na figura a seguir. Figura 5 – Divisão em Pacotes 5.2 Persistência Os dados serão armazenados em um banco de dados relacional SQL Server 2000 Windows CE Edition 2.0. Para isso, uma classe Repositorio será responsável por conter métodos com comandos de manipulação de dados. Cada entidade que precise de acesso ao banco terá sua classe Reposiorio. No caso da entidade Ocorrencia, o nome desta classe será RepositorioOcorrencia. 8-9 5.3 Visão de Distribuição Este tópico apresenta uma visão de como será realizada a comunicação entre a aplicação e a entidade que fornecerá e receberá os dados. Figura 6 – Visão de Distribuição 9-9