Você está na página 1de 9

Requisitos Não Funcionais

Critérios para análise arquitetural

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

4 Engenharia de Software Magazine – Requisitos não funcionais


E N g E N h A R I A D E R E q u I S I tO S

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

Edição 03 – Engenharia de Software Magazine 5


que o sistema deveria suportar. Exem- oferecido a um requisito não funcional. Embora haja um conjunto de propos-
plo destes requisitos são desempenho, Por exemplo, o uso de camadas permite tas, consideradas como complementa-
portabilidade, manutenibilidade e es- melhor separar as funcionalidades de res, concentraremos nossas atenções
calabilidade. A arquitetura de software um sistema, tornando-o mais modular num conjunto de requisitos diretamente
deveria oferecer suporte a tais requisi- e facilitando sua manutenção. associados a um sistema de software e,
tos. Isto resulta da associação existente Considere, por exemplo, o padrão IE- especificamente, à arquitetura de sof-
entre arquitetura de software e requi- EE-Std 830-1993 [IEEE 1993] que lista um tware. Este conjunto é baseado numa
sitos não funcionais. Importante obser- conjunto de 13 requisitos não funcionais classificação apresentada por Sommer-
var que cada estilo arquitetural (isto é, a serem considerados no documento de ville, onde é feita a distinção entre re-
a forma na qual o código do sistema é especificação de requisitos de software. quisitos externos, de produto, e de pro-
organizado) suporta requisitos não fun- Este padrão inclui, dentre outros, requi- cesso [Sommerville 2007].
cionais específicos. A estruturação de sitos de desempenho, confiabilidade, A Figura 2 é uma adaptação da propos-
um sistema é determinante no suporte portabilidade e segurança. ta de Sommerville, onde consideramos
os requisitos de produto, associados
à arquitetura de software, bem como
adicionamos outros não presentes na
proposta original de Sommerville. É im-
portante observar que a Figura 2 mostra
um subconjunto de requisitos não fun-
cionais, denominados de requisitos de
produtos os quais estão associados à
arquitetura de um sistema de softwa-
re. Note que a classificação apresentada
em [Sommerville 2007] ainda considera
os requisitos de processo e requisitos
externos como sendo requisitos não
funcionais, além dos requisitos de pro-
dutos. A figura exibe um conjunto de 7
requisitos não funcionais, sendo alguns
destes ainda decompostos.

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

6 Engenharia de Software Magazine – Requisitos não funcionais


E N g E N h A R I A D E R E q u I S I tO S

das técnicas de elicitação de requisi-


