Solução do enunciado da AAI 3.1, da matéria de APW.
As respostas do enunciado da AAI 3.1 de APW, visa esclarecer conceitos fundamentais da engenharia de software, como análise de viabilidade, requisitos de sistema e seus tipos. Para ilustrar esses conceitos, utilizaremos como estudo de caso um formulário do GitHub (apresentado na classe). Ao final, serão apresentadas sugestões para aprimorar o ensino e a aprendizagem desses temas.
Análise de Viabilidade
A análise de viabilidade é um estudo preliminar que busca avaliar se um projeto de software é tecnicamente, economicamente e operacionalmente viável. Em outras palavras, ela responde à pergunta: “Vale a pena desenvolver este software?”. Essa análise considera diversos fatores, como a disponibilidade de recursos (financeiros, humanos e tecnológicos), o tempo necessário para o desenvolvimento, os riscos envolvidos e o retorno esperado sobre o investimento.
Requisitos de Sistema
Os requisitos de sistema são descrições detalhadas das funcionalidades que um sistema de software deve oferecer para atender às necessidades dos usuários. Eles especificam o que o sistema deve fazer, como deve se comportar e quais são as suas limitações. Os requisitos de sistema são a base para o desenvolvimento do software e servem como referência para a equipe de desenvolvimento ao longo de todo o projeto.
Relação entre Análise de Viabilidade e Requisitos de Sistema
A análise de viabilidade e os requisitos de sistema estão intimamente relacionados. A análise de viabilidade utiliza os requisitos de sistema como um dos seus principais insumos para avaliar a viabilidade do projeto. Ao identificar os requisitos, é possível estimar o esforço necessário para o desenvolvimento do software, os custos envolvidos e os benefícios que ele trará.
Estudo de Caso: Formulário do GitHub
Requisitos de Usuário:
- Criar um novo repositório: O usuário deseja criar um novo espaço para armazenar seus projetos.
- Adicionar arquivos ao repositório: O usuário precisa adicionar arquivos ao repositório para iniciar ou atualizar seu projeto.
- Commitar alterações: O usuário deve salvar as alterações realizadas nos arquivos do repositório.
- Criar branches: O usuário pode criar diferentes versões do projeto para trabalhar em novas funcionalidades sem afetar a versão principal.
- Fazer merge de branches: O usuário pode combinar as alterações de diferentes branches em um único branch.
Requisitos de Sistema:
- Funcional:
- O sistema deve permitir a criação de novos repositórios com diferentes níveis de visibilidade (pública, privada).
- O sistema deve permitir o upload de arquivos em diversos formatos.
- O sistema deve registrar o histórico de alterações de cada arquivo (versão controle).
- O sistema deve permitir a criação e gestão de branches.
- O sistema deve permitir a realização de merge entre branches.
- Não Funcional:
- O sistema deve ter alta disponibilidade, garantindo o acesso contínuo aos dados.
- O sistema deve ter alta performance, permitindo o acesso rápido aos dados e funcionalidades.
- O sistema deve ser seguro, protegendo os dados dos usuários contra acessos não autorizados.
- A interface do usuário deve ser intuitiva e fácil de usar.
Conclusão e Sugestões para Melhoria
A análise de viabilidade e os requisitos de sistema são conceitos fundamentais para o sucesso de qualquer projeto de software. Ao compreender esses conceitos, os alunos estarão mais preparados para participar de projetos de desenvolvimento de software e tomar decisões mais informadas.
Sugestões para a professora:
- Atividades práticas: Propor atividades práticas para que os alunos identifiquem os requisitos de sistemas em diferentes aplicativos ou sistemas.
- Estudo de casos: Apresentar diversos estudos de caso de projetos de software que tiveram sucesso ou fracasso devido à análise de viabilidade ou aos requisitos de sistema.
- Ferramentas de modelagem: Apresentar ferramentas de modelagem de requisitos, como diagramas de casos de uso e especificações de requisitos.
Sugestões para os alunos:
- Leitura complementar: Pesquisar sobre os diferentes tipos de requisitos de sistema e suas características.
- Participação em projetos: Participar de projetos de desenvolvimento de software para aplicar os conhecimentos adquiridos.
- Discussão em grupo: Discutir com os colegas sobre os desafios da elicitação e validação de requisitos.



