Você está na página 1de 44

ANA2001 – Análise de Sistemas e de Requisitos

Software II

Universidade do Estado de Santa Catarina


Centro de Ciências Tecnológicas – DCC

Prof. Dr. William Alberto Cruz Castañeda

2021/2
[ Sistemas Embarcados e de Tempo
Real ]
Métodos, técnicas e ferramentas para o desenvolvimento de sistemas de software que foram
aplicados com sucesso no passado não são tão facilmente aplicáveis hoje em dia.
Software executado em redes de dispositivos móveis embarcados apresentam propriedades
que nem sempre são necessárias para sistemas mais tradicionais:

• Desempenho otimizado;
• Robustez;
• Distribuição;
• Dinâmico;
• Mobilidade;
1. Examinaremos as principais propriedades dos sistemas de software no
mundo embarcado, com recursos limitados, móveis e altamente
distribuídos.

2. Avaliaremos a aplicabilidade de métodos e técnicas de engenharia de


software (por exemplo, design de software, desenvolvimento baseado em
componentes, arquitetura de software, integração de sistemas e teste)
nesse domínio.
Uma das diferenças na engenharia de software para sistemas embarcados é o
conhecimento adicional em:

1. Eletrônica e consumo energia elétrica;


2. Interface física de eletrônica digital e analógica com o computador;
3. Design de software para sistemas embarcados e processamento de sinais
digitais (DSP);

Mais de 95% dos sistemas de software são embarcados.


Considere alguns dispositivos que você usa em casa diariamente

• Telefone celular, iPod, micro-ondas;


• Receptor de satélite, set-top box, leitor de DVD;
• Unidade de controle do motor do carro;

O que queremos dizer com engenharia de software para sistemas embarcados?


Desenvolvimento de software embarcado utiliza os mesmos modelos de
desenvolvimento de software

Abordagem adequada à natureza dinâmica e mutável dos sistemas embarcados


As principais fases de desenvolvimento de software para sistemas embarcados
são :

Definição do Problema
Especifica o que o software deve fazer.
Determina exatamente o que o cliente e o usuário desejam.
Pode incluir o desenvolvimento de um contrato com o cliente, dependendo do tipo de
produto que está sendo desenvolvido.
Dificuldades incluem: o cliente pedindo o produto errado, o cliente sem conhecimento,
o que limita a eficácia das especificações (ambíguas, inconsistentes e incompletas)
Arquitetura / Design
Arquitetura – preocupada com a seleção de Design – preocupa-se com a modularização e
elementos arquitetônicos, interações e detalhamento de interfaces, algoritmos e
restrições para fornecer uma estrutura que procedimentos, e tipos de dados para suportar a
atenda os requisitos e seja base para o arquitetura e satisfazer os requisitos.
projeto.
O sistema é decomposto em módulos de Desenvolve especificações de módulo (algoritmos,
software com interfaces. tipos de dados), mantém um registro de decisões de
design e rastreabilidade e especifica como o produto
de software deve executar suas tarefas.
Dificuldades incluem a falta de comunicação entre os projetistas de módulos e o desenvolvimento
de um design que pode ser inconsistente, incompleto, ambíguo.
Implementação
Equipe de desenvolvimento implementa módulos e componentes assim como verifica
se eles atendem as especificações.
Módulos são agrupados de acordo com o design.
A implementação especifica como o produto de software realiza suas tarefas.
Dificuldades incluem erros de interação de módulos e a ordem de integração que pode
influenciar a qualidade e a produtividade.
• Desenvolvimento de software para sistemas embarcados → desenvolvimento
baseado em componentes;
• Aplicável a componentes reutilizáveis;
• Componentes adaptáveis e extensíveis a contextos variados;
• Abordagem alterada de
Integração → Implantação para Implantação → Integração;
Existem diferentes formas e modelos de componentes de software:

• Componentes de software de terceiros;


• Plug-ins / Add-ins;
• Frameworks;
• Open systems;
• Infraestruturas de objetos distribuídos;
• Sistemas legados.
Verificação e Validação (V & V)
Análise – na forma de verificação estática, científica e formal, além de revisões e
orientações informais.
Teste – forma dinâmica de V & V. Caixa branca (temos acesso ao código) e caixa preta
(sem acesso ao código-fonte).
Teste pode ser estrutural e comportamental.
Dificuldades incluem erros de interação de módulos e a ordem de integração que pode
influenciar a qualidade e a produtividade.
À medida que avançamos, continuaremos a nos concentrar nos princípios
fundamentais da engenharia de software

• Rigor e Formalidade; • Generalidade;


• Separação de interesses; • Incrementável;
• Modularidade e decomposição; • Escalabilidade;
• Abstração; • Composição;
• Antecipação de mudança; • Heterogeneidade
[ Sistemas Embarcados ]
Combinação de hardware e software de computador, e talvez mecânicas
adicionais ou outras partes, projetadas para executar uma função dedicada.

Podem fazer parte de um sistema ou produto maior.