tos como entrevistas ou observação. A
coleta desses dados pode ocorrer, por
exemplo, verificando o log de ações do
usuário quando do uso de funcionali-
dade do sistema.
Esses requisitos de usabilidade po-
dem ser expressos através de métricas
de usabilidade, expressas em termos
de medidas de desempenho. Tyldesley
apresentou um conjunto de critérios
que podem ser utilizados durante a me-
dição de usabilidade [Tyldesley 1988]. A informações corretas estejam disponí- observação importante é que a neces-
seleção de critérios a serem usados para veis ao usuário no momento adequado, sidade de fazer reparo é minimizada à
mensurar a usabilidade depende do bem como encaminhar corretamente medida que a confiabilidade do siste-
tipo de sistema. Exemplos de critérios as instruções/comandos dos usuários a ma aumenta.
de medição de usabilidade são apresen- componentes apropriados do sistema. Similarmente a outros sistemas, os
tados na Figura 3. Note que a arquitetura de software do sistemas de software evoluem ao longo
A definição das metas de usabili- sistema tem um papel de suma impor- do tempo, seja com a adição de novas
dade através de métricas é parte do tância visto que tais informações serão funcionalidades ou com a modificação
processo denominado de engenharia trocadas entre componentes do sistema das existentes. Esta capacidade de evo-
de usabilidade. Neste processo, faz-se e entre estes e o usuário, fluindo através lução de um sistema de software é tam-
necessário também estabelecer os ní- de conectores da arquitetura. bém influenciada pela modularidade
veis desejados de usabilidade. Se, por do sistema. Note que se a arquitetura
exemplo, o usuário tem dificuldade Manutenibilidade do sistema não considerar sua possi-
em encontrar a funcionalidade dese- O termo manutenção de software é bilidade de evolução por meio da adi-
jada no sistema e, conseqüentemente, geralmente empregado quando nos ção e/ou alteração de funcionalidades
precisa recorrer à ajuda (Help) ou ex- referimos às modificações feitas após do sistema, modificações tornar-se-ão
pressa insatisfação, então se observa o sistema de software ter sido dispo- cada vez mais difíceis à medida que o
que dois dos critérios da Figura 3 são nibilizado para uso. Na realidade, o software evolui.
considerados. A quantidade de vezes termo manutenibilidade é um tanto De um modo geral, a manutenibili-
que essas ocorrências são observadas abrangente já que ele envolve tanto a dade é um dos requisitos mais relacio-
serve de indicador do suporte ofereci- atividade de reparo (de algum defeito nados com a arquitetura de um siste-
do à usabilidade pelo sistema. existente no sistema de software) quan- ma de software. A facilidade de fazer
A usabilidade é um dos atributos de to a atividade de alteração/evolução de alteração no sistema existente, seja
qualidade de um sistema e tem sido características existentes ou adição de adicionando ou modificando alguma
cada vez mais levada em consideração novas funcionalidades não previstas funcionalidade, depende muito da ar-
durante o desenvolvimento de softwa- ou capturadas no projeto inicial. quitetura deste. Se considerarmos a ne-
re. A usabilidade pode ser afetada pelos O reparo de um sistema de software cessidade de incrementar a quantidade
componentes funcional (ou de aplica- ocorre quando defeitos são detectados, de componentes encarregados do pro-
ção) e de apresentação de um sistema. fazendo-se necessária a correção deles. cessamento de uma ligação telefônica
Mesmo que esses componentes sejam A capacidade de efetuar um reparo de- (numa central telefônica) ou de transa-
bem projetados, ainda assim a usabi- pende do número de componentes do ções eletrônicas, então esta adição de
lidade poderá ficar comprometida se sistema. Por exemplo, se o sistema é novos componentes deve ocorrer sem a
a arquitetura do sistema não levar em monolítico, ou seja, constituído de um necessidade de modificar a arquitetura
consideração a facilidade de efetuar único componente, então tornar-se mais existente e ainda comprometer pouco
uma modificação. difícil efetuar o reparo se este sistema (ou nada) o desempenho atual do sis-
É importante acrescentar que a sim- de software é de grande porte. tema. Tal suporte à manutenibilidade
ples separação arquitetural entre com- No entanto, se o sistema de softwa- (seja para correção ou evolução do sis-
ponente de aplicação e apresentação re é modularizado, então tende a ser tema) deve ser facilmente acomodada
em sistemas interativos não é suficiente mais fácil analisar e reparar o existen- pela arquitetura de software.
para assegurar a usabilidade do mesmo. te. Podemos dizer que a modularida- É importante lembrar que uma arqui-
Assim, para determinar se uma arquite- de favorece a capacidade de fazer re- tetura de software define os componen-
tura de software satisfaz a aspectos de paro, permitindo que defeitos fiquem tes e conexões entre estes e, portanto,
usabilidade, torna-se necessário desen- confinados a poucos módulos, consi- também definem sob que circunstân-
volver cenários de uso do sistema. Em derando-se que se tenha a funcionali- cias componentes ou conectores po-
tais cenários, busca-se assegurar que dade adequadamente separada. Uma dem ser alterados. Dessa forma, uma

Edição 03 – Engenharia de Software Magazine 7


