Escolar Documentos
Profissional Documentos
Cultura Documentos
A
organização das funcionalida- se tem um conjunto de funcionalidades
des de software de um sistema concebidas e implementadas a partir da
é explicitada através da ar- mesma arquitetura (de software) base.
quitetura de software. Há uma grande Entretanto, antecedendo a etapa de pro-
quantidade de estilos arquiteturais que jeto da arquitetura de software, há a ne-
trazem características peculiares a cada cessidade de fazer o levantamento dos
estilo, e estes, por sua vez, podem ser requisitos do sistema.
combinados gerando novos estilos. A De um modo geral, o conjunto de re-
Antonio Mendes da Silva Filho heterogeneidade de estilos arquitetu- quisitos de um sistema é definido du-
antoniom.silvafilho@gmail.com rais é salutar. Na verdade, isto ocorre rante as fases iniciais do processo de
Professor e consultor em área de tecnologia
devido à necessidade da arquitetura desenvolvimento. Tal conjunto de re-
da informação e comunicação com mais de
20 anos de experiência profissional, é autor prover suporte a um conjunto de requi- quisitos é visto como uma especifica-
dos livros Arquitetura de Software e Progra- sitos, às vezes conflitantes, dentre eles ção do que deveria ser implementado.
mando com XML, ambos pela Editora Campus/ os requisitos não funcionais, tema abor- Os requisitos são descrições de como o
Elsevier, tem mais de 30 artigos publicados em
dado neste artigo. sistema deveria se comportar, e contêm
eventos nacionais e internacionais, colunista
para Ciência e Tecnologia pela Revista Espaço informações do domínio da aplicação e
Acadêmico com mais de 60 artigos publicados, Requisitos Não Funcionais e Arqui- restrições sobre a operação do sistema.
tendo feito palestras em eventos nacionais e tetura de Software Durante a fase de elicitação de re-
no exterior. Foi Professor Visitante da Univer- O projeto da arquitetura de software é quisitos, um projetista ou arquiteto de
sity of Texas at Dallas e da University of Ottawa.
Formado em Engenharia Elétrica pela Uni- uma etapa essencial no desenvolvimen- software faz uso de sua experiência a
versidade de Pernambuco, com Mestrado em to de sistemas de software de grande fim levantar os requisitos, buscando
Engenharia Elétrica pela Universidade Federal porte e complexos. Dentro deste con- identificar características do sistema
da Paraíba (Campina Grande), Mestrado em texto, a arquitetura de software é fun- a ser desenvolvido. Além disso, infor-
Engenharia da Computação pela University of
Waterloo e Doutor em Ciência da Computação damental para o desenvolvimento de mações do domínio juntamente com
pela Univesidade Federal de Pernambuco. linhas de produção de software onde informações de estilos arquiteturais
existentes podem ser utilizados como Requisito não funcional – em en- de. Os requisitos não funcionais têm
fontes de dados que auxiliam na iden- genharia de sistemas de software, um um papel de suma importância duran-
tificação dos requisitos. requisito não funcional de software é te o desenvolvimento de um sistema,
Outro recurso que pode ser usado pelo aquele que descreve não o que o siste- podendo ser usados como critérios de
projetista é construir cenários. Os cená- ma fará, mas como ele fará. Assim, por seleção na escolha de alternativas de
rios de uso oferecem suporte a requisi- exemplo, têm-se requisitos de desempe- projeto, estilo arquitetural e forma de
tos específicos e visam tanto a elicitação nho, requisitos da interface externa do implementação. Desconsiderar ou não
quanto a análise de requisitos. Uma vez sistema, restrições de projeto e atributos considerar adequadamente tais requi-
que o conjunto de requisitos tenha sido da qualidade. A avaliação dos requisi- sitos é dispendioso, pois torna difícil
obtido, o projetista/arquiteto de softwa- tos não funcionais é feita, em parte, por a correção uma vez que o sistema te-
re estará em condições de iniciar o pro- meio de testes, enquanto que outra par- nha sido implementado. Suponha, por
jeto da arquitetura de software, confor- te é avaliada de maneira subjetiva. exemplo, que uma decisão tenha sido
me ilustrado na Figura 1. Este processo Perceba que tanto os requisitos funcio- feita de modularizar a arquitetura de
de levantamento e análise de requisitos, nais quanto os não funcionais possuem um sistema de modo a facilitar sua ma-
em conjunto com o uso de cenários, é importância no desenvolvimento de um nutenção e adição de novas funcionali-
usado no suporte da definição da arqui- sistema de software. Entretanto, os re- dades. Entretanto, modularizar um sis-
tetura de software, como é discutido ao quisitos não funcionais, também deno- tema adicionando uma camada a mais
longo do artigo. É importante observar minados de atributos de qualidade, têm pode comprometer um outro requisito,
que a etapa de projeto arquitetural pode um papel relevante durante o desenvol- o de desempenho. Portanto, faz-se ne-
precisar fazer uso de cenários de uso ou vimento de um sistema, atuando como cessário definir logo cedo quais requi-
mesmo uma re-análise a fim de refinar a critérios na seleção e/ou composição de sitos não funcionais serão priorizados
arquitetura a ser empregada no sistema uma arquitetura de software, dentre as na definição de uma arquitetura.
a ser desenvolvido. várias alternativas de projeto. Os requisitos não funcionais abordam
O processo de desenvolvimento basea- Cabe salientar que à medida que os aspectos de qualidade importantes em
do na arquitetura considera a arquitetu- sistemas tornam-se maiores e mais sistemas de software. Se tais requisi-
ra de software como fator orientador do complexos, o suporte a requisitos não tos não são levados em consideração,
processo. Isto acarreta em colocarmos funcionais depende cada vez mais de então o sistema de software poderá
os requisitos não funcionais associados decisões tomadas no projeto da arquite- ser inconsistente e de baixa qualidade,
à arquitetura como principais aspectos tura de software. Trata-se de uma visão conforme discutido acima. Para tan-
do processo de desenvolvimento. Note compartilhada pelos profissionais da to, quanto mais cedo forem definidos
que o desenvolvimento de um sistema área e, especificamente, pela comunida- os critérios arquiteturais, mais cedo o
de software centrado na arquitetura de de arquitetura de software. projetista pode identificar o estilo, ou
inicia-se com um arquiteto de software, combinação de estilos, mais apropria-
de posse de um conjunto de requisitos Requisitos Não Funcionais do ao sistema considerado.
do sistema. Nesse momento, busca-se Requisitos não funcionais são aqueles Ao desenvolver um novo sistema de
identificar qual estilo ou combinação que não estão diretamente relaciona- software bem como sua arquitetura, os
destes oferece suporte mais adequado a dos à funcionalidade de um sistema. O projetistas ou engenheiros de software
esses requisitos e, portanto, derivar uma termo requisitos não funcionais é tam- apresentam um conjunto de atributos de
arquitetura de software que atenda às ca- bém chamado de atributos de qualida- qualidade ou requisitos não funcionais
racterísticas do sistema a ser desenvolvido.
Vale ressaltar que a complexidade de um
sistema de software é determinada tanto
por seus requisitos funcionais – o que ele
faz – quanto requisitos não funcionais –
como ele faz. Tal distinção é baseada nas
seguintes definições [Thayer 1990]:
Requisito funcional – um requisito de
sistema de software que especifica uma
função que o sistema ou componente
deve ser capaz de realizar. Estes são re-
quisitos de software que definem o com-
portamento do sistema, ou seja, o proces-
so ou transformação que componentes
de software ou hardware efetuam sobre
as entradas para gerar as saídas. Esses
requisitos capturam as funcionalidade
sob o ponto de vista do usuário. Figura 1. Elicitação de requisitos
Usabilidade
Usabilidade é um dos atributos de qua-
lidade ou requisitos não funcionais de
qualquer sistema interativo, ou seja, no
qual ocorre interação entre o sistema e
seres humanos. A noção de usabilidade
vem do fato que qualquer sistema pro-
jetado para ser utilizado pelas pessoas
deveria ser fácil de aprender e fácil de
usar, tornando assim fácil e agradável a
realização de qualquer tarefa.
Requisitos de usabilidade especificam
tanto o nível de desempenho quanto a
satisfação do usuário no uso do sistema.
Dessa forma, a usabilidade pode ser ex-
Figura 2. Tipos de requisitos não funcionais pressa 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.
Os requisitos de usabilidade são cole-
tados juntamente com outros requisitos
Figura 3. Critérios de medição de usabilidade (de dados e funcionais) usando algumas
é, um caixa eletrônico encontra-se par- derada durante o projeto. Perceba que sempenho e com outros requisitos não
te do tempo em operação, enquanto no quão menor é o tempo para proceder o funcionais uma vez que eles estão em
restante do tempo fica ocioso (embora reparo da falha, mais rapidamente o sis- conflito, conforme discutido acima.
disponível para uso por algum clien- tema voltará a ficar operacional e, por- No início da atividade de projeto da
te do banco). No exemplo de um caixa tanto, a ficar disponível. Este atributo arquitetura de software torna-se ne-
eletrônico de banco, uma unidade de de projeto leva a uma maior integração, cessário definir quais requisitos não
tempo mais adequada é o número de bem como maior facilidade nas modifi- funcionais serão priorizados, dada a
transações. Assim, um exemplo de fa- cações necessárias no sistema. possibilidade de conflito entre eles.
lha seria a perda de dados entrados por Note que adicionar componentes re- Adicionalmente, desempenho é im-
um usuário. Neste caso, a especificação dundantes a um sistema de software portante porque afeta a usabilidade de
de confiabilidade poderia ser a ocorrên- implicará numa maior confiabilidade. um sistema. Se um sistema de softwa-
cia de uma falha dessa natureza a cada Esta redundância é acrescentada na re é lento, ele certamente reduz a pro-
10.000 transações. forma de verificações adicionais rea- dutividade de seus usuários ao ponto
A arquitetura de software influencia- lizadas a fim de detectar erros antes de não atender às suas necessidades.
rá na confiabilidade de um sistema. O que eles ocasionem falhas no sistema. Também, se o sistema de software re-
tempo médio até a ocorrência de uma Todavia, o uso de componentes re- quer muito espaço em disco para ar-
falha ou MTTF poderá ser reduzido se dundantes acarreta numa redução de mazenamento de informações, pode
houver replicação de componentes críti- desempenho do sistema como discuti- ser oneroso utilizá-lo. Por exemplo, se
cos. A perda de um desses componentes do a seguir. um sistema de software exige muita
incorre em falha. memória para ser executado, ele pode
Uma forma de evitar isto ou con- Desempenho afetar outras aplicações que são execu-
tornar a perda de um componente é Desempenho é um atributo de qua- tadas no mesmo ambiente. Além disso,
provendo uma arquitetura tolerante lidade importante para sistemas de ele pode executar tão lentamente que o
a falha onde uma réplica de um com- software. Considere, por exemplo, um sistema operacional tenta balancear o
ponente assume o processamento do sistema de uma administradora de uso de memória entre as diversas apli-
componente com falha, evitando as- cartões de crédito. Em tal sistema, um cações. De um modo geral, o requisito
sim qualquer interrupção na opera- projetista ou engenheiro de software de desempenho pode ser decomposto
ção de um sistema. Outra alternativa poderia considerar os requisitos de em termos de tempo e espaço, como
é degradar o desempenho do sistema desempenho para obter uma resposta ilustrado na Figura 4.
sobrecarregando um componente com de tempo para autorização de compras O requisito de desempenho restringe
um número maior de requisições do por cartão. a velocidade de operação de um siste-
que ele foi projetado. Dessa forma, a Note que os requisitos de desempe- ma de software. Isto pode ser visto em
qualidade do sistema é degradada, nho têm impacto mais global sobre termos de:
mas ainda assim o sistema continua o sistema e, por essa razão, estão en- • Requisitos de resposta – Especi-
a funcionar (embora de modo precá- tre os requisitos não funcionais mais ficam o tempo de resposta de um
rio até que uma ação corretiva seja importantes. Contudo, é geralmente sistema de software aceitável para
tomada). A medida de confiabilidade difícil lidar com os requisitos de de- usuários. Neste caso, um projetista
pode ser definida em termos do tempo
médio entre a ocorrência de falhas, ou
Mean Time Between Failure (MTBF).
Esta medida é dada por:
MTBF = MTTF + MTTR (MTTR ou Mean
Time To Repair é o tempo médio de
reparo)
Reusabilidade
Uma característica das engenharias
é fazer uso de projetos existentes a fim
de reutilizar componentes já desenvol-
vidos, objetivando minimizar o esforço
Figura 6. Tipos de segurança
em novos projetos. Dessa forma, com-
ponentes que já tenham sido desenvol- Dois tipos de reuso que estamos mais Adicionalmente, à medida que os sis-
vidos e testados podem ser reutiliza- interessados são o reuso de subsistemas temas de software tornam-se distribu-
dos. Considere os elevados níveis de e objetos ou componentes, que chama- ídos e conectados a redes externas, os
reusabilidade que encontramos tanto remos, simplesmente, de reuso de com- requisitos de segurança vão se tornando
na indústria de automóveis quanto de ponentes. Este tipo de reuso não envolve cada vez mais importantes. Exemplos
aparelhos eletrônicos. Na indústria de apenas o código, mas também engloba a de requisitos de segurança são:
automóveis, por exemplo, um motor é arquitetura e projeto associados. • Apenas pessoas que tenham sido
geralmente reutilizado de um modelo É importante observar que podemos autenticadas por um componente
de carro para outro. obter ganhos se reutilizarmos tanto de controle acesso e autenticação
Em Engenharia de Software, à medi- projetos quanto arquiteturas. Isto mi- poderão visualizar informações
da que aumenta a pressão para reduzir nimiza esforços de desenvolvimento e dado que a confidencialidade per-
custos de desenvolvimento e manuten- requer menos alterações ou adaptações. mite esse tipo de acesso apenas às
ção de sistemas de software, bem como Na realidade, quando se tem em mente pessoas autorizadas.
pela obtenção de sistemas com quali- que é necessário prover suporte à fácil • As permissões de acesso ao siste-
dade elevada, torna-se necessário con- modificação, indiretamente, obtemos ma podem ser alteradas apenas
siderar a reusabilidade como requisito componentes reutilizáveis. pelo administrador de sistemas.
não funcional no desenvolvimento de Assim, o requisito reusabilidade pode • Deve ser feito cópias (backup) de to-
novos sistemas. envolver a arquitetura de um sistema de dos os dados do sistema a cada 24
O reuso pode ser visto sob diferentes software ou componentes deste. O que horas e estas cópias devem ser guar-
perspectivas. Ele pode ser orientado determinará quão fácil será conseguir dadas em um local seguro, sendo
a componentes, orientado a processos componentes reutilizáveis é a inter- preferencialmente num local dife-
ou orientado ao conhecimento espe- dependência ou acoplamento entre os rente de onde se encontra o sistema.
cífico de um domínio. Note que ainda componentes. Por exemplo, uma biblio- • Todas as comunicações externas en-
poderíamos considerar o reuso de re- teca de componentes que oferece um tre o servidor de dados do sistema e
quisitos. Entretanto, aqui, iremos con- conjunto de funcionalidades já imple- clientes devem ser criptografadas.
centrar nossa atenção no reuso orien- mentadas e testadas oferece ao usuário Requisitos de segurança são essenciais
tado a componentes. Exemplos desse (programador) um recurso valioso, já em sistemas críticos, tais como sistemas
tipo de reuso são: que basta incorporar esses componentes de controle de vôo de aeronaves, uma
• Aplicação – Toda a aplicação pode- ao seu código e acessar suas funcionali- vez que é impossível confiar num siste-
ria ser reutilizada. dades através de sua interface. ma deste tipo se ele não for seguro. As-
• Subsistemas – Os principais subsis- sim, pode-se dizer que todos os sistemas
temas de uma aplicação poderiam Segurança críticos possuem associados a eles re-
ser reutilizados. Em um sistema de software, este requi- quisitos de segurança. Os requisitos não
• Objetos ou módulos – Componen- sito não funcional caracteriza a segurança funcionais de segurança envolvem dife-
tes de um sistema, englobando de que acessos não autorizados ao siste- rentes aspectos. A Figura 6 mostra tipos
um conjunto de funções, podem ma e dados associados não serão permiti- de segurança que podemos encontrar.
ser reutilizados. dos. Portanto, é assegurada a integridade Também é importante considerar as dife-
• Funções – Componentes de software do sistema quanto a ataques intencionais rentes ênfases encontradas para segurança:
que implementam uma única fun- ou acidentes. Dessa forma, a segurança é • Disponibilidade – Refere-se a as-
ção (como uma função matemática) vista como a probabilidade de que a ame- segurar o sistema contra qualquer
podem ser reutilizados. aça de algum tipo será repelida. interrupção de serviço.
s
Dê
2. Autenticação – Visa assegurar que levar em consideração esses aspectos A Engenharia de Software Magazine
sobre e
os usuários são, de fato, quem afir- a fim de atender aos requisitos de se- tem que ser feita ao seu gosto.
Para isso, precisamos saber o que você,
s
ta
mam ser. Para tanto, fazem um tes- gurança. Entretanto, o tipo de sistema d i çã o e
leitor, acha da revista!
te de identidade. Este método en- determinará quais fatores precisarão
volve alguns aspectos, tais como: ser levados em conta. Assim, pode- Dê seu voto sobre este artigo, através do link:
• Tipo de protocolo usado – isto rá haver a inserção de componentes www.devmedia.com.br/esmag/feedback
requer operação de senha. específicos de segurança bem como
• Quantidade de autenticações a conexão destes com outros compo-
– pode requerer uma única nentes funcionais. Links
senha ou múltiplas senhas ou
Non-Functional Requirements in
procedimentos. Por exemplo, Conclusão Software Engineering
alguns bancos já fazem uso de A elicitação de requisitos funcionais http://www.utdallas.edu/~chung/BOOK/book.html
múltiplas senhas durante ope- e não funcionais é etapa fundamental Are All Quality Goals Created Equal?
ração de autenticação. no desenvolvimento de sistemas de Functional vs. Non-Functional
www.sei.cmu.edu/architecture/saturn/2005/
quality_steven.pdf