Você está na página 1de 15

UNIVERSIDADE DO ESTADO DO AMAZONAS

ESCOLA SUPERIOR DE TECNOLOGIA

CURSO DE ENGENHARIA ELETRÔNICA

REDUNDÂNCIA E GARANTIA DA QUALIDADE EM SISTEMAS EMBARCADOS

MANAUS – AM

06/06/2019
IHAGO PHYLLIP ALBUQUERQUE GOMES

REDUNDÂNCIA E GARANTIA DA QUALIDADE EM SISTEMAS EMBARCADOS

Trabalho apresentado à Universidade do Estado do


Amazonas, Escola Superior de Tecnologia, curso de
Engenharia Eletrônica, como requisito para obtenção
de nota parcial e conclusão do curso de Testabilidade e
Segurança de Softwares Embarcados, ministrado pelo
professor Alessandro Bezerra.

MANAUS – AM

06/06/2019
RESUMO

O presente estudo tem como objetivo a compreensão da importância da Redundância para a


segurança dos Softwares Embarcados e prevenção de falhas bem como a garantia da qualidade dos
mesmos.

Palavras-chave: redundância, segurança, software, qualidade.


ABSTRACT

The present study aims to understand the importance of Redundancy for the Security of
Embedded Software and the prevention of failures as well as the guarantee of their quality.

Key words: redundancy, security, software, quality.


SUMÁRIO

1. INTRODUÇÃO ........................................................................................................ 5

2. REDUNDÂNCIAS EM SISTEMAS EMBARCADOS ................................................ 6

2.1. POSSÍVEIS FALHAS EM SISTEMAS EMBARCADOS ............................. 6

2.2. DIFERENTES FORMAS DE DEIXAR UM SISTEMA REDUNDANTE....... 7

3. GARANTIA DA QUALIDADE EM SOFTWARES EMBARCADOS .......................... 8

3.1. CONSIDERAÇÕES PRÁTICAS PARA GARANTIR A QUALIDADE DO


SOFTWARE EMBARCADO ...................................................................................... 10

4. CONCLUSÃO........................................................................................................ 13

5. REFERÊNCIAS ..................................................................................................... 14
5

INTRODUÇÃO

Com o avanço da tecnologia, é praticamente impossível encontrar


empresas ou pessoas que não dependam do bom funcionamento de sistemas
embarcados. Necessidades são definidas no requisito proposto. Esses requisitos
devem definir as condições em que o produto deve ser utilizado e dizer seus
objetivos, funções e desempenho esperado. São, portanto, fatores relativos à
qualidade do processo do desenvolvimento do produto que são percebidos pelas
pessoas que trabalharam no seu desenvolvimento e outros por seus usuários.

Falhas em SE podem causar diversos danos, principalmente quando


afetam o consumidor. Por isso, cada vez mais, é comum ver organizações adotando
a redundância em SE. A redundância em SE é essencial para a alta disponibilidade
de sistemas, redes e dados. Com a repetição de componentes críticos para o
funcionamento de um serviço, a confiabilidade dele é aprimorada, pois caso
aconteça uma falha que possa desabilitar o sistema primário, um sistema secundário
assume a responsabilidade. O objetivo da redundância em SE é garantir a utilização
ininterrupta de serviços e evitar a perda de dados. Isso é feito com fontes de energia
alternativas, múltiplos locais de armazenamento de dados e outros dispositivos
redundantes.
6

REDUNDÂNCIAS EM SISTEMAS EMBARCADOS

Em sua tradução, o termo “Redundância” significa um “discurso que se


baseia na utilização de diferentes palavras para expressar um mesmo pensamento
ou ideia” — de acordo com o Dicionário Online de Português.

Porém, o termo é usado em SE com outro propósito. Ele indica a


duplicação de componentes críticos, aumentando a confiabilidade e segurança de
um sistema, bem como sua disponibilidade.

POSSÍVEIS FALHAS EM SISTEMAS EMBARCADOS

Falha de hardware

Essa falha ocorre quando componentes físicos da infraestrutura


apresentam problemas — como fontes de alimentação e discos rígidos. Para lidar
com elas, é indicado o uso de elementos redundantes que são tolerantes à falhas,
como fontes de alimentação e discos redundantes.

Falha de Software

Essa falha ocorre de forma interna, ou seja, nos softwares embarcados.


Para lidar com ela, é indicado o uso da redundância operacional ou pela utilização
de clusters.

Falha Humana

A falha humana também pode impactar negativamente na


disponibilidade de sistemas embarcados. Para lidar com o problema, é indicado o
uso de treinamentos e preparo do time, visando garantir melhores resultados para a
equipe.
7

Desastres físicos

Desastres físicos, como enchentes, curtos e até mesmo a queda de um


avião no local onde está implantado o sistema, não são suportados apenas pela
redundância. Para lidar com isso, é necessário buscar a contingência, entendida
como uma redundância externa, ou seja, localizada em locais remotos. Dessa forma,
caso algo aconteça com seu servidor principal, os dados e a operação se mantêm
salvos em outro ambiente, distante do problema.