arquitetura ou estilo arquitetural de tradas (estímulos) enquanto o sistema um serviço como esperado pelo
um sistema de software deveria efeti- poderá continuar operando normal- usuário, ou seja, a freqüência na
vamente acomodar as modificações que mente em outras circunstâncias. Isto qual um comportamento inespe-
precisarem ser feitas tanto durante seu distingue o software do hardware já rado é provável de ser observado.
desenvolvimento quanto após o sistema que as falhas no segundo são de na- Por exemplo, se temos uma taxa
entrar em operação. tureza permanente. Vale ressaltar que de ocorrência de falha de 2/1.000,
falha é o que se observa pelos usuários isto significa que 2 falhas são pro-
Confiabilidade (externamente) enquanto que os defei- váveis de acontecerem para cada
Confiabilidade de software é a proba- tos, de origem interna ao sistema, são 1.000 unidades de tempo.
bilidade de o software não causar uma os motivadores das falhas. • Probabilidade de falha durante
falha num sistema durante um deter- Não é tão simples relacionar a dis- fase operacional – Esta é uma me-
minado período de tempo sob condi- ponibilidade de um sistema de sof- dida da probabilidade que o sis-
ções especificadas. A probabilidade é tware a uma falha existente, pois isto tema irá comporta-se de maneira
uma função da existência de defeitos depende de vários fatores, tais como inesperada quando em operação.
no software. Assim, os estímulos re- grau de corrupção de dados em de- Esta métrica é de suma importân-
cebidos por um sistema determinam corrência de algum defeito de softwa- cia em sistemas críticos que reque-
a existência ou não de algum defeito. re e tempo de re-inicialização, dentre rem uma operação contínua.
Em outras palavras, a confiabilidade outros. Exemplos de métricas utiliza- • Tempo médio até a ocorrência de
de software, geralmente definida em das para avaliar a confiabilidade de falha ou Mean Time To Failure
termos de comportamento estatístico, software compreendem: (MTTF) – Esta é uma medida do
é a probabilidade de que o software • Disponibilidade – Esta é uma me- tempo entre falhas observadas.
irá operar como desejado num inter- dida de quão disponível o siste- Note que esta métrica oferece um
valo de tempo conhecido. Também, a ma estaria para uso, isto é, quão indicativo de quanto tempo o siste-
confiabilidade caracteriza-se um atri- disponível o sistema estaria para ma permanecerá operacional antes
buto de qualidade de software o qual efetuar um serviço solicitado por que uma falha aconteça.
implica que um sistema executará algum usuário. Por exemplo, um Qualquer métrica que venha a ser uti-
suas funções como esperado. serviço de um sistema de softwa- lizada para avaliar a confiabilidade de
Os requisitos de confiabilidade com- re terá uma disponibilidade de um sistema dependerá da forma como
preendem restrições sobre o compor- 999/1.000. Isto significa que dentre o sistema é usado. Note ainda que o
tamento do sistema de software em um conjunto de 1.000 solicitações tempo é um fator considerado nas mé-
tempo de execução. Na realidade, de serviço, 999 deverão ser atendi- tricas. Ele é escolhido de acordo com a
tem-se um conjunto de métricas de das. Esta métrica é muito impor- aplicação. Há sistemas de software que
confiabilidade de software associadas tante em sistemas de telecomuni- operam de forma contínua, enquanto
a esses requisitos. Geralmente, as fa- cações, por exemplo. outros operam de maneira periódica.
lhas de um componente de software • Taxa de ocorrência de falha – Esta Por exemplo, considere um caixa ele-
são de natureza transitória, ou seja, é uma medida da freqüência na trônico de banco. Este é um exemplo de
elas ocorrem apenas para algumas en- qual o sistema falha em prover sistema que opera periodicamente, isto

8 Engenharia de Software Magazine – Requisitos não funcionais


E N g E N h A R I A D E R E q u I S I tO S

é, 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)

A medida de disponibilidade também


pode ser descrita em termo do MTTF e
é definida como:
MTTF
Disponibilidade = ______________x 100%
(MTTF + MTTR)
Se considerarmos essas medidas, é Figura 4. Fatores de desempenho
importante observar que se o MTTR é
reduzido, então a disponibilidade e con-
fiabilidade do sistema serão maiores.
Isto pode ser obtido arquiteturalmente
se a separação de interesses for consi-

