Segue abaixo o trabalho sobre Requisitos nao funcionais de Bruno Augusto Mariano e Thiago Crisante Dias.
REQUISITOS FUNCIONAIS E ARQUITETURA DE SOFTWARE
O projeto da arquitetura de software é uma etapa essencial no desenvolvimento de sistemas de software de grande porte e complexas.
O conjunto de requisitos de um sistema é definido durante as fases iniciais do processo de desenvolvimento; tal conjunto é visto como uma especificação do que deverá ser implementado. Os requisitos são descrições de como o sistema deveria se comportar.
Outro recurso que pode ser usado pelo projetista é construir cenários. Os cenários de uso oferecem suporte a requisitos específicos e visam tanto a licitação quanto a analisar os requisitos.
O desenvolvimento de um sistema de software inicia-se com um arquiteto de software, de posse de um conjunto de requisitos de sistema; nesse momento busca-se identificar qual estilo ou combinação oferece um suporte mais adequado a esses requisitos e, derivar uma arquitetura de software que atenda as características do sistema que se queira desenvolver.
A complexidade de um sistema de software é determinada tanto por requisitos funcionais (o que ele faz), quanto por requisitos não funcionais (como ele faz).
O Requisito Funcional de um sistema de software especifica uma função que o sistema ou componente deve ser capaz de realizar, estes são requisitos que definem o comportamento de um sistema, ou seja, processo ou transformação que os componentes de software ou hardware efetuam sobre as entradas para produzir saídas.
O Requisito não Funcional é aquele que descreve como o sistema fara uma determinada tarefa e não o qual tarefa ele fara. A avaliação dos requisitos não funcionais é feita em parte por meio de testes, enquanto que a outra parte é avaliada de um jeito subjetivo.
Tanto os requisitos funcionais quanto os não funcionais possuem grande importância no desenvolvimento de um sistema de software.
REQUISITOS NÃO FUNCIONAIS
São aqueles que não estão diretamente relacionados a funcionalidade de um sistema, chamados também de atributos de qualidade. Os requisitos não funcionais possuem um papel de grande importância durante o desenvolvimento de um sistema, podendo ser usados como critérios de seleção na escolha de alternativas de projeto. Os requisitos não funcionais abordam aspectos de qualidade importantes em sistemas de software, se tais requisitos não são levados em consideração, então o sistema de software poderá ser inconsistente e de baixa qualidade.
Ao desenvolver um novo sistema de software os projetistas apresentam um conjunto de atributos de qualidade ou requisitos não funcionais que o sistema deveria suportar. Exemplos destes requisitos podem ser o desempenho, portabilidade, manutenibilidade e escalabilidade.
A estruturação de um sistema é determinante no suporte oferecido a um requisito não funcional. o uso de camadas permite melhor separar as funcionalidades de um sistema, tornando-o mais modular e facilitando sua manutenção.
Na figura abaixo segue um exemplo de subconjunto de requisitos não funcionais denominados de requisitos de produtos os quais estão associados à arquitetura de um sistema de software. :
USABILIDADE
Usabilidade é um dos atributos de qualidade ou requisitos não funcionais de qualquer sistema interativo, no qual ocorre interação entre o sistema e seres humanos. A noção de usabilidade vem do fato que qualquer sistema projetado para ser utilizado pelas pessoas deveria ser fácil de aprender e fácil de usar.
Requisitos de usabilidade especificam tanto o nível de desempenho quanto a satisfação do usuário no uso do sistema. A usabilidade pode ser expressa em termos de:
Facilidade de Aprender – Associado ao tempo e esforço mínimo exigido para alcançar um determinado nível de desempenho no uso do sistema.
Facilidade de Uso – Relacionado à velocidade de execução de tarefas e à redução de erros no uso do sistema.
MANUTENIBILIDADE
O termo manutenção de software é geralmente empregado quando nos referimos às modificações feitas após o sistema de software ter sido disponibilizado para uso.
O termo manutenibilidade envolve tanto a atividade de reparo quanto a atividade de alteração/evolução de características existentes ou adição de novas funcionalidades não previstas ou capturadas no projeto inicial.
O reparo de um sistema de software ocorre quando defeitos são detectados, fazendo-se necessária a correção deles. Se o sistema é monolítico, ou seja, constituído de um único componente, então tornar-se mais difícil efetuar o reparo se este sistema de software é de grande porte. Se o sistema de software é modularizado, então tende a ser mais fácil analisar e reparar o existente.
CONFIABILIDADE
É a probabilidade de o software não causar uma falha num sistema durante um determinado período de tempo sob condições especificadas. A probabilidade é uma função da existência de defeitos no software. A confiabilidade de software, é a probabilidade de que o software irá operar como desejado num intervalo de tempo conhecido. Também, a confiabilidade caracteriza-se um atributo de qualidade de software o qual implica que um sistema executará suas funções como esperado. Geralmente, as falhas de um componente de software são de natureza transitória, elas ocorrem apenas para algumas entradas enquanto o sistema poderá continuar operando normalmente em outras circunstâncias. Isto distingue o software do hardware já que as falhas no segundo são de natureza permanente.
DESEMPENHO
Desempenho é um atributo de qualidade importante para sistemas de software.
Note que os requisitos de desempenho têm impacto mais global sobre o sistema e, por essa razão, estão entre os requisitos não funcionais mais importantes. Contudo, é geralmente difícil lidar com os requisitos de desempenho e com outros requisitos não funcionais, uma vez que eles estão em conflito.
O requisito de desempenho - Restringe a velocidade de operação de um sistema de software. Isto pode ser visto: num caixa eletrônico, após o usuário inserir o cartão magnético do banco no local apropriado (leitor do equipamento), o sistema deveria exibir uma nova tela, num intervalo de 2 segundos.
Requisitos de processamento - especificam a quantidade de dados que deveria ser processada. Um exemplo seria exigir que o sistema de software possa processar, no mínimo, 6 transações por segundo.
Requisitos de temporização – O sistema deveria coletar dados de entrada de sensores antes que outras leituras de dados de entrada. Assim, por exemplo, poderia efetuar leitura de dados 5 vezes por segundo, como condição mínima.
Requisitos de espaço – Os requisitos de espaço podem ser considerados. Aqui, podemos nos referir à memória principal ou secundária. Por exemplo, a memória principal para executar uma aplicação poderia ser considerada como um requisito de desempenho.
Neste caso, os mecanismos de comunicação utilizados pelos componentes de um sistema têm influência sobre o desempenho obtido.
REUSABILIDADE
Uma característica das engenharias é fazer uso de projetos existentes a fim de reutilizar componentes já desenvolvidos. Na indústria de automóveis, por exemplo, um motor é geralmente reutilizado de um modelo de carro para outro.
O reuso pode ser visto sob diferentes perspectivas
• Aplicação – Toda a aplicação poderia ser reutilizada.
• Subsistemas – Os principais subsistemas de uma aplicação poderiam ser reutilizados.
• Objetos ou módulos – Componentes de um sistema, englobando um conjunto de funções, podem ser reutilizados.
• Funções – Componentes de software que implementam uma única função (como uma função matemática) podem ser reutilizados.
É importante observar que podemos obter ganhos se reutilizarmos tanto projetos quanto arquiteturas. Isto minimiza esforços de desenvolvimento e requer menos alterações ou adaptações.
Assim, o requisito reusabilidade pode envolver a arquitetura. O que determinará quão fácil será conseguir componentes reutilizáveis
SEGURANÇA
Em um sistema de software, este requisito não funcional caracteriza a segurança de que acessos não autorizados ao sistema e dados associados não serão permitidos.
Dessa forma, a segurança é vista como a probabilidade de que a ameaça de algum tipo será repelida.
Exemplos de requisitos de segurança são:
• Apenas pessoas que tenham sido autenticadas por um componente de controle tipo de acesso apenas às pessoas autorizadas.
• As permissões de acesso ao sistema podem ser alteradas apenas pelo administrador de sistemas.
• Deve ser feito cópias em um local seguro, sendo preferencialmente num local diferente de onde se encontra o sistema.
• Todas as comunicações externas entre o servidor de dados do sistema e clientes devem ser criptografadas.
Os requisitos não funcionais de segurança envolvem diferentes aspectos.
Disponibilidade – Refere-se a assegurar o sistema contra qualquer interrupção de serviço.
Integridade – O foco na integridade ocorre principalmente em sistemas comerciais, onde se busca assegurar que acesso ou atualizações não autorizadas ocorram.
Confidencialidade – A ênfase aqui é a de não permitir a revelação não autorizada de informações.
Segurança operacional – Refere-se à fase considerada para o sistema em uso.
1. Identificação – Identifica o nome do usuário.
2. Autenticação – Visa assegurar que os usuários são, de fato, quem afirmam ser.
3. Tempo de acesso – Busca limitar o tempo de acesso ao sistema a fim de reduzir qualquer tipo de ameaça.
4. Auditoria de segurança – Objetiva habilitar pessoal autorizado a monitorar o sistema e, seletivamente,rastrear eventos importantes.
5. Alarme – Esta operação visa prevenir acessos, notificando esses acessos à supervisão de segurança.
CONCLUSÃO
Requisitos funcionais e não funcional é etapa fundamental no desenvolvimento de sistemas.
Cabe destacar que, quando da análise de arquiteturas candidatas para um sistema de software, um arquiteto ou engenheiro de software considera os requisitos não funcionais como um dos principais critérios para sua análise.
Nenhum comentário:
Postar um comentário