Projeto
Requisitos de Software do Site.Requisitos de Software para o Site
1. Requisitos Funcionais (RF)
- RF01: O sistema deve permitir a navegação entre as páginas "Principal", "Sobre Nós", "Portfólio" e "Contato".
- RF02: O sistema deve utilizar o padrão MVC (Model-View-Controller) para a organização do código.
- RF03: As views devem ser carregadas através dos controladores, garantindo que não possam ser acessadas diretamente pela URL.
- RF04: O sistema deve implementar rotas dinâmicas que permitam o acesso a diferentes páginas com base em parâmetros passados na URL, como por exemplo
?route=home,?route=about, etc. - RF05: O sistema deve ser capaz de renderizar as páginas corretas de acordo com a rota solicitada.
- RF06: O autoloading de classes deve ser gerenciado pelo Composer, utilizando o padrão PSR-4.
- RF07: O sistema deve conter um controlador para cada página principal, sendo eles:
HomeControllerpara a página "Principal".AboutControllerpara a página "Sobre Nós".PortfolioControllerpara a página "Portfólio".ContactControllerpara a página "Contato".
- RF08: O sistema deve implementar classes para as views que encapsulam o conteúdo HTML e disponibilizam um método
render()para exibição. - RF09: O sistema deve permitir a adição de novas rotas no futuro, facilitando a escalabilidade.
2. Requisitos Não Funcionais (RNF)
- RNF01: O sistema deve ser implementado em PHP, utilizando a versão mais recente compatível com o servidor WAMP.
- RNF02: O sistema deve garantir a segurança básica de acesso às views, impedindo que elas sejam acessadas diretamente via URL (como
/src/View/HomeView.php). - RNF03: A estrutura de pastas deve seguir a seguinte organização:
src/Controller/: Controladores.src/View/: Arquivos de visualização encapsulados em classes.public/: Ponto de entrada da aplicação (index.php).routes.php: Arquivo de configuração de rotas.composer.json: Arquivo de configuração do Composer.
- RNF04: O sistema deve ser modular e seguir boas práticas de codificação, com separação clara de responsabilidades.
- RNF05: O carregamento de classes deve ser feito de forma automática via Composer, eliminando a necessidade de múltiplos
requireeincludemanuais.
3. Requisitos de Segurança
- RS01: As views devem ser encapsuladas dentro de classes, impedindo acesso direto via URL.
- RS02: O sistema deve tratar de forma apropriada requisições a rotas inexistentes, retornando uma página 404 personalizada.
Conclusão
Estes requisitos cobrem todos os aspectos do site desenvolvidos, garantindo uma visão clara do que o sistema deve fazer, como deve se comportar e como a estrutura deve ser organizada.
Diagrama de Classes
Este diagrama detalha as classes do sistema, seus atributos, métodos e como elas se relacionam.
Classes Principais:
RouterHomeController,AboutController,PortfolioController,ContactControllerHomeView,AboutView,PortfolioView,ContactView
Gerencia as rotas e direciona para os controladores corretos.
Controladores responsáveis por renderizar as views apropriadas.
Classes que encapsulam a lógica de renderização das páginas.
Relacionamentos:
- Os controladores têm uma associação com suas respectivas views.
- O
Routergerencia os controladores com base na rota solicitada.
Diagrama de Classes (Descrição):
-
Router (Classe de Roteamento)
- Métodos:
registerRoute($route, $callback)resolveRoute()
- Atributos:
routes (array)
- Métodos:
-
Controladores (HomeController, AboutController, PortfolioController, ContactController)
- Métodos:
show()
- Associação: Cada controlador possui uma instância da view correspondente (ex:
HomeView).
- Métodos:
-
Views (HomeView, AboutView, PortfolioView, ContactView)
- Métodos:
render()
- Métodos:
Relacionamentos:
- O
Routertem dependências com os controladores. - Os controladores têm uma relação de composição com as views, chamando seus métodos
render().
Diagrama de Casos de Uso
Este diagrama representará as funcionalidades que o sistema oferece e como os usuários interagem com ele.
Principais Atores:
- Usuário
- Interage com as páginas do site: "Página Principal", "Sobre Nós", "Portfólio", e "Contato".
Casos de Uso:
- Acessar a página inicial.
- Acessar a página "Sobre Nós".
- Acessar a página "Portfólio".
- Acessar a página "Contato".
Diagrama de Sequência
Este diagrama mostra o fluxo de interação entre os objetos durante a execução de um cenário específico.
Cenário: Acessar a Página Inicial
- O usuário faz uma requisição para acessar a página inicial.
- O
Routerverifica a rota e direciona para oHomeController. - O
HomeControllerinstancia oHomeView. - O
HomeControllerchama o métodorender()doHomeView. - A página inicial é exibida ao usuário.