Edição 03 – Engenharia de Software Magazine 9


poderia especificar que o sistema demos nos referir à memória prin- mente, podemos ter a portabilidade
deveria responder à solicitação cipal ou secundária. Por exemplo, de componentes e a portabilidade de
de um serviço específico de um a memória principal para executar sistemas. Esta última situação pode ser
usuário dentro de um intervalo uma aplicação poderia ser consi- vista como caso especial de reusabili-
de 2 segundos. Por exemplo, num derada como um requisito de de- dade. O reuso de software ocorre quan-
caixa eletrônico, após o usuário sempenho uma vez que ela está do todo o sistema de software é reutili-
inserir o cartão magnético do relacionada ao comportamento do zado, implementando-o em diferentes
banco no local apropriado (leitor sistema em tempo de execução. sistemas computacionais.
do equipamento), o sistema de- É importante observar que o desem- A portabilidade de um componente
veria exibir uma nova tela, num penho depende da interação existente ou sistema de software é proporcio-
intervalo de 2 segundos, reque- entre os componentes de um sistema nal à quantidade de esforço necessário
rendo que o usuário digite sua de software e, portanto, está muito as- para que funcione num novo ambiente.
senha de conta corrente. Numa sociado à arquitetura. Neste caso, os Se uma quantidade menor de esforço é
outra situação, o usuário pode mecanismos de comunicação utilizados exigida quando comparada ao trabalho
ser solicitado a digitar sua senha pelos componentes de um sistema têm de desenvolvimento, então o sistema é
e não o faz dentro de um perío- influência sobre o desempenho obti- dito portável.
do de 20 segundos, quando então do. Conforme vimos anteriormente, Dois aspectos relevantes na portabili-
um timeout ocorre e o sistema re- desempenho está relacionado a outros dade de programas são a transferência
torna à tela inicial. requisitos não funcionais. Por exemplo, e adaptação. A transferência é o movi-
• Requisitos de processamento a confiabilidade melhora com o uso de mento de componente (código de um
(throughput) – Estes requisitos componentes redundantes. Todavia, o programa e dados associados) de um
especificam a quantidade de da- desempenho fica bastante comprometi- ambiente para outro. A adaptação en-
dos que deveria ser processada do, implicando na sua redução. globa as modificações exigidas para fa-
num determinado período de zer com que o programa seja executado
tempo. Um exemplo seria exigir Portabilidade em um novo ambiente.
que o sistema de software possa Portabilidade pode ser definida como Cabe salientar que o ambiente no qual
processar, no mínimo, 6 transa- a facilidade na qual o software pode ser um sistema de software opera é normal-
ções por segundo. transferido de um sistema computacio- mente composto de hardware, sistema
• Requisitos de temporização – Este nal ou ambiente para outro. Em outras operacional, sistema de entrada e saída
tipo de requisito especifica quão palavras, o software é dito portável se (E/S), bem como a aplicação. Uma abor-
rapidamente o sistema deveria co- ele pode ser executado em ambientes dagem geral que poderia ser adotada
letar dados de entrada de sensores distintos. Note que o termo ambiente para obter um sistema portável tentaria
antes que outras leituras de dados pode referir-se tanto à plataforma de separar as partes do sistema que depen-
de entrada, feitas posteriormente, hardware quanto a um ambiente de dem do ambiente externo numa camada
sobrescrevam os dados anterio- software como, por exemplo, um siste- ou interface de portabilidade, conforme
res. Assim, por exemplo, poderia ma operacional específico. ilustrado na Figura 5.
ser especificado que o sistema De um modo geral, a portabilidade A interface de portabilidade mostrada
deveria efetuar leitura de dados refere-se à habilidade de executar um na figura acima poderia ser vislumbrada
5 vezes por segundo, como condi- sistema em diferentes plataformas. É e projetada como um conjunto de tipos
ção mínima. importante observar que à medida que de dados abstratos ou objetos, os quais
• Requisitos de espaço – Em alguns aumenta a razão de custos entre softwa- iriam encapsular os elementos não por-
casos, os requisitos de espaço po- re e hardware, a portabilidade torna-se táveis procurando esconder caracterís-
dem ser considerados. Aqui, po- cada vez mais importante. Adicional- ticas do software da aplicação. Assim,