• Sistema especializado integrado como parte de um sistema maior. Consiste em
uma combinação de componentes de hardware e software para formar um
mecanismo computacional que executará uma função específica.

• Ao contrário dos sistemas desktop projetados para executar uma função geral,
os sistemas embarcados são restritos em sua aplicação.
Que características deve possuir o software do sistema embarcado?
• Executados em ambientes reativos e limitados pelo tempo.

• A configuração geral de um sistema embarcado consiste no hardware que


fornece o desempenho necessário para o aplicativo e o software que fornece a
maioria dos recursos e flexibilidade do sistema.
Núcleo do Processador
Varia de acordo ao microcontrolador de 8 bits a um de 32 ou
64 bits ou até múltiplos processadores.
Dispositivo e aplicativo devem atender a todos os requisitos
funcionais e não funcionais (tempo).
I/O Analógica
Conversores A/D e D/A são usados para obter e enviar dados
ao ambiente.
Entender o tipo de dados, os requisitos de precisão e as taxas
de dados de entrada/saída para selecionar os conversores
corretos para o aplicativo.
Sensores e Atuadores
Sensores são usados para detectar informações analógicas/digitais
do ambiente.
Atuadores são usados para controlar o ambiente de alguma forma.
Interfaces do Usuário
Podem ser simples quanto um LED piscando ou complexas quanto
um telefone celular sofisticado ou uma interface de câmera
fotográfica digital.
Portas Especificas do Aplicativo
Acrescenta funções especificas no aplicativo que permitem mapear
componentes internos e/ou externos.
Software
Otimizado no desempenho, memória ou energia. É escrito em uma
linguagem de alto nível, como C/C++, com código mais críticos para
o desempenho em linguagem assembly.
• Um sistema embarcado típico responde ao ambiente por meio de sensores e
controla o ambiente usando atuadores.

• Impõe um requisito aos sistemas embarcados para obter um desempenho


consistente para com esse ambiente.
• Sistema reativo → usa uma combinação de hardware e software para
responder a eventos no ambiente dentro de restrições.

• Eventos externos podem ser periódicos e previsíveis ou aperiódicos e difíceis de


prever.
[ Sistemas de Tempo Real ]
Qualquer sistema de processamento de informação que tenha que responder a estímulos de
entrada gerados externamente dentro de um período finito e especificado.
• Processam informações e produzem uma resposta dentro de um tempo especificado. Se não
o fizer, poderá incorrer em consequências graves, incluindo falhas.

• Em um sistema com uma restrição em tempo real, é inaceitável ter a ação ou resposta
correta após um determinado prazo: o resultado deve ser produzido dentro do prazo ou o
sistema irá degradar ou falhar completamente.
Geralmente, os sistemas em tempo real mantêm uma interação contínua com seu ambiente
[ Tipos de Sistemas de Tempo Real ]
A exatidão do cálculo depende não somente de seus resultados mas também do tempo em
que suas saídas são geradas.

Um sistema em tempo real deve satisfazer as restrições de tempo de resposta ou sofrer


consequências significativas no sistema.

Soft Real Time System – se as consequências consistirem em uma degradação de desempenho


mas não em uma falha.
Hard Real Time System – se as consequências são uma falha do sistema.
[ Desafios no Design de Sistemas
Embarcados ]
Tempo de resposta
• Responder a interações externas dentro de um período de tempo predeterminado;
• Produzir o resultado correto e em tempo (tão importante quanto produzir resultados
corretos)
• Projetados para atender a esses tempos de resposta. Hardware e software devem ser
projetados para suportar os requisitos de tempo.
A arquitetura deve atender aos requisitos de tempo de resposta do sistema. Usando
combinações de componentes de hardware e software, as principais perguntas a serem
respondidas são:

1. A arquitetura é adequada?
2. Os elementos de processamento são poderosos o suficiente?
3. As velocidades de comunicação são adequadas?
4. O sistema de agendamento está disponível?
Recuperação de Falhas
• Capazes de detectar e superar falhas no ambiente.
• Eventos são imprevisíveis, é quase impossível testar todas as possíveis combinações e
sequências.
Exemplos de falhas internas e externas que devem ser detectadas e gerenciadas por sistemas
em tempo real incluem:

• Falhas do processador
• Falhas na placa
• Falhas de link
• Comportamento inválido do ambiente externo
• Falha de conectividade
Diferenças que tornam os sistemas embarcados únicos são:

1. Eficiência energética.
2. Requisitos personalizados de tensão/potência.
3. Segurança.
4. Confiabilidade (funcionar sem falhas por dias, meses e anos).
5. Ambiente (suporte para uma ampla faixa de temperatura, vedados de produtos químicos e
tolerantes à radiação).
6. Interação eficiente com o usuário (menos botões, tela sensível ao toque, etc.).
7. Integrado com design em uma abordagem de co-design HW / SW.
ANA2001 – Análise de Sistemas e de Requisitos
Software II

Universidade do Estado de Santa Catarina


Centro de Ciências Tecnológicas – DCC

Prof. Dr. William Alberto Cruz Castañeda

2021/2

Você também pode gostar