DIFERENTES FORMAS DE DEIXAR UM SISTEMA REDUNDANTE

Fontes de energia

A redundância em fontes de energia consiste, na maior parte das vezes,


em nobreaks e baterias que podem garantir a continuidade do trabalho em um local
mesmo se houver indisponibilidade ou intermitência na rede elétrica. Além disso,
também é interessante investir em geradores de energia que vão assumir todas as
cargas do sistema até o restabelecimento e a estabilização da rede elétrica pública,
incluindo a recarga das baterias que foram acionadas quando houve a queda do
serviço.

Redes

Já a redundância de rede envolve a repetição de equipamentos


modulares de fornecimento de rede e, pelo menos, duas conexões diferentes. A
ideia é garantir a conexão mesmo no caso de falha de um componente ou serviço.
Logo, se alguma conexão sofre alguma falha, ele precisa de uma opção alternativa
para continuar operando, o que pode ser, por exemplo, uma conexão com outro
provedor. Em alguns casos, é interessante que essa conexão secundária ou terciária
seja sem fio, para situações em que o problema é físico, como a queda de um poste
na região em que passam todos os cabos.
8

Processamento

A redundância também pode ser usada na memória RAM dos dispositivos


da, garantindo que, quando um problema surge em um de seus componentes, os
demais deem conta do recado. Um ponto importante é entender que a velocidade do
dispositivo pode ser impactada, caso o total de memória disponível para as
operações não seja alta, sobrecarregando as atividades.

Dados

Por fim, a redundância nos dados é feita com técnicas e equipamentos


que vão garantir que eles sobrevivam a qualquer tipo de desastre e estejam sempre
disponíveis. Para isso, é importante que o desenvolvedor tenha uma política de
backups consistente e, pelo menos, dois locais de armazenamento diferentes. Uma
boa política de backups é aquela que faz cópias de segurança dos dados em
intervalos curtos que possam ser medidos em horas. Dessa forma, se algum tipo de
falha afeta os sistemas principais, boa parte do dados ainda pode ser recuperada
nos backups.

Como existe a possibilidade dos dados corrompidos ou malwares


prejudicarem um SE, é muito recomendável que existam também cópias de datas
um pouco mais antigas, que possam ser acessadas nesses casos.

Em relação aos locais de armazenamento, é extremamente recomendável


que eles sejam distantes o bastante para garantir a segurança dos dados em
catástrofes naturais: mesmo se a cidade em que um data center está instalado for
devastada por uma inundação, os dados sobreviverão em outro local
geograficamente afastado

GARANTIA DA QUALIDADE EM SOFTWARES EMBARCADOS

A qualidade é hoje o grande motivador em todas as áreas de atividade


humana, todos querem oferecer e receber produtos e serviços com qualidades.
9

Um software de qualidade oferece segurança de pessoas, disponibiliza


serviços essenciais gera competitividade das empresas, etc. A qualidade de um
software deve estar em conformidade com especificações e padrões de
desenvolvimento, há necessidades explícitas e objetivos propostos por aquelas
pessoas que produzem software, garantindo que, tanto o produto do software quanto
um bom processo de desenvolvimento, atinjam níveis de qualidade mantendo
sempre as necessidades dos usuários.

Qualidade de software

A norma internacional ISO/IEC, define qualidade de software como A


totalidade de características de um produto de software que lhe confere a
capacidade de satisfazer necessidades explícitas e implícitas.

Necessidades explícitas são aquelas definidas no requisito proposto.


Esses requisitos devem definir as condições em que o produto deve ser utilizado e
dizer seus objetivos, funções e desempenho esperado. São, portanto, fatores
relativos à qualidade do processo do desenvolvimento do produto que são
percebidos somente pelas pessoas que trabalharam no seu desenvolvimento.
Necessidades implícitas são aquelas que, embora não expressas no documento do
produtor, são necessárias para o usuário. Estão englobados em esta classe os
requisitos que não precisam ser declarados por serem óbvios, mas que pela
gravidade de suas consequências devem ser levados em consideração.

Segundo Crosby [1992] “A qualidade é a conformidade aos requisitos”.


Esta definição nos é bastante interessante, pois evidencia qual o caminho a seguir
para julgar a qualidade de um software. Partindo deste pressuposto é necessário
considerar vários fatores para a correta verificação da conformidade aos requisitos
como utilização de uma metodologia de observação dos resultados e conciliar os
interesses de diversos stakeholders.

Para a correta verificação da qualidade torna-se necessário uma prévia


definição das margens de precisão dos resultados esperados. Tornando possível a
medição em graus de qualidade do produto final. É necessário ter em mente que a
10

medida observada pode conter margens de erros. Existem diversos fatores que
podem corromper os dados utilizados na observação. A qualidade está intimamente
ligada aos requisitos e estes requisitos são definidos por alguém, logo a qualidade
depende das escolhas que este alguém fez.

Muitos desenvolvedores de software devem conciliar, resolver ou


minimizar os problemas organizacionais do cliente que contratou o desenvolvimento
do produto.

