Cenários têm vindo a ser usados ao longo do tempo em diversas áreas, nomeadamente em interacção homem computador, engenharia de requisitos, desenho orientado a objectos, planejamento estratégico, etc, uma vez que facilitam bastante a criação e utilização de casos de uso, de uma forma simples e flexível. A utilização desta aproximação em engenharia de requisitos é baseada na hipótese de que a integração desta técnica permite melhorar o processo de especificação de requisitos através de um maior envolvimento dos utilizadores no mesmo. Esta técnica descreve os requisitos numa linguagem fácil de entender e validar para todas as pessoas relacionadas com o projecto, motivando-as a discutir e participar, obtendo assim um maior feedback sobre o que se está a fazer.
Mais recentemente, a técnica tem sido utilizada no desenho e desenvolvimento de sistemas, contudo, poucos métodos emergiram para guiar a prática de análise e validação de requisitos baseada em cenários.
Definição do conceito Esta secção apresenta duas das definições encontradas para o conceito de cenário:
Um cenário é um conjunto ordenado de interacção entre parceiros, normalmente entre um sistema e um conjunto de actores externos ao sistema. Pode consistir numa sequência concreta de passos de interacção (instância de cenário) ou num possível conjunto de passos de interacção (cenário tipo). (Jacobson, 1992)
Jacobson associou o termo use case (caso de uso) a cenários tipo e mais tarde introduziu essa noção no UML. Na sua terminologia, os cenários estão sempre ao nível da instância.
Um cenário é uma descrição que contém actores, a informação por trás deles, assumpções sobre o seu ambiente, os seus objectivos e sequências de acções e eventos. Pode incluir também os obstáculos, contingências e êxitos dos actores. Em alguns sistemas, os cenários podem omitir um dos elementos ou expressá-lo de forma simples ou implícita. (Rosson and Carroll, 2001)
É uma história partilhada entre vários colaboradores no desenho do sistema. Por exemplo, os clientes ou gestores de projecto descrevem as suas visões em episódios. Utilizadores conversam sobre os problemas que enfrentam à medida que acontecem. Os designers guardam a análise racional de um sistema na forma de um exemplo ou desenvolvem modelos para ilustrar o que os utilizadores deverão fazer. Escritores técnicos explicam a tarefa dos utilizadores num manual e escrevem-na como uma história. Estes são exemplos de cenários partilhados entre parceiros e distribuídos ao longo do ciclo de desenho de um sistema.
Os cenários podem ser expressos de várias formas e formatos. Por exemplo, podem ser simples narrativas textuais, storyboards, modelos em vídeo, ou ainda protótipos construídos de várias maneiras. Adicionalmente, podem estar numa notação formal, semi-formal ou informal. Um exemplo típico de um cenário informal é uma história, um tipo de cenário usado frequentemente para ter uma visão das tarefas do utilizador na interacção homem-computador.
Principais vantagens do uso de cenários em Engenharia de Requisitos A utilização de cenários traz consigo algumas vantagens como:
Tem em conta o ponto de vista do utilizador
O cenário vê sempre o sistema do ponto de vista de, no mínimo, um dos seus utilizadores. Isto é uma vantagem fundamental quando se está a validar a adequação de requisitos. Cenários dão aos utilizadores a sensação do que irão ter, enquanto que as técnicas clássicas como a listagem de requisitos narrados, diagramas entidade-relação ou diagramas de classes orientados a objectos por vezes não o fazem.
Especificações parciais
Cenários são um meio natural para escrever especificações parciais. Todos os cenários capturam uma sequência de interacções utilizador-sistema que representam uma transição no sistema, ou uma função no sistema, sempre na perspectiva do utilizador. Uma particularidade forte nos cenários recai precisamente no facto de que estes permitem a decomposição do sistema em funções, numa perspectiva do utilizador, em que cada uma das funções pode ser tratada de forma separada - uma aplicação clássica do princípio de separação de interesses / objectivos / preocupações.
Fácil de compreender
Cenários simplificam a elicitação e validação de requisitos, uma vez que a noção de interacção utilizador-sistema mostra-se como uma forma natural de compreender e discutir os requisitos, quer para os utilizadores, quer para os engenheiros. Os cenários herdam o conforto e a facilidade do uso da linguagem natural em especificações, ao mesmo tempo que evitam muitos dos problemas com especificações puramente narradas.
Ciclos de feedback curtos
A combinação da habilidade de tratar cada função do utilizador separadamente num cenário e a maneira orientada ao utilizador de representar os requisitos no cenário permite um ciclo de feedback entre o utilizador e o engenheiro de requisitos bastante pequeno.
Servir de base para os testes do sistema
As sequências de interacção capturadas nos cenários servem também como uma base ideal para definir testes ao sistema. Casos de teste podem ser derivados directamente a partir de cenários, melhorando assim a habilidade de verificação dos requisitos.
Como a técnica de cenários pode afectar a qualidade dos requisitos A noção clássica de qualidade dos requisitos foca-se essencialmente nos seguintes aspectos: adequação, desambiguidade, completude, consistência, habilidade de verificação, habilidade de modificação e habilidade de rastreio (IEEE 1993). Na prática, no entanto, muitas especificações de requisitos não cumprem estas qualidades. Poder-se-ia dizer que isto seria uma questão de aplicar os métodos e processos certos, e de melhorar os processos de recolha de requisitos, até estes obterem a qualidade desejada. Contudo, a experiência revela que não é assim tão simples resolver o problema. A qualidade em si faz parte do próprio problema.
É necessário avançar no paradigma da qualidade de requisitos e arranjar técnicas de engenharia de requisitos adequadas, de forma a ir de encontro ao conjunto de qualidades em cima mencionadas. Usar cenários na especificação de requisitos tem um forte impacto positivo na qualidade de requisitos, nomeadamente ao nível da adequação, completude parcial, habilidade de modificação e habilidade de verificação - desde que os cenários sejam usados de forma adequada.
Os cenários situam os requisitos no ambiente onde o sistema irá ser usado e descrevem-nos de uma forma orientada aos utilizadores. Com a decomposição em funções do utilizador e a facilidade de compreensão, temos os ingredientes que nos permitem uma validação contínua de requisitos das intenções do cliente, levando assim a especificações mais adequadas.
Cada cenário (ou grupo de cenários relacionados) representam uma especificação parcial que é coerente, numa perspectiva do utilizador. Assim, completude parcial está naturalmente inerente com o suporte das especificações parciais.
O uso de cenários leva-nos a uma decomposição de funcionalidades, orientadas ao utilizador, sendo assim mais fácil de lidar com a evolução dos requisitos, melhorando a habilidade de modificação.
Uma vez que a partir de cenários podem-se derivar casos de teste, de uma forma natural e directa, os cenários são também verificáveis.
A utilização de cenários permite ter ciclos de tempo entre a escrita e a validação de requisitos mais pequenos. Permite ainda obter casos de teste derivados dos cenários mais cedo. Estas características, juntamente com a orientação ao utilizador dos cenários, proporcionam fortes capacidades para detectar e resolver ambiguidades. Contudo, os cenários não produzem especificações que à partida sejam não ambíguas (uma vez que usam linguagem natural), mas suportam processos com ciclos curtos de feedback. Este intervalo de tempo reduzido é um meio natural para detectar e resolver ambiguidades na comunicação entre humanos.
Consistência não é contemplada nos cenários. Pelo contrário, ter uma visão de cada cenário como uma entidade separada pode conduzir a problemas sérios de inconsistência. Mas nem todos os requisitos devem ser descritos usando cenários. Por exemplo, a persistência de dados ou comportamentos dependentes de estados são mais fáceis de especificar usando modelos de objectos ou autómatos de estado. Assim, em aproximações baseadas em cenários, é necessário um esforço explícito para garantir a consistência. Uma aproximação sistemática na estruturação do conjunto dos cenários é um passo bastante importante nestes casos.
Métodos para representação de cenários Como foi dito anteriormente, a qualidade dos requisitos pode beneficiar consideravelmente através do uso de cenários. No entanto, essa melhoria não é obtida automaticamente, depende fortemente da forma como os cenários são usados e representados. A especificação pode cair num conjunto de cenários extremamente extenso, ou mal escrito, ou ainda mal estruturado, acabando por piorar este processo, em vez de o melhorar.
Apesar da atenção crescente que os cenários têm atraído em engenharia de requisitos, poucos métodos emergiram para guiar a prática de análise e validação de requisitos baseados em cenários.
De seguida, são apresentados dois métodos de forma resumida.
Uma aproximação: sistematicamente combinar texto estruturado com diagramas de estado Nesta aproximação, um conjunto de cenários com uma estrutura baseada em diagramas de estado é combinado com uma representação textual estruturada de cada cenário.
Representação de um cenário As características desta representação são:
uma separação clara dos eventos (estímulos) produzidos pelo actor e as respostas do sistema; utilização de alguns termos simples de controle de fluxo (como if, go to, terminate), para tornar o fluxo o menos ambíguo possível; a possibilidade de transformar esta representação num diagrama de estados de uma forma simples—cada estímulo transforma-se num evento e cada resposta do sistema numa acção activada por esse evento. As alternativas são modeladas por estados, com uma transição de estado para cada alternativa.
Desta forma, é combinada a facilidade de leitura de texto em linguagem natural com o rigor da estruturação dos diagramas de estado. De notar que o fluxo normal pode conter alternativas e iterações.
Estruturação de um conjunto de cenários Os diagramas de estado são mecanismos poderosos de estruturação e abstracção, que é o necessário para sistematicamente organizar um conjunto de cenários. Estruturação é um requisito na expressão de relações como "cenário A deve ser seguido pelo cenário B", ou "neste ponto, podem ser executados o cenário A ou o cenário B". Abstracção permite o uso de cenários quer a um nível mais detalhado, quer a um nível mais alto, e sistematicamente relacionar cenários detalhados com cenários de alto nível.
O método SCRAM (Sutcliffe) O SCenario Requirements Analysis Method (SCRAM) é um método que segue um estilo de prototipagem na aproximação à Engenharia de Requisitos, motivado pela necessidade de ter os utilizadores activamente empenhados na descoberta de uma solução que melhor poderá ajudá-los a alcançar os seus objectivos.
Esta aproximação recomenda uma combinação entre demonstradores de conceitos, protótipos, cenários e modelos de análise racional. O método mostrou-se bastante prometedor, mas chegou-se à conclusão de que é preciso algum treino para que o seu uso seja produtivo/efectivo. O método é baseado em três técnicas:
protótipos, storyboards ou demonstradores de conceito; cenários; modelos de análise racional (design rationale);
As técnicas são combinadas na análise de requisitos. O método consiste nas quatro fases seguintes:
Captura inicial de requisitos e familiarização do domínio em questão: Isto é levado a cabo com entrevistas e procura de factos para ganhar informação suficiente para desenvolver o 1º demonstrador de conceito;