Figura 5. Separação de partes de um sistema computacional

10 Engenharia de Software Magazine – Requisitos não funcionais


E N g E N h A R I A D E R E q u I S I tO S

quando o sistema de software muda de


hardware ou sistema operacional, ape-
nas a interface de portabilidade preci-
saria ser alterada. Alguns problemas de
portabilidade surgem, geralmente, de-
vido à adoção de diferentes convenções
para representar informação em arqui-
teturas de máquinas distintas, ou seja,
hardware diferente.

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.

Edição 03 – Engenharia de Software Magazine 11


software. Elementos de entrada desse
processo de elicitação compreendem
os principais influenciadores do sis-
tema, envolvendo projetista, arquite-
to e usuários.
Aliado a isso, a experiência do arquite-
to de software é de grande importância.
Como saída deste processo, tem-se um
conjunto de requisitos funcionais ofere-
cendo suporte às funcionalidades do sis-
Figura 7. Métodos usados para prover segurança tema e uma lista de requisitos não fun-
cionais oferecendo suporte à arquitetura
• Integridade – O foco na integridade • Partes envolvidas – isto pode de software. Cabe destacar que, quando
ocorre principalmente em sistemas envolver a autenticação de uma da análise de arquiteturas candidatas
comerciais, onde se busca assegu- parte envolvida (cliente) ou de para um sistema de software, um arqui-
rar que acesso ou atualizações não ambas as partes envolvidas teto ou engenheiro de software conside-
autorizadas ocorram. (cliente e sistema). ra os requisitos não funcionais como um
• Confidencialidade – A ênfase aqui 3. Tempo de acesso – Busca limitar o dos principais critérios para sua análise.
é a de não permitir a revelação não tempo de acesso ao sistema a fim de Por fim, é importante notar que uma
autorizada de informações. reduzir qualquer tipo de ameaça. cobertura completa de todos os possíveis
• Segurança operacional – Refere- 4. Auditoria de segurança – Objetiva requisitos não funcionais está fora do
se à fase considerada para o siste- habilitar pessoal autorizado a mo- objetivo deste artigo. Para tanto, o leitor
ma em uso. nitorar o sistema e, seletivamente, pode consultar o livro intitulado Non-
Note que para satisfazer ao requisito rastrear eventos importantes. Functional Requirements in Software
de qualidade não funcional de segu- 5. Alarme – Esta operação visa preve- Engineering de L. Chung, E. Yu, and J.
rança em um sistema de software, al- nir acessos, potencialmente suspei- Mylopoulos. Todavia, um subconjunto
guns métodos podem ser empregados. tos às informações vitais ou dados dos mais proeminentes requisitos não
Esses métodos podem ser vistos como do sistema, notificando esses aces- funcionais foi apresentado. Esses requi-
um refinamento da meta de prover sos à supervisão de segurança do sitos servem, via de regra, como critério
segurança a um sistema de software. sistema ou devidas autoridades. para análise arquitetural objetivando a
Como exemplos desses métodos, pode- A Figura 7 apresenta alguns métodos definição da arquitetura de software de
mos considerar: que podem ser empregados em requisi- um sistema.
1. Identificação – Identifica o nome tos de segurança.
do usuário, informando ao sistema É importante observar que a arquite-
quem está utilizando-o. tura de um sistema de software deve Dê seu feedback sobre esta edição! eu
Feedback

s

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

Acquisition Practices: Good and Bad


www.sei.cmu.edu/programs/acquisition-support/
conf/2003-presentations/oberndorf.pdf

SEI’s Software Architecture Technology Initiative


www.sei.cmu.edu/architecture/sat_init.html

The Software Architecture Portal


http://www.softwarearchitectureportal.org/

12 Engenharia de Software Magazine – Requisitos não funcionais

Você também pode gostar