Projeto
Requisitos de Software do CRUD de Artigos.Requisitos de Software para a Implementação do CRUD de Artigos
1. Requisitos Funcionais
- RF01: O sistema deve permitir a criação de novos artigos, com os campos: título, conteúdo, autor, e status (rascunho ou publicado).
- RF02: O sistema deve permitir a edição de artigos existentes, com a atualização dos campos título, conteúdo, autor, e status.
- RF03: O sistema deve permitir a visualização de todos os artigos cadastrados, exibindo o título, autor, data de criação, data de atualização e status.
- RF04: O sistema deve permitir a visualização de um artigo específico, mostrando todos os seus detalhes.
- RF05: O sistema deve permitir a deleção de artigos, removendo-os permanentemente do banco de dados.
- RF06: O sistema deve registrar a data e hora de criação e atualização de cada artigo automaticamente.
2. Requisitos Não Funcionais
- RNF01: O sistema deve seguir a arquitetura MVC (Model-View-Controller).
- RNF02: O sistema deve garantir a integridade dos dados durante as operações de criação, edição, e deleção.
- RNF03: O sistema deve utilizar o banco de dados MySQL para armazenar os artigos.
- RNF04: A interface do sistema deve ser responsiva e fácil de usar, utilizando HTML e Bootstrap.
- RNF05: O sistema deve suportar operações em tempo real, com atualizações visíveis ao usuário sem necessidade de recarregar a página (opcional, se implementado com AJAX).
Requisitos de Software para a Implementação do CRUD de Artigos com Foco em Segurança e LGPD
1. Requisitos Funcionais
- RF01: O sistema deve permitir a criação de novos artigos, com os campos: título, conteúdo, autor, e status (rascunho ou publicado). Todos os dados devem ser sanitizados antes de serem armazenados.
- RF02: O sistema deve permitir a edição de artigos existentes, garantindo que apenas dados sanitizados e validados sejam atualizados no banco de dados.
- RF03: O sistema deve permitir a visualização de todos os artigos cadastrados, exibindo o título, autor, data de criação, data de atualização e status, com todos os dados devidamente escapados para evitar vulnerabilidades como XSS.
- RF04: O sistema deve permitir a visualização de um artigo específico, mostrando todos os seus detalhes, garantindo a proteção dos dados contra qualquer forma de ataque.
- RF05: O sistema deve permitir a deleção de artigos, removendo-os permanentemente do banco de dados de forma segura.
- RF06: O sistema deve registrar a data e hora de criação e atualização de cada artigo automaticamente, com proteção contra falsificação de dados.
- RF07: O sistema deve implementar proteção contra CSRF (Cross-Site Request Forgery) em todos os formulários que manipulam dados sensíveis.
- RF08: O sistema deve garantir que as operações de criação, edição, visualização, e deleção sejam registradas em logs para monitoramento e auditoria, conforme as normas LGPD.
2. Requisitos Não Funcionais
- RNF01: O sistema deve seguir a arquitetura MVC (Model-View-Controller), garantindo uma separação clara de responsabilidades e facilitando a manutenção.
- RNF02: O sistema deve utilizar o banco de dados MySQL para armazenar os artigos, com uso de
prepared statementspara todas as interações com o banco de dados, conforme recomendações de segurança da ISO/IEC 27001. - RNF03: O sistema deve garantir a integridade dos dados durante as operações de criação, edição, e deleção, utilizando técnicas de validação e sanitização de dados de acordo com as diretrizes da ISO/IEC 27002.
- RNF04: A interface do sistema deve ser responsiva e fácil de usar, utilizando HTML e Bootstrap, com ênfase na acessibilidade e usabilidade conforme as normas da ISO 9241-110.
- RNF05: O sistema deve implementar mecanismos robustos de segurança para proteção de dados pessoais dos autores e usuários, conforme a Lei Geral de Proteção de Dados (LGPD) e as normas da ISO/IEC 27701.
- RNF06: O sistema deve utilizar hashing seguro para senhas dos autores/admins que acessam o sistema, utilizando funções como
password_hash()epassword_verify(), em conformidade com a ISO/IEC 29192. - RNF07: O sistema deve gerar e validar tokens CSRF para proteger formulários e requisições contra ataques de falsificação de solicitação intersite, em conformidade com a ISO/IEC 27034.
- RNF08: O sistema deve incluir cabeçalhos de segurança HTTP (
Content-Security-Policy,X-Content-Type-Options,X-Frame-Options, eX-XSS-Protection), para mitigar riscos de ataques, conforme orientações da ISO/IEC 27035.
3. Conformidade com a LGPD
- LGPD01: Os dados pessoais dos autores, como nomes e informações de contato, devem ser coletados, armazenados, e processados de acordo com os princípios de transparência, necessidade, e segurança, conforme estabelecido pela LGPD.
- LGPD02: O sistema deve fornecer mecanismos para que os autores possam gerenciar o consentimento de uso de seus dados, incluindo a possibilidade de atualização e remoção, conforme os direitos dos titulares garantidos pela LGPD.
- LGPD03: Todos os logs de auditoria devem ser mantidos de forma segura e disponibilizados apenas para administradores autorizados, garantindo a rastreabilidade e o cumprimento das normas de proteção de dados.
- LGPD04: Em caso de incidentes de segurança, o sistema deve estar preparado para notificar rapidamente os titulares dos dados e a Autoridade Nacional de Proteção de Dados (ANPD), conforme exigido pela LGPD.
Normas ISO, IEC e IEEE Utilizadas
- ISO/IEC 27001: Sistemas de gestão de segurança da informação, para proteger a integridade e a confidencialidade dos dados.
- ISO/IEC 27002: Código de prática para controles de segurança da informação, que define boas práticas para a gestão de segurança da informação.
- ISO/IEC 27701: Extensão da ISO/IEC 27001 para gestão da privacidade da informação, em conformidade com leis como a LGPD.
- ISO/IEC 29192: Criptografia leve para proteção de dados, aplicável para hashing seguro de senhas.
- ISO/IEC 27034: Segurança em aplicações, focada na implementação de mecanismos como CSRF tokens.
- ISO/IEC 27035: Gerenciamento de incidentes de segurança da informação, para monitoramento e notificação de incidentes.
- ISO 9241-110: Requisitos ergonômicos para trabalho com computadores, para garantir a usabilidade e acessibilidade do sistema.
Esses requisitos garantem que o sistema seja implementado com o mais alto nível de segurança e conformidade, protegendo os dados pessoais e respeitando as normas técnicas e regulamentações vigentes.
Diagramas UML
1. Diagrama de Classes
Mostra as classes principais (Artigo, ArtigoController, e ArtigoView) e suas relações. O ArtigoController manipula os dados através da classe Artigo e os exibe através da ArtigoView.
classDiagram
class Artigo {
+int id_artigo
+String titulo
+String conteudo
+String autor
+Date data_criacao
+Date data_atualizacao
+String status
+void save()
+void update()
+void delete()
+Artigo findById(int id)
+ListaArtigo findAll()
}
class ArtigoController {
+void create()
+Artigo read(int id)
+void update(int id)
+void delete(int id)
+ListaArtigo listAll()
}
class ArtigoView {
+void renderCreateForm()
+void renderEditForm(Artigo artigo)
+void renderList(ListaArtigo artigos)
+void renderArticle(Artigo artigo)
}
ArtigoController --> Artigo : manipula
ArtigoController --> ArtigoView : exibe
ArtigoView --> Artigo : exibe
2. Diagrama de Sequência
Criação de Artigo: Descreve o fluxo de criação de um artigo, desde a entrada de dados pelo usuário até o armazenamento no banco de dados e a exibição de uma confirmação ao usuário.
sequenceDiagram
participant User
participant ArtigoView
participant ArtigoController
participant Artigo
User ->> ArtigoView: Preenche formulário de artigo
ArtigoView ->> ArtigoController: Envia dados do formulário
ArtigoController ->> Artigo: Cria novo artigo
Artigo ->> Artigo: Salva no banco de dados
Artigo ->> ArtigoController: Retorna status de sucesso
ArtigoController ->> ArtigoView: Retorna confirmação ao usuário
ArtigoView ->> User: Exibe mensagem de sucesso
3. Diagrama de Sequência
Visualização de Artigos: Mostra o processo de requisição e exibição de uma lista de artigos, desde a solicitação do usuário até a apresentação dos dados na interface.
sequenceDiagram
participant User
participant ArtigoView
participant ArtigoController
participant Artigo
User ->> ArtigoView: Requisição para listar artigos
ArtigoView ->> ArtigoController: Solicita lista de artigos
ArtigoController ->> Artigo: Recupera lista de artigos
Artigo ->> ArtigoController: Retorna lista de artigos
ArtigoController ->> ArtigoView: Passa lista de artigos
ArtigoView ->> User: Exibe lista de artigos