CONSIDERAÇÕES PRÁTICAS PARA GARANTIR A QUALIDADE DO SOFTWARE


EMBARCADO

Identificação de defeitos

Conhecer os conceitos de erro, defeito e falha é o requisito básico para se


construir um processo de garantia de qualidade. É preciso saber identificar o
problema, antes de investigar sua proveniência e, desta forma, saber corrigi-lo.
Quanto antes a presença do defeito for revelada, menor o custo de correção do
defeito e maior a probabilidade de corrigi-lo corretamente.

Validação, verificação e testes

As atividades de VV&T atuam na garantia de qualidade, assegurando


que o software cumpra as especificações definidas e atenda às necessidades de
seus usuários. Definições:

Validação: Avalia um sistema ou componente para determinar se ele satisfaz os


requisitos para ele especificados. “Estamos construindo o produto certo?”. O
software deve atender às necessidades dos usuários.
11

Verificação: Avalia um sistema ou componente para determinar se os produtos de


uma dada atividade de desenvolvimento satisfazem as condições impostas no início
desta atividade. “Estamos construindo certo o produto?” Os artefatos construídos
devem estar de acordo com a especificação do software.

Os principais métodos de Validação e Verificação são:

Estática: Revisões de Software (Revisões aos Pares, Inspeções de Software, entre


outros). Denomina-se estática, pois não envolve a execução do produto, mas
apenas leitura de artefatos, como código.

Dinâmica: Testes de Software (Testes de unidade, de integração, do software, entre


outros).

Revisões de Software Embarcados

São processos ou atividades para leitura de um artefato de software


visando assegurar que ele cumpre sua especificação e atende às necessidades de
seus usuários. Tem por objetivo realizar validação e verificação estática de artefatos
de software. Pode ser aplicada a qualquer artefato produzido ao longo do processo
de desenvolvimento de software.

Tipos de Revisões

Inspeções de Software: mais focadas em encontrar defeitos.

Walkthroughs: são mais apropriados para atividades de brainstorming, para explorar


alternativas de projeto e resolução de problemas.

Testes de Softwares Embarcados

Processo de executar um programa ou sistema com o objetivo de revelar


a presença de erros; ou, falhando nesse objetivo, aumentar a confiança sobre o
12

programa. Envolve todo um processo de planejamento, fases de teste, etc., que


necessitaria de um outro artigo para aprofundar este assunto.
13

CONCLUSÃO

Sistemas embarcados são cada vez mais importante para a geração de


valor em negócios e na vida das pessoas. Muitas empresas dependem da
disponibilidade dos seus sistemas para garantir sua operação.

Exemplo disso são os bancos e as instituições financeiras, que hoje


trabalham em um ambiente operacional totalmente informatizado. Se algum tipo de
falha derruba o sistema desse tipo de empresa, o trabalho é paralisado e, mesmo
quando a interrupção dura alguns minutos, os prejuízos são imensos. Outro tipo de
risco que causa danos financeiros imediatos e gigantescos é a perda de dados. Se
uma empresa perde seus dispositivos de armazenamento físico por uma catástrofe
natural como incêndio, descarga elétrica ou alagamento, pode perder o trabalho e
pesquisa de décadas, o que muitas vezes causa estragos irreversíveis.

Quando existem muitas camadas de redundância, as chances de


indisponibilidade são drasticamente reduzidas, pois no caso de falha de um
componente, já existe outro preparado para assumir seu papel no ambiente
operacional.

Por isso, há a necessidade urgente de sistematizar formas de evitar os


custos elevados consequente dos defeitos dos softwares embarcados e dos erros
não intencionais dos usuários. Isto só será possível se forem características de
qualidade de software: usabilidade, confiabilidade, funcionalidade e
manutenibilidade. Sendo esses, os requisitos essenciais do software embarcado
exigido pelos compradores. Assim veremos resultados positivos tendo softwares
embarcados de qualidade e mais úteis.
14

REFERÊNCIAS BIBLIOGRÁFICAS

Bus Architectures for Safety-Critical Embedded Systems. Embedded Software. Editora: EMSOFT,
2001.
Disponível em: <https://link.springer.com/chapter/10.1007/3-540-45449-7_22>. Acesso em 25 de
Maio de 2019.

Combined time and information redundancy for SEU-tolerance in energy-efficient real-time systems.
IEEE Transactions on Very Large Scale Integration (VLSI) Systems ( Volume: 14 , Issue: 4 ,
April 2006 )
Disponível em: < https://ieeexplore.ieee.org/abstract/document/1637463>. Acesso em 25 de Maio de
2019.

Quality Requirements in Practice: An Interview Study in Requirements Engineering for Embedded


Systems. Requirements Engineering: Foundation for Software Quality. Editora: REFSQ, 2009.
Disponível em: < https://link.springer.com/chapter/10.1007/978-3-642-02050-6_19>. Acesso em 25 de
Maio de 2019.

ZANDER, Justina. Model-Based Testing for Embedded Systems. Editora CRC PRESS, 2012.

Você também pode gostar