• No results found

Medvirkning, involvering, samhandling og dialog

4 Empiri og analyse

4.3 Utvalgte data og funn fra intervjuene

4.3.2 Medvirkning, involvering, samhandling og dialog

A especificação de requisitos de sistemas embarcados envolve muitas camadas (Graaf e Lormans 2003), em cada camada, um nível de detalhe adicional do sistema é especificado. No exemplo do domínio de sistema de cadeira de rodas, dois sistemas que possuem RF e RNF

distintos foram identificados, um que rastreia o solo em busca de obstáculos e outro que monitora o dispositivo de freio, cada um deles como um subsistema de um sistema maior que é a cadeira de rodas. Um processo identificado por Graaf e Lormans (2003) define em qual etapa cada requisito é analisado. Estas etapas podem ser vistas na Figura 2. A primeira etapa define os requisitos do sistema em geral, ou seja, requisitos funcionais e não funcionais. Nesta etapa uma arquitetura geral é estabelecida. No exemplo da cadeira de rodas, esta arquitetura seria uma visão geral do sistema, ou seja, a cadeira de rodas necessita de motores, de um subsistema que controle esta cadeira, de um subsistema de rastreia o solo em busca de colisões, de um subsistema que monitore o dispositivo de freio, dentre outros, onde o subsistema que monitora o dispositivo de freio deve obedecer a restrições temporais e de tolerância à falhas, enquanto que o subsistema rastreador de obstáculos deve obedecer a restrições de tempo.

A segunda etapa do processo utilizado pelos mesmos autores é identificar os requisitos dos subsistemas, se houverem. Com base nas arquiteturas identificadas no processo anterior, cada arquitetura é separada e seus requisitos funcionais e não funcionais são detalhados. O subsistema que monitora o dispositivo de freio, por exemplo, possui requisitos funcionais que podem ser classificados como detectar falha no dispositivo, corrigir falha, informar ao usuário a falha ocorrida, acionar trava de emergência, etc., e requisitos não funcionais como a trava de emergência que deve ser aciona em tempo real logo que for detectada uma falha no dispositivo de freio especificam a maneira como cada funcionalidade deve ser cumprida pelo sistema. Estas informações formam um conjunto de características do domínio de aplicações para sistemas de cadeira de rodas e características particulares do sistema sendo analisado.

A terceira e última etapa do processo de desenvolvimento de software para sistemas embarcados de Graaf e Lormans é o detalhamento dos subsistemas em nível de componentes. Novamente requisitos são melhores detalhados e finalmente componentes específicos da arquitetura são definidos. Para detectar falha no dispositivo de freio, por exemplo, é necessário utilizar um sensor que detecte que o dispositivo está falhando, assim um componente da sub-arquitetura detectar falha no dispositivo foi encontrada. Para acionar a trava de emergência, é necessário de um componente acionador, que aciona a trava de emergência assim que um problema com o dispositivo de freios for detectado.

Como a restrição da necessidade de acionar a trava de emergência é em tempo real, mas basta enviar um sinal para a trava de emergência, não há a necessidade de um alto processamento nem tampouco de muita memória, uma memória que apenas registre o erro ocorrido é suficiente. No entanto, para comunicar outros subsistemas, como o caso em que seja necessário comunicar os motores e o sistema de detecção de colisão para pararem o funcionamento, há a necessidade de um dispositivo de comunicação rápido como, por exemplo, uma porta USB (Universal Serial Bus) que possibilita que o tráfego de informações flua mais rápido que portas seriais. Há ainda a necessidade da programação de device drivers específicos para operar cada componente. Estes processos assimilam-se com o ditado “separar para conquistar”, o subsistema é separado em subsistemas, que são separados em outros subsistemas até que se chegue á uma definição de componentes de hardware.

Brisolara (2004) define outra forma de encontrar os requisitos do sistema:

“A especificação dos requisitos consiste na definição de quatro elementos principais, que são: (i) funcionalidade desejada pelo usuário; (ii) requisitos de Qualidade de Serviço (QoS), tais como: desempenho, restrições temporais, etc; (iii) restrições de custo (área, consumo de potência, etc.); (iv) estrutura do domínio do problema” (Brisolara 2004).

É possível então estruturar os aspectos relevantes do sistema em um dos quatro elementos principais da especificação de requisitos. Esta proposta define uma estruturação das características relevantes do sistema adequadamente, pois facilita a especificação dos seus requisitos e possíveis objetos.

O primeiro dos quatro elementos principais é caracterizado por encontrar as características relevantes nas funcionalidades desejadas pelo usuário. Nesta etapa são avaliadas as tarefas que o sistema deve executar, os objetivos do sistema, os possíveis módulos de operação e interface entre o usuário e o sistema. Aspectos temporais devem ser avaliados no segundo elemento denominado requisitos de qualidade de serviço QoS, como o tempo para execução de uma tarefa, o intervalo de tempo de resposta que um dispositivo leva para acionar outro dispositivo ou software.

As características relativas ao custeio do sistema devem ser avaliadas no terceiro elemento, denominado restrições de custo. Neste elemento são avaliados, de acordo com o sistema, o espaço físico disponível para abrigar o conjunto de software e hardware, os dispositivos (micro-controladores, COTS, as arquiteturas de hardware embutidas no sistema (número de processadores, memória, barramento) e os softwares (sistema operacional de tempo real, linguagem de programação orientada a objetos ou estruturada).

Por fim, na estrutura do domínio do problema, o sistema deve ser enquadrado em sistemas críticos, quando requerem segurança a falhas, requerendo tolerância a altas temperaturas, pressão, falta de energia, e sistemas leves, os quais não lidam com situações extremas.