Grupo CPDev
O PDS segue uma abordagem interativa incremental adaptada do Scrum. Cada interação tem uma definição de pronto estabelecida com objetivo de controlar a qualidade.
No contexto do projeto interdisciplinar o estudo de caso tem como objetivo desenvolver e implantar um site centralizador de ONGs, instituições e projetos sociais da cidade de São Paulo, com o propósito de divulgá-las a possíveis doadores e voluntários e criar, assim, um ELO entre ONGs e a sociedade. O diferencial do site é a maior flexibilidade do usuário para a escolha de Projetos sociais com a localização e segmento de sua preferência, podendo favoritar, analisar e avaliar cada projeto.
- RU01 - Compras - Registra e acompanha os processos de compras na organização, prevê a entrega programada de pedidos de compra
- RU02 - Recebimento - Registra, controla e informa sobre a entrada de mercadorias e integra as informações dos dados da nota fiscal de entrada com o estoque
- RU03 - Vendas – Registra e acompanha as vendas mantendo as informações integradas com o controle de estoque.
Cada requisito tem um identificador único de maneira que seja possível rastrear a necessidade do cliente com a implementação do software.
Identificador | Descrição | Prioridade |
---|---|---|
REQ01 – Cadastrar ONGs/Instituições/Projetos Sociais | Como – ONG/Instituição/Projeto Social; Eu quero – Cadastrar no site a ação social no site; De maneira que – Seja possível criar um perfil próprio para o projeto (Página de ONG). |
Alta |
REQ02 – Consultar ONGs/Instituições/Projetos Sociais | Como – Usuário; Eu quero – Consultar uma ONG´s/Instituições/Projetos Sociais; De maneira que – Seja possível obter informações sobre a ONG´s/Instituições/Projetos Sociais como descrição textual, sua história, imagens, informações de contato e de doação e mapa de localização. |
Alta |
REQ03 – Atualizar ONGs/Instituições/Projetos Sociais | Como – ONG´s/Instituições/Projetos Sociais; Eu quero – Alterar os dados da ONG/Instituição/Projeto Social; De maneira que – Seja possível atualizar informações de ONG/Instituição/Projeto Social, nos casos de mudanças de endereço, informações de contato, imagens e localização. |
Média |
REQ04 – Excluir ONGs/Instituições/Projetos Sociais | Como – ONG/Instituição/Projeto Social OU Moderador/Administrador; Eu quero (se ONG/Instituição/Projeto Social) – Excluir meu cadastro e minha Página de ONG do site; De maneira que – Meus dados não sejam mais divulgados pelo site. Eu quero (se Moderador/Administrador) – Excluir o cadastro de uma ONG e sua Página de ONG do site; De maneira que – As informações publicadas por aquele projeto não estivessem mais disponíveis no site. |
Média |
REQ05 – Cadastrar Usuário | Como – Usuário; Eu quero – Fazer um cadastro de usuário no site; De maneira que – Seja possível criar um perfil próprio para favoritar ONG’s por segmento e região, avaliar ONG’s e preencher formulários de ONG’s. |
Alta |
REQ06 – Consultar Usuário | Como – ONG/Instituição/Projeto Social OU Moderador/Administrador; Eu quero – Consultar o perfil de um usuário; De maneira que – Seja possível obter informações sobre o usuário e bloquear ou excluir o seu perfil, se necessário. |
Baixa |
REQ07 – Atualizar Usuário | Como – Usuário; Eu quero – Alterar seus dados de Usuário; De maneira que – Seja possível atualizar informações de usuário. |
Média |
REQ08 – Excluir Usuário | Como – Usuário OU Moderador/Administrador; Eu quero (se Usuário) – Excluir meu cadastro e meu perfil de usuário; De maneira que – Meus dados não sejam mais divulgados pelo site. Eu quero (se Moderador/Administrador) – Excluir o cadastro de um usuário do site; De maneira que – As informações daquele usuário não estiverem mais disponíveis no site. |
Média |
REQ09 – Login de ONGs e usuários | Como – Usuário; Eu quero – Fazer doações, pesquisar ações sociais, avaliar e comentar; De maneira que – Possa consultar e atualizar o perfil de usuário. |
Alta |
REQ10 – Fazer Avalições | Como – Usuário; Eu quero – Escrever comentários; De maneira que – Seja possível criar comentários em perfis de ONGs. |
Média |
REQ11 – Excluir Avaliações | Como – Moderador; Eu quero – Excluir comentários; De maneira que – Possa retirar comentários ofensivos e ou de conteúdo impróprio. |
Média |
O sprint será considerado concluido quando:
- Os casos de teste de aceitação forem executados e obtiverem 100% de satisfatorios. Os casos de teste (CT) são rastreáveis para os requisiitos (REQ). O elo de rastreabilidade é estabelecido pelo identificador do caso de teste.
- Depois de executado os casos de teste com 100% de satisfatorios o código deve ser armazenado no github (commit).
Identificador | Cenário de uso |
---|---|
REQ01CT01 | Dado que – A ONG/Instituição/Projeto social não está cadastrada; Quando – O usuário solicitar cadastro de ação social; Então – O sistema envia os dados cadastrais para a aprovação do moderador. Se as informações estiverem completas e os dados checarem, é enviada uma mensagem para a ONG indicando que o cadastro foi concluído com sucesso e a ONG recebe uma Página de ONG publicada no site. |
REQ01CT02 | Dado que – A ONG/Instituição/Projeto social não está cadastrada; Quando – O usuário solicitar cadastro de ação social; Então – O sistema envia os dados de cadastro para a aprovação do moderador. Se houver informações faltando e/ou incongruentes, o moderador veta o cadastro e a publicação da Página de ONG. É enviada uma mensagem, para a ONG, informando quais dados faltam e/ou apresentam incongruências e solicitando sua correção, para posterior avaliação. |
REQ02CT01 | Dado que – A ONG/Instituição/Projeto Social CNPJ 62.823.257/0001-09 está cadastrado; Quando - o usuário solicitar uma consulta pelo CNPJ; Então – o sistema apresenta os detalhes da ONG´s/Instituições/Projetos Sociais cadastrado |
REQ03CT01 | Dado que – A ONG/Instituição/Projeto Social; Quando – Quer alterar seus dados de ONG/Instituição/Projeto Social; Então – O sistema envia uma mensagem para a ONG/Instituição/Projeto Social comunicando que os dados foram atualizados |
REQ03CT02 | Dado que – A ONG/Instituição/Projeto Social; Quando – Quer alterar seus dados de ONG/Instituição/Projeto Social; Então – O sistema envia uma mensagem para a ONG/Instituição/Projeto Social comunicando que houve uma falha na tentativa de atualizar os dados cadastrais |
REQ04CT01 | Dado que – A ONG foi excluída do site; Quando (ONG/Instituição/Projeto Social) – tiver solicitado a remoção de cadastro; Então – A ONG é informada, via mensagem pop-up, de que seu cadastro foi excluído com sucesso; Quando (Moderador/Administrador) – tiver optado por remover o cadastro de uma ONG; Então – A ONG recebe uma notificação, via e-mail, de que seu cadastro foi removido do site, informando o devido motivo da exclusão |
REQ05CT01 | Dado que – O usuário não está cadastrado; Quando – O usuário solicitar o cadastro de doador; Então – O sistema envia uma mensagem de cadastro concluído com sucesso |
REQ05CT02 | Dado que – O usuário não está cadastrado; Quando – O usuário cadastrar o e-mail com o código de validação errado; Então - O sistema não validará o cadastro e mostrará uma mensagem de erro |
REQ06CT01 | Dado que – O usuário de nome João Pedro de Souza está cadastrado; Quando - o usuário solicitar uma consulta pelo NOME; Então – o sistema apresenta os detalhes do usuário cadastrado |
REQ07CT01 | Dado que – O usuário; Quando – Quer alterar seus dados de Usuário; Então – O sistema envia uma mensagem para o usuário comunicando que os dados foram atualizados. |
REQ07CT02 | Dado que – O usuário; Quando – Quer alterar seus dados de Usuario; Então – O sistema envia uma mensagem para o usuário comunicando que houve uma falha na tentativa de atualizar os dados cadastrais |
REQ08CT01 | Dado que – O usuário foi excluído do site; Quando (ONG/Instituição/Projeto Social) – tiver solicitado a remoção de cadastro; Então – O usuário recebe uma notificação, via e-mail, de que seu cadastro foi removido do site. |
REQ13CT01 | Dado que – o usuário está cadastrado; Quando - Inserir a opção de “Esqueci a senha”; Então- Sistema envia um link para redefinição de senha no e-mail cadastrado |
REQ14CT01 | Dado que – o usuário não esteja logado; Quando – For escrever um comentário; Então - O sistema irá pedir para que faça o login ou cadastre uma conta para comentar. |
O modelo de dominio (Larman, 2006 - classes conceituais ou classes de negócio) foi definido considerando as seguintes classes: A arquitetura segue uma abordagem orientada a serviços. Os serviços foram classificados em três tipos (ERL, 2007):
- 1. Serviços utilitários. Implementam funcionalidades comuns a vários tipos de aplicações, como, por exemplo: log, notificação, transformação de informações. Um exemplo de serviço utilitário é um serviço de conversão de moeda que poderá ser acessado para calcular a conversão de uma moeda (por exemplo, dólares) para outra (por exemplo, euros).
- 2. Serviços de entidade (serviços de negócios). Derivado de uma ou mais entidades de negócio (domínio), possuindo um alto grau de reutilização. Geralmente são serviços que fazem operações CRUD (Create, Read, Update e Delete).
- 3. Serviços de tarefa (coordenação de processos-workflow). Tipo de serviço mais específico que possui baixo grau de reuso. Consome outros serviços para atender seus consumidores. São serviços que suportam um processo de negócios amplo que geralmente envolve atividades e atores diferentes. Um exemplo de serviço de coordenação em uma empresa é um serviço de pedidos em que os pedidos são feitos, os produtos são aceitos e os pagamentos são efetuados. A visão lógica da arquitetura para API de Cliente é apresentada na figura abaixo. A visã lógica descreve como o código está organizado, as classes os pacotes e os relacionamentos entre eles.
A entidade Cliente foi identificada como um serviço (ERL, 2007 - serviço do tipo entidade) o contrado das operações de sistema (LARMAN, 2006, pag.140) foram definidas no diagrama abaixo.
classDiagram
class ClienteServicoI
<<interface>> ClienteServicoI
ClienteServicoI : +List<Cliente> consultaTodos()
ClienteServicoI : +Optional<<Cliente>> consultaPorCpf(String cpf)
ClienteServicoI : +Optional<<Cliente>> consultaPorId(Long id)
ClienteServicoI : +Optional<<Cliente>> save(Cliente c)
ClienteServicoI : +void delete (Long id)
ClienteServicoI : +Optional<<Cliente>> altera (Cliente c)
O diagrama de sequência descreve como os varios componentes arquiteturais colaboram para manipular uma operação de sistema (exemplo para operação consultaTodos())
sequenceDiagram
Usuario ->> APIClienteController: GET /api/v1/clientes
APIClienteController ->> ClienteServiceI: consultaTodos ( )
ClienteServiceI ->> ClienteRepository: findAll ( )
ClienteRepository -->> ClienteServiceI: List[]
ClienteServiceI-->> APIClienteController: List[]
APIClienteController -->> Usuario: JSon[]
Referencias
- [1] KRUCHTEN, Philippe. Reference: Title: Architectural blueprints—the “4+ 1” view model of software architecture. IEEE software, v. 12, n. 6, 1995.
- [2] RICHARDSON, Chris. Microservices patterns: with examples in Java. Simon and Schuster, 2018.
- [3] ERL, Thomas. SOA principles of service design (the Prentice Hall service-oriented computing series from Thomas Erl). Prentice Hall PTR, 2007.
- [4] LARMAN, Craig. Utilizando UML e padrões. 2aed., Porto Alegre: Bookman Editora, 2006 (pag. 147).