Você está na página 1de 60

República de Angola

Ministério da Educação
Instituto Politécnico Privado do Sequele

DESENVOLVIMENTO DE UM SISTEMA CRÍTICO


PARA SOFTWARE

Grupo: nº 4
Sala: 15
Turma: H7
Curso: Gest. de Informática
Classe: 12ª
Turno: Tarde

Luanda
2023
I

Aleixaranço Sacala
Anderson Kanganjo Afonso
Cleyton Jorge Fernando
Divaldo Gonçalves Marques
Domingos João Malamba
Jelson Capita Manzou
João Matias Sumbrisio
Roque Sumbula Pedro

DESENVOLVIMENTO DE UM SISTEMA CRÍTICO


PARA SOF TWARE

Trabalho apresentado no Curso de Informática


do Instituto Politécnico Privado do Sequele,
como prova do professor do 1º Trimestre na
disciplina de TIC.

Orientador: Fernando André

____________________________________

Docente

Luanda
2023
II

Integrantes

Nome: Aleixaranço Bartolomeu Sacala


Nº 01

Nome: Anderson Kanganjo Afonso


Nº 02

Nome: Cleyton Jorge Fernando


Nº 07

Nome: Divaldo Gonçalves Marques


Nº 12

Nome: Domingos João Malamba


Nº 13

Nome: Jelson Capita Manzou


Nº 29

Nome: João Matias Sumbrisio


Nº 31

Nome: Roque Sumbula Pedro


Nº 47
III

Dedicatória

A dedicação deste trabalho é especialmente voltada à minha amada


família, cujo apoio inabalável e compreensão durante esta jornada acadêmica
foram a força motriz por trás de cada conquista. Agradeço por sua paciência,
encorajamento e amor incondicional, que transformaram desafios em
oportunidades e tornaram possíveis os momentos de triunfo. Esta conquista é
dedicada a vocês, fontes inesgotáveis de inspiração, que tornam cada passo
neste percurso não apenas significativo, mas verdadeiramente memorável.
IV

Agradecimentos

Primeiramente, gostaríamos de agradecer aos nossos amigos e familiares


por todo apoio, ajuda e principalmente pela compreensão com a ausência
durante todas as horas dedicadas a este projeto. Aos professores, Celestino e
Fernando por serem nossos orientadores e desempenharem essa função com
tanta dedicação e gentileza. Obrigada por todas as correções, reuniões e
versões deste projeto que nos permitiu aprender o processo de pesquisa e
conceitos essenciais para uma boa prática informática. Também gostaríamos de
enfatizar a paciência com a qual vocês guiaram nosso processo de aprendizado,
sempre ensinando os caminhos.

À Deus por nossas vidas e por permitir termos saúde para concluir este
trabalho.

Ao nosso grupo de Trabalho de Curso, pela cumplicidade e empatia


durante o difícil percurso para finalizar este projeto. Nós passamos por longos
desafios, juntas, sempre priorizando a comunicação e humor, e hoje mostrando
a todos onde mulheres unidas podem chegar.

A todos que contribuíram respondendo de forma voluntária o nosso


questionário, possibilitando os resultados desta pesquisa.
V

Epígrafe

“O desenvolvimento de sistemas críticos demanda


metodologias que priorizem não apenas a entrega rápida,
mas a confiabilidade e a aderência estrita aos requisitos
críticos estabelecidos“

Fonte: "Best Practices in Developing Critical Software


Systems," ACM Transactions on Software Engineering
and Methodology, vol. 28, no. 3, 2019.
VI

Resumo

O objetivo deste trabalho é identificar e apresentar como é o


desenvolvimento de sistemas críticos de software, explorando sua importância
estratégica na gestão organizacional. Analisamos a definição desses sistemas,
destacando sua centralidade em setores cruciais. Investigamos metodologias de
desenvolvimento, desafios de segurança e estratégias de gestão de riscos. A
arquitetura desses sistemas é examinada, considerando escalabilidade e
flexibilidade. Casos de sucesso e fracasso são estudados para extrair lições
valiosas. Propomos diretrizes para o desenvolvimento efetivo, visando contribuir
para a prática informática. O método empregado envolve uma análise detalhada
de casos e a revisão de melhores práticas em desenvolvimento de software
crítico. Os resultados destacam insights valiosos sobre arquitetura, segurança e
gestão de riscos em sistemas críticos de software. A conclusão sintetiza os
achados, enfatizando a importância estratégica desses sistemas e propondo
direções futuras para pesquisas e práticas informáticas.

Palavras-Chave: Sistema crítico, Desenvolvimento de Software Crítico, Arquitetura de


Sistemas, Informática, Arquitetura, Segurança, Gestão de Riscos.
VII

Abstract

The aim of this paper is to identify and present how critical software systems
are developed, exploring their strategic importance in organizational
management. We analyze the definition of these systems, highlighting their
centrality in crucial sectors. We investigate development methodologies, security
challenges and risk management strategies. The architecture of these systems
is examined, considering scalability and flexibility. Successes and failures are
studied to extract valuable lessons. We propose guidelines for effective
development, with the aim of contributing to IT practice. The method employed
involves a detailed analysis of cases and a review of best practices in critical
software development. The results highlight valuable insights into architecture,
security and risk management in critical software systems. The conclusion
synthesizes the findings, emphasizing the strategic importance of these systems
and proposing future directions for IT research and practice.

Keywords: Critical System, Critical Software Development, Systems Architecture,


Informatics, Architecture, Security, Risk Management.
VIII

Lista de ilustrações

Imagem 1. Estrutura de bomba de insulina.............................................................. 9


Imagem 2. Dimensões de confiança………………………………............................. 11
Imagem 3. Modelo de fluxo de dados de bomba de insulina……………………....... 11
Imagem 4. A Critical System Environment…………………....................................... 17
IX

Lista de tabelas

Tabela 1. Padrões de Arquitetura.......................................................................... 19


Tabela 2. Termologia de confiabilidade…………………........................................ 38
Tabela 3. Termologia de proteção......................................................................... 38
X

Lista de abreviaturas e siglas

SC Sistema critico

MTBF Tempo médio entre falhas

MTTR Tempo médio para reparo

ISO/IEC International Organization for Standardization/International


Electrotechnical Commission 27001

DevOps Development and Operations

Kanban Uma metodologia ágil de gestão visual de projetos

V-Model Um modelo de desenvolvimento

CCS Critical Software System - Sistema Crítico de Software

API Application Programming Interface

RUP Rational Unified Process

SCADA Supervisory Control and Data Acquisition

MRI Ressonância Magnética

ATC Air Traffic Control

SI Sistema Internacional de Unidades

CPQ Controle de Qualidade de Processos;


XI

Sumário

Conteúdo
Introdução ..................................................................................................................................... 1
Contextualização do Sistema Crítico de Software .................................................................... 3
Justificativa da Importância do Tema ....................................................................................... 4
Objetivos Gerais e Específicos ................................................................................................... 5
Sistema Crítico de Software: O que são e como funcionam? ....................................................... 7
Importância e Impacto na Informática ..................................................................................... 8
Impacto dos Sistemas Críticos de Software: Desdobramentos Transformadores .................. 10
A Base Conceitual dos Sistemas Críticos de Software................................................................. 12
Teoria dos Sistemas Complexos: Desvendando a Complexidade Intrínseca .......................... 12
Teoria da Confiabilidade: Fundamentando a Resiliência Operacional ................................... 14
Arquitetura de um Sistema Crítico de Software: Projetando a Espinha Dorsal .......................... 16
Componentes e Estrutura ....................................................................................................... 20
Escalabilidade e Flexibilidade em Sistemas Críticos de Software: Adaptação Dinâmica para
Desafios Emergentes ................................................................................................................... 22
Arquitetura Modular e Componentes Independentes ........................................................... 22
Gerenciamento Dinâmico de Recursos ................................................................................... 22
Elasticidade Automatizada ...................................................................................................... 22
Padrões de Integração e Comunicação ................................................................................... 23
Adaptação a Novos Requisitos ................................................................................................ 23
Gerenciamento de Configuração Dinâmico ............................................................................ 23
Resiliência a Falhas e Manutenção ......................................................................................... 23
Desenvolvimento de um Sistema Crítico de Software ................................................................ 24
Fases do Desenvolvimento...................................................................................................... 26
Metodologias de Desenvolvimento Recomendadas............................................................... 27
1. Metodologias Ágeis ..................................................................................................... 28
2. Modelo V-Model ......................................................................................................... 31
Desafios e Soluções no Desenvolvimento de Sistemas Críticos.............................................. 34
Segurança e Proteção de Dados em Sistemas Críticos ........................................................... 36
Casos de Sucesso e Fracasso ....................................................................................................... 38
Casos de Sucesso ..................................................................................................................... 38
1. Sistema de Controle de Tráfego Aéreo (ATC): ............................................................ 38
2. Sistema de Gestão Hospitalar Integrado: ................................................................... 38
Casos de Fracasso.................................................................................................................... 38
XII

1. Sistema de Votação Eletrônica:................................................................................... 39


2. Sistema de Controle de Energia: ................................................................................. 39
Considerações Finais ................................................................................................................... 41
Referências Bibliográficas ........................................................................................................... 42
Apêndice...................................................................................................................................... 43
Anexo .......................................................................................................................................... 45
Anexo A: Instrumento de Coleta de Dados ............................................................................. 45
1

Introdução

Na era digital, a engrenagem que impulsiona a inovação, eficiência e


competitividade nas organizações do setor de informática é, incontestavelmente,
guiada pelos sistemas críticos de software. Estes sistemas representam a
espinha dorsal tecnológica, fundamentais para as operações diárias, tomada de
decisões e, em última instância, para a sustentabilidade de diversas instituições.
Este trabalho propõe-se a realizar uma análise abrangente sobre os sistemas
críticos de software, mergulhando não apenas na essência técnica destas
estruturas, mas também na sua profunda influência nas operações de
informática.

A escolha deste tema se justifica pela necessidade imperativa de


compreender o papel vital que os sistemas críticos de software desempenham
na era da transformação digital. No âmago da informática, esses sistemas não
são apenas códigos e algoritmos; são arquiteturas inteligentes que permeiam
todos os aspectos das organizações modernas, desde a gestão de dados até as
interfaces com o usuário.

A confiabilidade, segurança e desempenho eficaz desses sistemas


tornaram-se requisitos não negociáveis, dada a sua influência direta na
competitividade e relevância de uma empresa em um cenário globalizado.

Exploraremos a complexidade desses sistemas, analisando sua


arquitetura, desenvolvimento, desafios de segurança e casos paradigmáticos de
implementação. Esta investigação não apenas busca iluminar as características
técnicas, mas também destaca a necessidade premente de uma abordagem
estratégica na gestão destes sistemas. Ao compreender a intricada teia que
constitui os sistemas críticos de software, esperamos contribuir para o
aprimoramento das práticas informáticas e promover um diálogo enriquecedor
no campo da tecnologia da informação.
2

A revolução digital trouxe consigo uma dependência cada vez maior de


sistemas críticos de software, tornando-os não apenas facilitadores, mas
verdadeiros catalisadores do progresso nas organizações modernas. Esses
sistemas transcendem a mera funcionalidade técnica, transformando-se em
alicerces estratégicos que impulsionam a inovação e a adaptação em um
ambiente empresarial em constante evolução.

A relevância deste estudo é ainda mais evidente considerando o panorama


atual, onde a crescente interconexão global e a explosão de dados demandam
sistemas que não apenas processem informações, mas que o façam de maneira
segura, confiável e eficiente. A complexidade envolvida na concepção e
manutenção desses sistemas críticos de software é um desafio constante para
os profissionais de informática, tornando a análise aprofundada dessas
estruturas uma necessidade inescapável.

Ao longo deste trabalho, exploraremos não apenas as características


técnicas que definem os sistemas críticos de software, mas também a sua
essência enquanto ferramentas estratégicas para a consecução de objetivos
organizacionais. A investigação abrangerá desde os princípios fundamentais que
regem esses sistemas até as práticas inovadoras que visam otimizar sua
implementação e gestão.

Assim, este estudo não apenas contribui para a compreensão técnica, mas
também aspira a fornecer insights valiosos para profissionais, acadêmicos e
gestores que buscam não apenas adotar, mas dominar os sistemas críticos de
software como instrumentos essenciais na busca pela excelência na área de
informática.
3

Contextualização do Sistema Crítico de Software

No cenário contemporâneo da tecnologia da informação, a


contextualização dos sistemas críticos de software é essencial para
compreender a complexidade e o impacto dessas estruturas na infraestrutura
tecnológica das organizações.

Os sistemas críticos de software são o alicerce sobre o qual repousam as


operações cruciais de empresas modernas, moldando o panorama da
informática e da gestão de dados de forma inigualável.

A contextualização começa pela compreensão profunda do termo "sistema


crítico de software", que transcende a simples definição técnica. Estes sistemas
não são meramente conjuntos de códigos e algoritmos; são soluções inteligentes
que permeiam todos os aspectos das operações empresariais.

Desde a gestão de grandes volumes de dados até a automação de


processos vitais, os sistemas críticos de software desempenham um papel
central na garantia da continuidade operacional e na sustentabilidade das
organizações.

Ao considerar a acirrada competição e a necessidade de adaptação ágil


nos ambientes empresariais, a contextualização desses sistemas torna-se
crucial. A rápida evolução tecnológica, a crescente cibersegurança e a
complexidade dos requisitos operacionais impõem desafios significativos na
implementação e gestão de sistemas críticos de software.

Nesse contexto, este estudo busca não apenas definir o que são sistemas
críticos de software, mas também explorar como essas estruturas se integram
nos ecossistemas de informática, influenciando diretamente a tomada de
decisões, a eficiência operacional e a capacidade de inovação das organizações.
4

Justificativa da Importância do Tema

A escolha de investigar e compreender os sistemas críticos de software é


fundamentada em uma série de fatores que refletem a dinâmica e a relevância
incontestável dessas estruturas no âmbito da informática e da gestão
organizacional.

Primeiramente, a natureza intrínseca desses sistemas como pilares


essenciais para o funcionamento de organizações modernas é uma justificativa
central. Em um contexto onde a informação é um ativo estratégico, os sistemas
críticos de software representam a espinha dorsal tecnológica que permite a
gestão eficaz e segura desses dados. A integridade, confiabilidade e
disponibilidade desses sistemas são imperativos para assegurar a continuidade
das operações em ambientes cada vez mais dependentes da tecnologia.

A crescente interconectividade global e a rápida evolução tecnológica são


fatores adicionais que ressaltam a importância deste estudo. À medida que as
organizações buscam inovação e competitividade, a implementação eficaz e a
gestão estratégica de sistemas críticos de software tornam-se diferenciais
decisivos. A justificativa se estende, portanto, à necessidade premente de
compreender não apenas a operação técnica desses sistemas, mas também
como eles se alinham com os objetivos estratégicos e operacionais das
organizações.

A abordagem de cibersegurança é uma faceta crítica que adiciona peso à


relevância do tema. Em um cenário onde as ameaças digitais são crescentes e
sofisticadas, os sistemas críticos de software são alvos prioritários. Entender
como esses sistemas são projetados, implementados e protegidos contra
ameaças é essencial para fortalecer a postura de segurança das organizações.
5

Objetivos Gerais e Específicos

Objetivo Geral

Este trabalho tem como objetivo geral investigar, analisar e compreender o


processo de desenvolvimento de sistemas críticos de software, destacando sua
importância estratégica na gestão de organizações e explorando as práticas
essenciais para assegurar sua eficácia e segurança.

Objetivos Específicos:

• Definir os Princípios dos Sistemas Críticos de Software: Analisar e


definir os princípios fundamentais que caracterizam um sistema como
crítico de software, considerando fatores como confiabilidade,
disponibilidade e segurança.

• Explorar Metodologias de Desenvolvimento Adequadas: Investigar e


comparar metodologias de desenvolvimento de software, destacando
aquelas que são mais adequadas para o desenvolvimento de sistemas
críticos, considerando aspectos como robustez e flexibilidade.

• Analisar a Arquitetura de Sistemas Críticos: Examinar os componentes


essenciais da arquitetura de sistemas críticos de software, destacando a
interconexão entre eles e a importância da escalabilidade.

• Abordar Desafios de Segurança e Proteção de Dados: Identificar os


desafios específicos relacionados à segurança em sistemas críticos de
software e propor estratégias para garantir a proteção efetiva dos dados
sensíveis.
6

• Estudo de Casos de Implementações Bem-Sucedidas: Analisar casos


de sucesso no desenvolvimento e implementação de sistemas críticos de
software, extraindo lições aprendidas e boas práticas.

Os objetivos delineados apontam para uma abordagem abrangente, desde


a definição de princípios fundamentais até a proposição de diretrizes práticas
para o desenvolvimento efetivo desses sistemas.

Ao investigar casos de sucesso e insucesso, esta pesquisa visa não


apenas contribuir para o corpo teórico, mas também fornecer insights práticos
para profissionais e gestores que buscam adotar e otimizar sistemas críticos de
software em suas organizações.

Dessa maneira, este trabalho visa não apenas preencher uma lacuna de
conhecimento, mas também oferecer ferramentas e conceitos aplicáveis,
promovendo uma compreensão holística dos desafios e oportunidades inerentes
ao desenvolvimento de sistemas críticos de software na era da informação.
7

Sistema Crítico de Software: O que são e como


funcionam?
Um sistema crítico de software refere-se a uma infraestrutura tecnológica
cuja falha pode resultar em impactos severos em operações, segurança ou
integridade de uma organização. Esses sistemas são essenciais para a
continuidade operacional, com características como confiabilidade,
disponibilidade e segurança prioritárias.

São aplicados em setores como saúde, finanças e logística, onde a


precisão e estabilidade são imperativas. Sua definição abrange a centralidade
desses sistemas na gestão de informações, destacando sua importância
estratégica no cenário tecnológico contemporâneo.

Estes sistemas incorporam estratégias avançadas de redundância e


tolerância a falhas para assegurar sua operação contínua, mesmo em condições
adversas. Sua definição também engloba a capacidade de se adaptar a
mudanças e manter o desempenho sob pressões variáveis, tornando-os pilares
fundamentais em setores onde a estabilidade e integridade são cruciais.

Além disso, a definição incorpora a ideia de que sistemas críticos não são
estáticos; eles evoluem com as demandas do ambiente tecnológico. Portanto, a
definição abrange não apenas a importância intrínseca desses sistemas, mas
também a necessidade de adaptação contínua para enfrentar desafios
emergentes.

Assim, a compreensão da definição de Sistema Crítico de Software é o


ponto de partida essencial para desvendar as complexidades e desafios que
permeiam o desenvolvimento e a gestão dessas infraestruturas fundamentais.
8

Importância e Impacto na Informática

Na trama dinâmica da informática moderna, a importância e o impacto dos


sistemas críticos de software são irrefutáveis. Estes sistemas representam a
espinha dorsal tecnológica que impulsiona a eficiência operacional e a tomada
de decisões estratégicas em organizações de diversas naturezas. A sua
relevância transcende o mero processamento de dados, estendendo-se a uma
influência direta sobre o desempenho, a segurança e a competitividade no
cenário empresarial.

A essência da importância reside na capacidade desses sistemas de


moldar e aprimorar os processos informáticos, desde a gestão de dados até a
automação de tarefas críticas. São pilares fundamentais para setores sensíveis,
como saúde, onde a precisão e confiabilidade dos sistemas críticos são cruciais
para diagnósticos e tratamentos.

Além disso, o impacto desses sistemas é sentido não apenas internamente


nas organizações, mas também na interconexão global, afetando cadeias de
suprimentos, serviços essenciais e a infraestrutura pública. A eficácia dos
sistemas críticos de software torna-se uma linha tênue entre a continuidade
operacional e potenciais disrupções, ressaltando sua importância em contextos
nos quais a agilidade e a adaptação são essenciais.

Em suma, compreender a importância e o impacto dos sistemas críticos de


software na informática é reconhecer a sua função como impulsionadores
estratégicos e operacionais, determinando a eficiência e a resiliência das
organizações em um cenário empresarial em constante evolução.

A importância estratégica dos sistemas críticos de software transcende a


mera funcionalidade técnica, estendendo-se para áreas cruciais que moldam o
panorama organizacional e tecnológico.

Eficiência Operacional: Esses sistemas são catalisadores da eficiência


operacional, automatizando tarefas complexas e acelerando processos vitais.
Em setores como a indústria, a automação proporcionada pelos sistemas críticos
não apenas aumenta a produtividade, mas também reduz a probabilidade de
erros humanos.
9

Figura 3. Estrutura de bomba de insulina

Tomada de Decisões Estratégicas: A precisão e confiabilidade dos dados


gerados por sistemas críticos são essenciais para a tomada de decisões
estratégicas. Em ambientes corporativos, a capacidade de acesso a informações
em tempo real e análises precisas impulsiona a agilidade na resposta a
mudanças no mercado.

Competitividade Global: Organizações que dominam a implementação


eficaz de sistemas críticos de software ganham uma vantagem competitiva
significativa. A capacidade de operar de maneira contínua e segura em um
ambiente globalizado é crucial para a manutenção da relevância e
competitividade.

Segurança e Proteção de Ativos: Em setores sensíveis, como saúde e


finanças, a segurança proporcionada por sistemas críticos é vital. A proteção de
dados sensíveis, transações financeiras e informações médicas confidenciais
não apenas cumpre regulamentações rigorosas, mas também estabelece a
confiança dos usuários e clientes.

Resiliência e Continuidade de Negócios: A capacidade desses sistemas


de resistir a falhas e se recuperar rapidamente é fundamental para a resiliência
e continuidade de negócios. Setores críticos, como serviços públicos e logística,
dependem desses sistemas para garantir operações ininterruptas, mesmo em
situações adversas.

Inovação Tecnológica: O desenvolvimento contínuo de sistemas críticos


impulsiona a inovação tecnológica. A busca por melhores práticas, a adoção de
novas tecnologias e a incorporação de avanços científicos contribuem para o
progresso tecnológico em larga escala.
10

A compreensão profunda da importância estratégica desses sistemas é


imperativa para gestores, profissionais de TI e líderes empresariais, pois guia a
alocação de recursos, investimentos em segurança cibernética e a formulação
de estratégias que visam a sustentabilidade e crescimento das organizações na
era digital.

Impacto dos Sistemas Críticos de Software: Desdobramentos


Transformadores

A influência exercida pelos sistemas críticos de software transcende a


esfera técnica, moldando aspectos cruciais da sociedade, economia e
segurança. O impacto desses sistemas é inegável, desdobrando-se em múltiplas
dimensões e desenhando os contornos de uma era digital em constante
evolução.

Neste contexto, exploraremos os impactos significativos que essas


infraestruturas têm nas engrenagens da sociedade contemporânea, delineando
como a eficiência, segurança e inovação desses sistemas reverberam em escala
global.

Infraestrutura Global: Sistemas críticos são os pilares de infraestruturas


globais, influenciando setores como energia, comunicações e transporte.
Interrupções em sistemas críticos podem ter efeitos cascata, afetando
negativamente a prestação de serviços essenciais e a conectividade global.

Permitem o monitoramento em tempo real, otimizando a resposta a


emergências médicas, coordenação eficiente em situações de segurança e
desastres naturais. Sua eficácia é diretamente proporcional à segurança pública,
salvaguardando vidas e propriedades.

Segurança Pública: Em setores como saúde e segurança pública, o


impacto é visceral. Sistemas críticos nesses domínios facilitam o monitoramento
em tempo real, otimizam a resposta a emergências médicas e garantem a
coordenação eficiente em situações de segurança.

Economia e Competitividade: O impacto econômico é substancial, pois


organizações eficientes em sistemas críticos ganham vantagem competitiva. A
inovação impulsionada por esses sistemas contribui para o crescimento
econômico, enquanto a confiabilidade nas operações garante a continuidade dos
negócios e a criação de empregos.
11

Confiança do Consumidor: A confiança do consumidor é intrinsecamente


ligada à segurança e eficiência dos sistemas críticos, especialmente em serviços
financeiros e de saúde. A confiança perdida devido a falhas em sistemas pode
ter impactos duradouros na reputação de uma organização.

Figura 4. Dimensões de confiança

Resposta a Desastres e Crises: Em situações de desastres naturais ou


crises, sistemas críticos desempenham um papel crucial na coordenação de
esforços de resposta. A capacidade de compartilhar informações, mobilizar
recursos e manter serviços essenciais é essencial para mitigar danos e salvar
vidas.

Influência na Inovação Tecnológica: O impacto desses sistemas na


inovação tecnológica não pode ser subestimado. Avanços em inteligência
artificial, automação e segurança cibernética, muitas vezes impulsionados por
desafios encontrados em sistemas críticos, contribuem para o progresso
tecnológico em diversos campos.
Exemplo: Fluxo de dados da bomba de insulina

Figura 5. Modelo de fluxo de dados de bomba de insulina


12

Em cada um desses pontos, a análise minuciosa do impacto desses


sistemas destaca a sua natureza transformadora. Ao entendermos essas
interconexões, percebemos que a eficiência e segurança desses sistemas não
são apenas requisitos técnicos, mas componentes vitais para a sustentabilidade
e prosperidade em um mundo cada vez mais dependente da tecnologia.

Compreender o amplo espectro de impactos dos sistemas críticos de


software é essencial para gestores, formuladores de políticas e profissionais de
TI. O investimento em sua eficiência e segurança não apenas resguarda contra
potenciais ameaças, mas também fortalece a base para sociedades mais
seguras, resilientes e tecnologicamente avançadas.

A Base Conceitual dos Sistemas Críticos de Software

Nesta seção, mergulharemos nas teorias e conceitos fundamentais que


delineiam a natureza, os desafios e as melhores práticas associadas a essas
infraestruturas cruciais.

Teoria dos Sistemas Complexos: Desvendando a


Complexidade Intrínseca

A teoria dos sistemas complexos emerge como um arcabouço teórico vital


para a análise dos sistemas críticos de software. Ela proporciona uma lente
analítica para compreender a interconexão dinâmica entre os componentes
desses sistemas, onde suas interações não seguem padrões lineares.

A aplicação desta teoria revela comportamentos emergentes, ressaltando


a necessidade de uma abordagem adaptativa na concepção e gestão dessas
infraestruturas.

Em sistemas críticos, a Teoria dos Sistemas Complexos oferece uma


perspectiva valiosa sobre como múltiplos componentes interagem, não apenas
de maneira isolada, mas como partes de um todo interdependente.

Essa interconexão dinâmica resulta em comportamentos emergentes que


não podem ser totalmente previstos apenas pela análise de partes individuais.
Em vez disso, a compreensão da totalidade do sistema e de suas interações é
essencial para antecipar desdobramentos e adaptar-se a mudanças.
13

Ao aplicar a Teoria dos Sistemas Complexos aos sistemas críticos de


software, é possível identificar padrões, emergências e sinergias que
transcendem a soma de suas partes.

Isso se torna especialmente crucial, considerando a necessidade desses


sistemas operarem em ambientes dinâmicos e enfrentarem desafios que podem
surgir de fontes diversas e interconectadas.

Além disso, a Teoria dos Sistemas Complexos destaca a importância da


adaptação contínua e da resiliência. Em ambientes nos quais a complexidade é
inerente, a capacidade de se ajustar a mudanças repentinas e de lidar com
eventos imprevisíveis torna-se fundamental.

Assim, ao desvendar a complexidade intrínseca, essa teoria oferece


insights fundamentais para o desenvolvimento, implementação e manutenção de
sistemas críticos de software, orientando a criação de soluções robustas e
flexíveis capazes de enfrentar os desafios do mundo moderno.

A Teoria dos Sistemas Complexos é uma abordagem interdisciplinar que


busca compreender a natureza e o comportamento de sistemas complexos por
meio do estudo de suas partes constituintes e de suas interações. Ao aplicar
essa teoria a sistemas críticos de software, a análise se aprofunda nos seguintes
aspectos:

Interconexão Dinâmica
Estudo de Componentes: Analisa-se cada componente do sistema crítico,
compreendendo suas funções, comportamentos e interações.
Relacionamentos Não Lineares: Considera-se que as interações entre os
componentes não seguem padrões lineares, sendo influenciadas por feedbacks
e dependências dinâmicas.

Comportamentos Emergentes
Totalidade do Sistema: Enfoca-se na compreensão da totalidade do
sistema, reconhecendo que os comportamentos emergentes podem surgir da
interação complexa entre os componentes.
14

Não Previsibilidade Absoluta: Aceita-se a não previsibilidade absoluta de


todos os resultados devido à natureza dinâmica e adaptativa do sistema.

Adaptação Contínua
Mudanças no Ambiente: Considera as mudanças no ambiente em que o
sistema opera, reconhecendo a necessidade de adaptação contínua para manter
a eficácia em face de desafios variáveis.
Resiliência: Valoriza a resiliência do sistema, a capacidade de se recuperar
e manter a funcionalidade diante de perturbações e falhas.

Modelagem e Simulação
Representação Matemática: Utiliza ferramentas matemáticas e modelos
para representar as relações e interações entre os componentes.
Simulações Computacionais: Recorre a simulações computacionais para
explorar cenários diversos e entender melhor os padrões de comportamento do
sistema.

Aplicações Práticas em Sistemas Críticos


Identificação de Riscos: Ajuda a identificar potenciais riscos, falhas e
vulnerabilidades nos sistemas críticos.
Otimização do Desempenho: Contribui para otimizar o desempenho do
sistema, adaptando-se às condições operacionais e melhorando a eficácia.

Teoria da Confiabilidade: Fundamentando a Resiliência


Operacional

A teoria da confiabilidade surge como um pilar essencial para compreender


como os sistemas críticos são projetados para resistir a falhas e garantir
operações contínuas. Conceitos fundamentais, como tempo médio entre falhas
(MTBF) e tempo médio para reparo (MTTR), permeiam a análise e
aprimoramento da confiabilidade desses sistemas, destacando a importância da
prevenção e rápida recuperação diante de adversidades.

A Teoria da Confiabilidade é uma estrutura conceitual essencial para


compreender e aprimorar a resiliência operacional dos sistemas críticos de
software. Ela se concentra na análise e na gestão de falhas, garantindo a
contínua disponibilidade e desempenho desses sistemas em face de eventos
15

imprevisíveis. Ao aplicar essa teoria a sistemas críticos, diversos elementos são


considerados:

Tempo Médio entre Falhas (MTBF):


Definição: Representa o período médio de tempo entre falhas no sistema.
Aplicação: No contexto de sistemas críticos, a maximização do MTBF é
crucial para aumentar a confiabilidade operacional.

Tempo Médio para Reparo (MTTR):


Definição: Refere-se ao tempo médio necessário para reparar um
componente ou sistema após uma falha.
Aplicação: Minimizar o MTTR é fundamental para reduzir o impacto de
falhas, garantindo uma rápida recuperação.

Análise de Falhas
Identificação de Modos de Falha: Examina os modos potenciais pelos quais
o sistema pode falhar.
Avaliação de Consequências: Analisa as consequências de cada modo de
falha, avaliando seu impacto na operação do sistema.

Tolerância a Falhas
Projeto com Redundância: Implementa componentes redundantes para
garantir a continuidade operacional, mesmo diante de falhas.
Isolamento de Falhas: Desenvolve mecanismos para isolar falhas,
impedindo que se propaguem para outros componentes.

Manutenção Preditiva:
Monitoramento Contínuo: Utiliza técnicas de monitoramento contínuo para
identificar sinais precoces de degradação ou falha iminente.
Intervenções Proativas: Permite intervenções proativas antes que as falhas
ocorram, reduzindo o impacto nas operações.

Testes e Simulações:
16

Validação de Desempenho: Realiza testes e simulações para validar o


desempenho do sistema sob diferentes condições.
Aprimoramento Contínuo: Utiliza resultados de testes para aprimorar
continuamente a resiliência do sistema.

Ao aplicar a Teoria da Confiabilidade a sistemas críticos de software, busca-


se garantir não apenas a estabilidade operacional, mas também a capacidade
de adaptação diante de desafios. A resiliência operacional é alcançada por meio
da compreensão e gestão proativa das falhas, integrando estratégias que
minimizam o tempo de inatividade e maximizam a capacidade de resposta em
ambientes dinâmicos e complexos.

Arquitetura de um Sistema Crítico de Software:


Projetando a Espinha Dorsal

A arquitetura de um sistema crítico de software desempenha um papel vital


na determinação de sua eficácia, segurança e resiliência. Ao projetar a espinha
dorsal dessa arquitetura, é necessário considerar uma série de elementos-chave
para garantir o funcionamento contínuo e confiável em cenários complexos.

No modelo do processo de desenvolvimento de software, o projeto de


arquitetura é o primeiro estágio no processo de projeto de software. É o elo crítico
entre o projeto e a engenharia de requisitos, pois identifica os principais
componentes estruturais de um sistema e os relacionamentos entre eles.

O resultado do processo de projeto de arquitetura é um modelo de


arquitetura que descreve como o sistema está organizado em um conjunto de
componentes de comunicação

A origem da arquitetura de software como um conceito foi primeiramente


identificado no trabalho de pesquisa de Edsger Dijkstra em 1968 e David Parnas
no início de 1970. Estes cientistas enfatizaram a importância das estruturas de
um sistema de software e a criticidade da identificação da sua estrutura.

O estudo deste campo aumentou de popularidade desde o início de 1990


com os trabalhos de pesquisa concentrando-se nos padrões de estilo de
arquitetura de software, linguagens de descrição de arquitetura de software,
documentação de arquitetura de software, e métodos formais.
17

A arquitetura de software é fundamental para a implementação de sistemas


e softwares e consequente sucesso de um projeto e de um negócio como um
todo. É através dela que todos os envolvidos em um projeto dentro da empresa
conseguem compreender os componentes de um novo software e entender a
fundo todos os dados, algoritmos e estrutura ali presentes.

Figura 3. Critical System Environment

Uma arquitetura bem projetada pode:


Reduzir a possibilidade de erros no projeto, já que com a visão do arquiteto
de software é possível identificar possíveis dificuldades e os pontos críticos do
mesmo, o que evita também chances de manutenções futuras e de custos muito
altos com mudanças;
Reduzir riscos em um negócio. Como dissemos, a arquitetura de software
permite enxergar melhor possíveis erros, custos, restrições e mais, assim
reduzindo a possibilidade de riscos para o negócio como um todo;

Levar a resultados mais assertivos. A construção de softwares mais


flexíveis e de qualidade, alinhados com as necessidades do negócio, leva a
melhores resultados. Um exemplo de como essa construção pode tornar os
resultados mais assertivos é que com ela sistemas mais complexos e robustos
podem ser fracionados em partes que reduzem a dificuldade de seu
entendimento pela equipe e auxilia no momento de aprofundar no que é
realmente necessário para alavancar o negócio.

Aumentar a segurança dos sistemas. Item de extrema importância, a


segurança, quando pensada durante um projeto de arquitetura de software, se
preocupa com cada necessidade de proteção e conjuntos de restrições para
evitar ataques cibernéticos.
18

Assim como em qualquer área, a arquitetura de software precisa de um


profissional preparado para executar projetos eficazes e chegar aos resultados
apontados acima. Esse é o papel do arquiteto de software.

Visualizações Arquiteturais
Escolhemos representar a arquitetura de software em várias visualizações
arquiteturais. Cada visualização arquitetural trata de um conjunto específico de
interesses, específicos dos envolvidos no processo de desenvolvimento:
usuários, designers, gerentes, engenheiros de sistema, mantenedores e assim
por diante.

As visualizações capturam as principais decisões de design estruturais,


mostrando como a arquitetura de software é decomposta em componentes e
como os componentes são conectados por conectores para produzir formulários
úteis [PW92]. As opções de design devem estar associadas aos Requisitos, tanto
funcionais quanto suplementares, e a outras restrições. Mas essas opções, por
sua vez, impõem restrições adicionais aos requisitos e às futuras decisões de
design em um nível inferior.

Um Conjunto Típico de Visualizações Arquiteturais


A arquitetura é representada por várias visualizações arquiteturais
diferentes, que, em sua essência, são extrações que ilustram os elementos
"arquiteturalmente significativos" dos modelos. No RUP, você inicia em um
conjunto típico de visualizações, denominado "modelo de visualização 4+1"
[KRU95]. Ele é composto de:

• A Visualização de Casos de Uso, que contém casos de uso e cenários que


englobam comportamento arquiteturalmente significativo, classes ou riscos
técnicos. Ela é um subconjunto do Modelo de Caso de Uso.

• A Visualização Lógica, que contém as classes de design mais importantes


e sua organização em pacotes e subsistemas e a organização desses
pacotes e subsistemas em camadas. Também contém algumas realizações
de casos de uso. É um subconjunto do Modelo de Design.

• A Visualização de Implementação, que contém uma visão geral do Modelo


de Implementação e sua organização em termos de módulos em pacotes e
camadas. A alocação de pacotes e classes (da Visão Lógica) nos pacotes e
19

módulos da Visão de Implementação também é descrita. É um subconjunto


do Modelo de Implementação.

• A Visualização do Processo, que contém a descrição das tarefas (processo


e encadeamentos) envolvidas, suas interações e configurações, e a alocação
de objetos e classes de design para tarefas. Esta visualização só precisará
ser utilizada se o sistema tiver um grau significativo de Simultaneidade. No
RUP, ela é um subconjunto do Modelo de Design.

• A Visualização de Implementação, que contém a descrição dos vários nós


físicos da maioria das configurações comuns de plataforma e alocação de
tarefas (da Visualização do Processo) nos nós físicos. Essa visualização só
precisará ser usada se o sistema estiver distribuído. É um subconjunto do
Modelo de Implementação.

As visualizações arquiteturais estão documentadas em um Documento de


Arquitetura de Software. Você pode prever visualizações adicionais para
expressar várias questões especiais: visualização da interface com o usuário,
visualização de segurança, visualização de dados e outras. No caso dos
sistemas simples, você pode omitir algumas das visões contidas no modelo de
visão 4+1.

Padrões Arquiteturais
Os padrões arquiteturais são formulários prontos que solucionam
problemas arquiteturais recorrentes. Uma estrutura arquitetural ou uma infra-
estrutura arquitetural (middleware) é um conjunto de componentes em que você
pode construir um determinado tipo de arquitetura.

Muitas das maiores dificuldades arquiteturais devem ser resolvidas na


estrutura ou na infra-estrutura, geralmente, direcionadas a um domínio
específico: comando e controle, departamento de informática, sistema de
controle, etc.
Exemplos de Padrões de Arquitetura
[BUS96] agrupa padrões arquiteturais de acordo com as características dos
sistemas em que eles são mais aplicáveis, com uma categoria tratando de
problemas gerais de estruturação. A tabela mostra as categorias apresentadas
em [BUS96] e os padrões nelas contidos.
Tabela 1. Padrões de Arquitetura
20

Componentes e Estrutura

Vamos explorar os aspectos fundamentais da arquitetura de sistemas críticos:


1. Modelo de Arquitetura em Camadas:
• Camadas Funcionais: Divide as funcionalidades do sistema em
camadas distintas, permitindo uma clara separação de
responsabilidades.
• Isolamento de Componentes: Cada camada opera de maneira
independente, facilitando a identificação e correção de problemas
específicos sem afetar o funcionamento global.

2. Redundância e Tolerância a Falhas:


• Componentes Redundantes: Incorpora redundância em
componentes críticos para garantir que falhas em um local não
comprometam a integridade do sistema.
• Isolamento de Falhas: Desenvolve mecanismos para isolar falhas,
impedindo que se propaguem para outros componentes ou camadas.

3. Segurança em Todos os Níveis:


• Criptografia e Proteção de Dados: Implementa técnicas robustas de
criptografia para proteger dados sensíveis.
• Controles de Acesso: Define rigorosos controles de acesso para
garantir que apenas usuários autorizados possam interagir com
componentes críticos.

4. Estratégias de Recuperação:
• Backup e Restauração: Estabelece estratégias eficazes de backup e
restauração para minimizar a perda de dados em caso de falhas.
• Planos de Continuidade de Negócios: Desenvolve planos
abrangentes para manter a continuidade operacional em situações
adversas.
5. Integração de Tecnologias Emergentes:
• IoT e Sensores Inteligentes: Incorpora dispositivos IoT e sensores
inteligentes para monitorar o desempenho em tempo real e identificar
anomalias.
21

• Machine Learning e Inteligência Artificial: Utiliza técnicas


avançadas para prever falhas, identificar padrões e otimizar
operações.

6. Flexibilidade e Escalabilidade:
• Arquitetura Modular: Adota uma arquitetura modular que permite fácil
expansão e adaptação a novos requisitos.
• Gerenciamento Dinâmico de Recursos: Implementa estratégias
para alocar recursos de maneira dinâmica conforme as demandas
operacionais.

7. Monitoramento Contínuo:
• Ferramentas de Monitoramento: Utiliza ferramentas robustas de
monitoramento para avaliar o desempenho, identificar gargalos e
antecipar possíveis falhas.
• Alertas e Notificações: Configura sistemas de alerta para notificar
proativamente sobre eventos críticos ou desvios de desempenho.
8. Padrões de Desenvolvimento Seguros:
• Revisões de Código e Testes: Implementa rigorosas revisões de
código e testes para garantir a qualidade e segurança do software
desde as fases iniciais de desenvolvimento.
• Conformidade com Normas e Regulamentações: Adere a normas
e regulamentações específicas do setor para garantir a conformidade
e segurança.

Exemplo de arquitetura de sistema SCADA usando o E3, da Elipse Software


22

Ao integrar esses elementos na arquitetura de um sistema crítico de


software, cria-se uma base sólida que sustenta a resiliência operacional e a
capacidade de adaptação diante de desafios. A arquitetura, portanto, não é
apenas a estrutura técnica, mas a garantia de que o sistema é capaz de operar
de maneira confiável em ambientes complexos e dinâmicos.

Escalabilidade e Flexibilidade em Sistemas Críticos de


Software: Adaptação Dinâmica para Desafios
Emergentes

A escalabilidade e flexibilidade são princípios fundamentais na concepção


de sistemas críticos de software, visando garantir que essas infraestruturas
possam evoluir, crescer e se adaptar de maneira eficiente a novos desafios e
requisitos emergentes. Vamos explorar como esses elementos são integrados
para assegurar a resiliência operacional:

Arquitetura Modular e Componentes Independentes


Escalabilidade Horizontal: Adota uma abordagem de escalabilidade
horizontal, permitindo a adição de novas instâncias ou módulos para lidar com
um aumento na carga.
Módulos Independentes: Desenvolve componentes independentes que
podem ser escalados separadamente, garantindo uma distribuição equitativa da
carga.

Gerenciamento Dinâmico de Recursos


Alocação Eficiente de Recursos: Implementa estratégias para alocar
recursos de maneira dinâmica, direcionando capacidade extra para áreas
específicas conforme necessário.
Balanceamento de Carga: Utiliza técnicas de balanceamento de carga para
distribuir equitativamente as demandas de trabalho entre os componentes,
evitando sobrecargas.

Elasticidade Automatizada
Monitoramento em Tempo Real: Integra sistemas de monitoramento em
tempo real para avaliar a demanda e o desempenho do sistema.
Provisionamento Automático: Implementa mecanismos de elasticidade
automática que ajustam dinamicamente os recursos com base nas condições
operacionais.
23

Padrões de Integração e Comunicação


APIs e Microserviços: Utiliza arquiteturas baseadas em microserviços e
APIs para facilitar a integração e comunicação eficientes entre diferentes partes
do sistema.
Padrões de Mensageria: Aplica padrões de mensageria para garantir a
comunicação assíncrona e a interoperabilidade entre módulos.

Adaptação a Novos Requisitos


Desenvolvimento Ágil: Adota metodologias ágeis de desenvolvimento que
possibilitam a rápida implementação e adaptação a novos requisitos.
Ciclos de Atualização Contínua: Estabelece ciclos de atualização contínua
para incorporar melhorias incrementais e ajustar a funcionalidade conforme as
demandas do ambiente.

Gerenciamento de Configuração Dinâmico


Orquestração de Contêineres: Utiliza ferramentas de orquestração de
contêineres para facilitar o gerenciamento dinâmico de configurações e
implantações.
Infraestrutura como Código (IaC): Implementa IaC para automatizar a
configuração e o provisionamento de recursos de infraestrutura.

Resiliência a Falhas e Manutenção


Testes de Falhas e Recuperação: Realiza testes regulares de falhas e
recuperação para garantir que o sistema possa lidar adequadamente com
cenários adversos.
Manutenção sem Tempo de Inatividade: Desenvolve estratégias de
manutenção que permitem atualizações e correções sem afetar a disponibilidade
global do sistema.

A integração efetiva de escalabilidade e flexibilidade não apenas prepara


os sistemas críticos para lidar com volumes variáveis de demanda, mas também
oferece a agilidade necessária para se adaptar a um ambiente dinâmico.

Esses princípios são essenciais para garantir que os sistemas críticos de


software possam evoluir e atender às demandas em constante mudança,
mantendo a resiliência e o desempenho operacional.
24

Desenvolvimento de um Sistema Crítico de Software

Quando se trata de projetar e programar software para coisas como carros


de condução autônoma, você tem que considerar a segurança uma prioridade.
Isso se aplica a muito mais do que ideias futuristas para o transporte.

Na verdade, aplica-se a muitos itens que milhões de pessoas usam todos


os dias. Aviões e linhas ferroviárias. Uma máquina de MRI. Seu próprio car’ vira
o sinal ou o limpador de pára-brisa. Todos esses sistemas complexos ( e muitos
mais ) dependem de software crítico para a segurança desenvolvido com o maior
número possível de cenários de falha para mitigar as consequências.

Mas o que diferencia esse tipo de desenvolvimento dos outros? Os


desafios, melhores práticas e padrões de segurança envolvidos envolvem
apostas muito maiores e algum atrito com as metodologias modernas. Então,
qual é o problema do desenvolvimento de software crítico para a segurança?

Algo considerado software crítico para a segurança geralmente é um


aplicativo de software incorporado projetado especificamente para sistemas que,
no caso de uma falha, existem medidas para evitar ferimentos e perda de vidas.
Isso significa que qualquer software exige verificação, validação e confiabilidade
para ser incorporado a todas as etapas do ciclo de vida do desenvolvimento.

Os sistemas críticos de segurança exigem que qualquer software


relacionado adira a padrões rígidos de segurança durante o desenvolvimento.
Os padrões de segurança também são atualizados regularmente para resolver
problemas e vulnerabilidades à medida que surgem. Isso requer que os
desenvolvedores de software de sistemas críticos de segurança se mantenham
atualizados e permaneçam ágeis quando se trata de desenvolvimento.

Além disso, o objetivo desse tipo de desenvolvimento não é velocidade


nem mesmo recursos, mas segurança. Durante o ciclo de vida, os
desenvolvedores devem considerar o maior número possível de cenários de
falhas do mundo real, além de aderir aos padrões de segurança em seu setor.
Isso também requer testes robustos, validação e verificação.
25

A Organização Internacional de Normalização (ISO), criada em 1947,


estabelece padrões de segurança em muitos setores com a contribuição de mais
de 160 membros de muitos países. Juntamente com outros órgãos, a ISO
trabalha constantemente para desenvolver e reavaliar seus padrões de
segurança em milhares de sistemas em muitos setores.

Cada indústria tem seus próprios órgãos que praticam a supervisão e a


regulamentação de dispositivos e softwares críticos para a segurança. Por
exemplo, na indústria automotiva, você tem a norma internacional ISO 26262
para segurança funcional padrão ISO/SAE 21434 para segurança automotiva.
Para dispositivos médicos, você tem IEC 62304 e IEC 62443 para segurança.

Há também padrões de codificação como MISRA e AUTOSAR C++ 14 que


são conhecidos por serem aplicados a uma variedade de outras indústrias, como
aeroespacial, militar, ferroviária e médica. Outros padrões de segurança para
vários tipos de aplicações incluem CERT, CWE e OWASP.

Existem cinco pilares essenciais para os requisitos no desenvolvimento de


software crítico para a segurança.

Sem ambiguidade. Na documentação como no próprio código, é preciso


haver acordo sobre o que os requisitos significam sem interpretação ou
adivinhação.
Rastreável. Programadores e gerentes devem ser capazes de rastrear os
requisitos para cima e para baixo ao revisar o código ou durante o processo de
teste.

Repetível. Ter o programa e o software retornando os resultados esperados


dos requisitos é o mínimo. Os dispositivos devem operar como requisitos, ao
mesmo tempo em que retornam dados e saídas esperados durante qualquer tipo
de falha.

Consistente. Deve haver características conflitantes de requisitos quando


se trata de tempo, desempenho, priorização, etc. Terminologia é uniforme e
consistente na documentação, bem como, para evitar confusão.

Testável. Programas críticos de segurança bem desenvolvidos atenderão


aos requisitos em todos os tipos de teste.
26

Fases do Desenvolvimento

1. Análise de Requisitos Críticos


Antes de iniciar o desenvolvimento, uma análise detalhada dos requisitos
críticos é essencial. Isso envolve a identificação precisa das funcionalidades
essenciais, requisitos de desempenho, segurança e confiabilidade.

Os requisitos críticos incluem a capacidade de processar informações em


tempo real, garantir a segurança de aeronaves e passageiros e lidar com
situações de emergência.

2. Projeto Arquitetural
A fase de projeto arquitetural define a estrutura geral do sistema, incluindo
a escolha de arquiteturas robustas, a definição de interfaces e a planificação
para escalabilidade e flexibilidade futuras.

Um exemplo prático seria o design de um sistema de gestão hospitalar,


onde a arquitetura deve suportar escalabilidade para lidar com o aumento de
pacientes, garantindo a segurança dos dados médicos e integrando
eficientemente diferentes módulos.

3. Implementação
Durante a implementação, é crucial seguir boas práticas de codificação,
incluindo revisões de código, testes unitários extensivos e a adesão rigorosa a
padrões de segurança.

Considere a implementação de um sistema de controle de processos


industriais. A codificação precisa garantir precisão, resiliência a falhas e a
capacidade de monitorar e ajustar variáveis em tempo real.

4. Testes Rigorosos
Testes sistemáticos, incluindo testes de unidade, integração, e aceitação,
são fundamentais para identificar e corrigir falhas antes da implantação. Os
cenários de teste devem abranger tanto condições normais quanto situações
extremas.
27

No caso de um sistema financeiro, os testes rigorosos envolvem verificar a


precisão de cálculos, segurança contra fraudes e a capacidade de lidar com
grande volume de transações simultâneas.

5. Implantação Gradual
Opta-se por uma implantação gradual, começando com ambientes
controlados e monitorando atentamente o desempenho e a estabilidade do
sistema antes de expandir para ambientes mais amplos.

A implantação gradual é exemplificada na introdução de um novo sistema


de reservas em uma companhia aérea. Inicialmente, pode ser implementado em
um número limitado de rotas antes de ser expandido globalmente, garantindo a
estabilidade operacional e ajustes conforme necessário.

6. Manutenção Contínua
Após a implantação, a manutenção contínua é imperativa. Isso inclui
atualizações regulares, correção de bugs, monitoramento proativo e a
implementação de melhorias conforme necessário.

Para um sistema de energia elétrica, isso inclui atualizações regulares para


aprimorar a eficiência energética, corrigir falhas e garantir conformidade com
regulamentações ambientais em constante evolução.

Metodologias de Desenvolvimento Recomendadas

A abordagem ágil é particularmente adequada para o desenvolvimento de


sistemas críticos, proporcionando flexibilidade para se adaptar a mudanças nos
requisitos, entregas incrementais e colaboração contínua entre equipes.

Em um projeto de automação residencial, a metodologia ágil permite a


adaptação rápida a novos requisitos, permitindo o desenvolvimento iterativo de
funcionalidades, como controle remoto de dispositivos e segurança residencial.
28

1. Metodologias Ágeis
As metodologias ágeis representam uma abordagem revolucionária no
desenvolvimento de software, enfatizando a flexibilidade, a colaboração e a
entrega contínua de valor. No contexto de sistemas críticos, onde a
adaptabilidade e a eficiência são imperativas, a aplicação eficaz das
metodologias ágeis desempenha um papel crucial para garantir o sucesso do
projeto.

Princípios Fundamentais das Metodologias Ágeis

Colaboração Interdisciplinar:
As metodologias ágeis promovem a colaboração contínua entre
desenvolvedores, operadores e stakeholders, garantindo uma compreensão
holística dos requisitos e das metas do projeto.

Entregas Incrementais:
A abordagem incremental permite a entrega de funcionalidades
operacionais em curtos intervalos, proporcionando valor constante ao usuário e
facilitando a adaptação a mudanças nos requisitos.

Mudanças Bem-Vindas:
As metodologias ágeis abraçam a mudança como uma vantagem
competitiva. Isso é particularmente crucial em sistemas críticos, onde os
requisitos podem evoluir em resposta a eventos imprevistos ou novas
necessidades.

Feedback Contínuo:
A obtenção de feedback contínuo é essencial para aprimorar o sistema.
Metodologias ágeis incentivam a comunicação aberta, permitindo ajustes
rápidos com base nas avaliações recebidas.

Exemplificando Metodologias Ágeis em Sistemas Críticos

Desenvolvimento de um Sistema Hospitalar:


Ao aplicar metodologias ágeis no desenvolvimento de um sistema
hospitalar, equipes podem priorizar funcionalidades críticas, como o
29

rastreamento de pacientes, e ajustar rapidamente o sistema para lidar com


surtos de doenças ou novos protocolos médicos.

Controle de Tráfego Urbano:


Em um sistema de controle de tráfego urbano, a abordagem ágil permite a
rápida implementação de ajustes nas regras de tráfego, adaptação a eventos
inesperados e aprimoramentos contínuos na eficiência do sistema.

Gestão de Emergências:
Para um sistema de gestão de emergências, as metodologias ágeis
facilitam a rápida incorporação de novos protocolos de resposta a emergências,
ajustes nas prioridades de atendimento e aprimoramentos constantes na
interoperabilidade com outros sistemas.

Desafios e Soluções
Entretanto, a implementação de metodologias ágeis em sistemas críticos
não está isenta de desafios. Desafios específicos incluem a gestão de requisitos
em constante evolução e a necessidade de garantir a estabilidade do sistema.
Soluções envolvem a definição clara de prioridades e a implementação de
práticas robustas de teste.

Gestão Eficiente de Requisitos Dinâmicos


Em sistemas críticos, os requisitos podem evoluir rapidamente devido a
mudanças nas condições externas ou novas demandas dos usuários.
Metodologias ágeis abordam esse desafio com:

Priorização Contínua: Identificação e priorização constante dos requisitos


mais críticos, garantindo que as equipes estejam focadas nas funcionalidades
essenciais.

Sprint Planning Adaptativo: Planejamento de sprints flexíveis, permitindo


ajustes nas metas com base em mudanças nas condições ou requisitos
emergentes.
30

Estabilidade do Sistema em Ambientes Críticos


Em sistemas onde a estabilidade é vital, como sistemas de controle de
energia, as metodologias ágeis enfrentam o desafio de manter a confiabilidade
enquanto buscam melhorias contínuas. Soluções incluem:

Testes Rigorosos: Implementação de testes automatizados e manuais


abrangentes para garantir que cada incremento introduza melhorias sem
comprometer a estabilidade geral.

Monitoramento Pós-Implementação: Adoção de ferramentas de


monitoramento para rastrear o desempenho do sistema após cada atualização,
permitindo correções rápidas em caso de degradação.

1. DevOps
No desenvolvimento de um sistema de comércio eletrônico, a integração
do DevOps facilita a entrega contínua, garantindo atualizações rápidas e seguras
para enfrentar demandas flutuantes e manter a confiabilidade operacional.

O DevOps representa uma abordagem revolucionária que visa unificar as


equipes de desenvolvimento e operações, promovendo uma integração
contínua, entrega contínua (CI/CD) e uma resposta rápida às mudanças. No
contexto do desenvolvimento de sistemas críticos de software, a aplicação
eficiente do DevOps desempenha um papel crucial na garantia da resiliência
operacional, segurança e entrega contínua de valor aos usuários.

Princípios Fundamentais do DevOps


Colaboração Transparente:
O DevOps elimina as barreiras entre equipes de desenvolvimento e
operações, fomentando uma cultura de colaboração transparente. Isso é
especialmente relevante em sistemas críticos, onde uma compreensão unificada
é essencial para garantir a integridade do sistema.

Automatização Abrangente:
A automação é a espinha dorsal do DevOps. Em sistemas críticos, a
automação é aplicada desde a compilação do código até a implantação,
garantindo consistência, reduzindo erros humanos e facilitando a resposta rápida
a mudanças nos requisitos.
31

Monitoramento Contínuo:
A implementação de monitoramento contínuo é vital para sistemas críticos.
O DevOps enfatiza a integração de ferramentas de monitoramento que permitem
uma visibilidade constante do desempenho do sistema, antecipando potenciais
falhas e melhorando a capacidade de resposta.

2. Modelo V-Model
O Modelo V-Model, também conhecido como Modelo em V, é uma
abordagem de desenvolvimento que enfatiza a correspondência entre as fases
de teste e desenvolvimento. Esse modelo é particularmente relevante em
ambientes onde a validação rigorosa e a conformidade estrita são essenciais,
como é o caso de sistemas críticos. Vamos explorar em detalhes os princípios,
fases e aplicação do Modelo V-Model em contextos de desenvolvimento de
software crítico.

Princípios Fundamentais do Modelo V-Model

Correspondência Simétrica:
O Modelo V-Model propõe uma correspondência direta entre as fases de
desenvolvimento e teste. Cada fase de desenvolvimento tem uma fase de teste
correspondente, o que garante uma validação abrangente.

Validação Contínua:
A validação é incorporada em todas as etapas do processo, desde o início
do desenvolvimento até a entrega final. Isso assegura que cada componente
seja testado à medida que é desenvolvido, minimizando a probabilidade de
falhas críticas no sistema.

Abordagem Sequencial:
O Modelo V-Model segue uma abordagem sequencial, onde cada fase de
desenvolvimento é seguida imediatamente por sua fase de teste
correspondente. Essa sequencialidade promove a clareza no processo e facilita
a rastreabilidade.
32

Fases do Modelo V-Model

Definição de Requisitos:
A fase inicial envolve a definição detalhada dos requisitos do sistema. Essa
etapa é crucial para estabelecer uma base sólida para o desenvolvimento
subsequente.

Especificação de Design
Na fase de especificação de design, os requisitos são traduzidos em
especificações técnicas. Essas especificações servem como base para o
desenvolvimento do sistema.

Desenvolvimento:
A fase de desenvolvimento concentra-se na implementação real do sistema
com base nas especificações de design. É nessa etapa que o código-fonte é
gerado.

Teste de Unidade:
Cada componente individual é testado independentemente para garantir
que funcione conforme o esperado. Isso inclui a verificação de funcionalidades
específicas e a detecção de possíveis falhas.

Integração:
Os componentes individuais são combinados e testados em conjunto para
verificar a integração entre eles. Esse processo garante que o sistema como um
todo funcione harmoniosamente.

Teste de Sistema:
A fase de teste de sistema avalia o sistema completo em relação aos
requisitos estabelecidos. Esse teste verifica se o sistema atende a todas as
especificações e funciona conforme o esperado em um ambiente real.
33

Validação e Verificação:
Nesta etapa, a validação final é realizada para garantir que o sistema
atenda aos requisitos do usuário e que todas as funcionalidades estejam corretas
e conformes.

Aplicação do Modelo V-Model em Sistemas Críticos


O Modelo V-Model é especialmente aplicável em ambientes onde a
validação é crítica, como em sistemas críticos. Sua abordagem sequencial e
correspondência direta entre desenvolvimento e teste oferecem benefícios
significativos:

Redução de Erros:
A validação contínua em cada fase minimiza a probabilidade de erros
graves persistirem até fases avançadas do desenvolvimento.

Rastreabilidade:
A estrutura do modelo facilita a rastreabilidade, permitindo que as equipes
identifiquem rapidamente a origem de possíveis problemas durante o teste.

Documentação Clara:
Cada fase é claramente documentada, proporcionando uma base sólida
para manutenção futura e garantindo uma compreensão unificada do sistema.

O Modelo V-Model destaca-se como uma abordagem metódica e robusta


para o desenvolvimento de sistemas críticos. Sua ênfase na validação contínua,
sequencialidade e correspondência entre fases de desenvolvimento e teste o
tornam uma escolha sólida em cenários onde a confiabilidade e a conformidade
são imperativas.

Ao empregar o Modelo V-Model, as equipes podem desenvolver e validar


sistemas críticos de maneira eficiente, garantindo um alto nível de qualidade e
atendendo aos requisitos rigorosos desses ambientes especializados.
34

Desafios e Soluções no Desenvolvimento de Sistemas Críticos

O desenvolvimento de sistemas críticos enfrenta desafios únicos que


demandam abordagens cuidadosas e soluções inovadoras para garantir a
confiabilidade, segurança e eficiência dessas infraestruturas vitais.

Vamos explorar alguns desses desafios específicos e as soluções


propostas para enfrentá-los:

1. Desafio: Complexidade e Interconexão


Complexidade:
Sistemas críticos frequentemente apresentam uma complexidade
intrínseca devido à necessidade de integração de múltiplos componentes e
tecnologias.

Solução: Arquitetura Modular e Padrões de Interoperabilidade


Adotar uma abordagem de arquitetura modular permite que os sistemas
críticos sejam divididos em componentes menores, facilitando o
desenvolvimento, teste e manutenção. Além disso, a implementação de padrões
de interoperabilidade assegura a comunicação eficiente entre diferentes
módulos, reduzindo a complexidade global.

2. Desafio: Segurança da Informação


Segurança:
Sistemas críticos lidam com dados sensíveis e são alvos potenciais para
ataques cibernéticos, o que pode comprometer a integridade e confidencialidade
das informações.

Solução: Práticas Rigorosas de Segurança desde o Início


Integrar práticas de segurança desde as fases iniciais do desenvolvimento,
como análises de ameaças, criptografia robusta e controle de acesso estrito,
fortalece a segurança do sistema.

Além disso, implementar testes de segurança regulares identifica e corrige


vulnerabilidades antes que possam ser exploradas.
35

3. Desafio: Mudanças nos Requisitos


Mudanças:
Sistemas críticos frequentemente enfrentam alterações nos requisitos
devido a evoluções regulatórias, tecnológicas ou demandas emergentes.

Solução: Metodologias Ágeis e Flexibilidade


A adoção de metodologias ágeis, como Scrum ou Kanban, permite uma
resposta ágil a mudanças nos requisitos, garantindo a flexibilidade necessária.
Realizar revisões regulares dos requisitos e manter uma comunicação aberta
com os stakeholders são práticas que suportam a adaptação contínua.

4. Desafio: Garantia de Resiliência


Resiliência:
A resiliência é fundamental em sistemas críticos para garantir que eles
possam lidar com falhas, emergências e situações adversas.

Solução: Testes Rigorosos e Planos de Continuidade Operacional


A realização de testes rigorosos, incluindo testes de estresse e simulações
de falhas, ajuda a identificar e corrigir fragilidades no sistema.
Além disso, elaborar planos de continuidade operacional, que incluem
procedimentos para lidar com situações de emergência, contribui para a
resiliência do sistema.

5. Desafio: Conformidade com Normas e Regulamentações


Conformidade:
Sistemas críticos frequentemente devem cumprir normas rigorosas e
regulamentações específicas do setor.

Solução: Auditorias Regulares e Adesão a Padrões Internacionais


Realizar auditorias regulares para garantir a conformidade e adotar
padrões internacionais reconhecidos no desenvolvimento e operação do sistema
são práticas essenciais.
Isso não apenas assegura a conformidade legal, mas também contribui
para a confiabilidade do sistema.
36

Enfrentar os desafios no desenvolvimento de sistemas críticos requer uma


abordagem estratégica e multidimensional. A combinação de práticas de
engenharia robustas, segurança proativa, flexibilidade na gestão de requisitos e
adesão a padrões de qualidade e conformidade são fundamentais para garantir
o sucesso desses projetos vitais.

Ao enfrentar esses desafios de frente e adotar soluções inovadoras, as


equipes de desenvolvimento podem construir sistemas críticos que atendam não
apenas aos requisitos técnicos, mas também às expectativas de confiabilidade
e segurança da sociedade.

Segurança e Proteção de Dados em Sistemas Críticos

A segurança e proteção de dados em sistemas críticos são aspectos


fundamentais que demandam atenção especial devido à sensibilidade e
importância dessas infraestruturas para o funcionamento seguro e confiável de
setores essenciais. Vamos explorar as estratégias e práticas essenciais para
garantir a integridade, confidencialidade e disponibilidade dos dados em
sistemas críticos.

Práticas de Segurança desde o Início


1. Análise de Ameaças e Riscos:
Antes mesmo do início do desenvolvimento, realizar uma análise de
ameaças e riscos identifica potenciais vulnerabilidades. Compreender as
ameaças permite a implementação de contramedidas desde as fases iniciais do
projeto.

2. Criptografia Robusta:
A utilização de algoritmos de criptografia robusta é essencial para proteger
dados sensíveis. A criptografia deve ser aplicada tanto em repouso quanto em
trânsito, garantindo a confidencialidade das informações.

3. Controle de Acesso Estrito:


Estabelecer políticas de controle de acesso rigorosas assegura que apenas
usuários autorizados possam acessar dados críticos. Isso inclui a
implementação de autenticação forte e gestão eficiente de privilégios.
37

Tabela 2. Termologia de confiabilidade

Monitoramento Contínuo e Resposta a Incidentes


1. Ferramentas de Monitoramento em Tempo Real:
A implementação de ferramentas de monitoramento em tempo real permite
a detecção precoce de anomalias ou atividades suspeitas. Essa vigilância
constante contribui para a resposta imediata a potenciais ameaças.

2. Resposta Rápida a Incidentes:


Desenvolver e testar planos de resposta a incidentes é crucial. Isso inclui
procedimentos claros para isolar e conter ameaças, bem como a realização de
análises pós-incidente para fortalecer as defesas.

Gestão Eficiente de Dados Sensíveis


Encriptação de Dados:
A encriptação de dados sensíveis, tanto em repouso quanto em trânsito, é
uma camada adicional de proteção. Utilizar algoritmos de encriptação seguros
fortalece a segurança dos dados.
Políticas de Retenção e Descarte:
Estabelecer políticas claras para a retenção e descarte seguro de dados é
vital. Isso evita a manutenção desnecessária de informações e reduz o risco de
exposição.

Tabela 3. Terminologia de proteção


38

Casos de Sucesso e Fracasso


O estudo de casos de sucesso e fracasso em sistemas críticos oferece
insights valiosos sobre as práticas que levam ao êxito ou ao insucesso desses
projetos complexos. Vamos explorar exemplos representativos que destacam as
lições aprendidas e as melhores práticas, bem como as armadilhas a serem
evitadas.

Casos de Sucesso

1. Sistema de Controle de Tráfego Aéreo (ATC):


O desenvolvimento e implementação eficaz de sistemas de controle de
tráfego aéreo representam um caso de sucesso notável. A colaboração entre
especialistas em aviação, desenvolvedores de software e reguladores resultou
em sistemas robustos que garantem a segurança e eficiência do tráfego aéreo
global. Lições-chave incluem:
Colaboração Interdisciplinar: A integração efetiva entre diferentes partes
interessadas, incluindo controladores de tráfego, pilotos, e desenvolvedores, é
crucial para o sucesso.

Testes Extensivos: A realização de testes exaustivos, incluindo simulações


realistas, é essencial para garantir a confiabilidade e a resiliência do sistema.

2. Sistema de Gestão Hospitalar Integrado:


A implementação bem-sucedida de sistemas integrados de gestão
hospitalar demonstra como a tecnologia pode melhorar a eficiência e a qualidade
dos serviços de saúde. Principais lições aprendidas incluem:

Adaptação Contínua: A capacidade de adaptar o sistema a mudanças


regulatórias, avanços médicos e novas práticas é essencial para garantir a
relevância contínua do sistema.

Segurança dos Dados: A proteção de dados sensíveis dos pacientes é uma


prioridade, exigindo criptografia robusta, controle de acesso e monitoramento
constante.

Casos de Fracasso
39

1. Sistema de Votação Eletrônica:


Casos de fracasso em sistemas críticos, como alguns modelos de votação
eletrônica, destacam a importância da confiabilidade e da transparência. Lições
extraídas desses casos incluem:

Testes Insuficientes: A falta de testes abrangentes e simulações realistas


pode levar a falhas durante eventos críticos, como eleições.

Falhas de Segurança: Vulnerabilidades na segurança, como a falta de


medidas contra manipulação de votos, podem comprometer a integridade do
sistema.

2. Sistema de Controle de Energia:


Exemplos de sistemas de controle de energia que falharam evidenciam a
importância da resiliência e da redundância em infraestruturas críticas. Principais
lições aprendidas incluem:

Falta de Redundância: Sistemas que não contam com mecanismos de


redundância podem enfrentar interrupções significativas em caso de falha.

Manutenção Proativa: A negligência na manutenção preventiva pode


resultar em falhas inesperadas, causando impactos severos na distribuição de
energia.

Os casos de sucesso e fracasso em sistemas críticos oferecem valiosas


lições para os profissionais envolvidos no desenvolvimento, implementação e
manutenção dessas infraestruturas essenciais. A colaboração interdisciplinar,
testes exaustivos, adaptação contínua e priorização da segurança dos dados
são fatores críticos para o sucesso.

Por outro lado, a falta de testes adequados, vulnerabilidades de segurança


e negligência na manutenção podem resultar em consequências adversas. Ao
aprender com esses casos, as equipes podem aprimorar suas práticas, mitigar
riscos e contribuir para o sucesso contínuo de sistemas críticos.
40

Conclusão

O desenvolvimento de sistemas críticos de software é uma tarefa


desafiadora e crucial, exigindo atenção cuidadosa desde a concepção até a
manutenção contínua. Ao longo deste trabalho, exploramos a complexidade
inerente a esses sistemas, destacando a importância da segurança, resiliência
e conformidade com regulamentações.

A contextualização do Sistema Crítico de Software revelou a sua natureza


vital em setores como saúde, transporte, energia e outros, onde a falha pode
resultar em impactos significativos e até mesmo ameaçar vidas. A justificativa
enfatizou a necessidade premente de abordagens robustas no desenvolvimento
desses sistemas para garantir confiabilidade e segurança.

Os objetivos gerais e específicos delinearam a missão deste trabalho:


explorar os desafios, soluções, teorias e práticas fundamentais associadas ao
desenvolvimento de sistemas críticos. A definição de sistema crítico,
apresentada de maneira concisa, estabeleceu a base para o entendimento do
escopo abordado.

A análise das teorias fundamentais revelou a importância da Teoria dos


Sistemas Complexos, que destaca a interconexão e interdependência dos
componentes, e a Teoria da Confiabilidade, essencial para garantir a resiliência
operacional. A arquitetura de um sistema crítico foi explorada, destacando a
necessidade de escalabilidade e flexibilidade para enfrentar demandas
dinâmicas.

A seção sobre segurança e proteção de dados enfatizou a importância de


práticas proativas, como análise de ameaças, criptografia robusta e resposta a
incidentes. Casos de sucesso e fracasso forneceram insights valiosos,
reforçando a necessidade de colaboração, testes extensivos e atenção à
segurança.

Em última análise, o desenvolvimento de sistemas críticos é um desafio


multidimensional que requer uma abordagem holística. Ao integrar teorias
robustas, metodologias ágeis, práticas de segurança e aprender com casos
anteriores, as equipes podem contribuir para o sucesso contínuo dessas
infraestruturas vitais, garantindo confiabilidade, segurança e resiliência em face
de desafios complexos e em constante evolução.
41

Considerações Finais

O desenvolvimento de sistemas críticos de software é uma jornada


complexa e desafiadora, marcada por nuances técnicas e exigências rigorosas.
Este trabalho buscou explorar e abordar os principais elementos associados a
esse campo vital da engenharia de software.

A contextualização do Sistema Crítico de Software destacou sua


centralidade em setores cruciais da sociedade, ressaltando a necessidade de
abordagens robustas que assegurem confiabilidade, segurança e resiliência. A
justificativa evidenciou a importância dessa área em face das crescentes
demandas tecnológicas e das consequências significativas de falhas nesses
sistemas.

Os objetivos delinearam a busca por compreensão e aprofundamento em


desafios, soluções, teorias e práticas fundamentais. Ao definir o Sistema Crítico
de Software de maneira concisa, estabeleceu-se uma base clara para as
discussões subsequentes.

Em conclusão, o desenvolvimento de sistemas críticos é uma jornada


contínua de aprendizado, adaptação e inovação. Ao abordar desafios com
soluções proativas, integrando teorias robustas e aprendendo com experiências
anteriores, as equipes podem contribuir para a construção de sistemas que não
apenas atendam às demandas técnicas, mas também garantam a confiança e
segurança nas infraestruturas cruciais para a sociedade. O caminho à frente
requer comprometimento constante com a excelência, refletindo o entendimento
de que cada linha de código pode ter implicações profundas.
42

Referências Bibliográficas

➢ Sommerville, I. (2011). Engenharia de Software. Pearson.

➢ Pressman, R. S. (2014). Engenharia de Software: Uma Abordagem


Profissional. AMGH Editora.

➢ Pfleeger, S. L., & Atlee, J. M. (2009). Software Engineering: Theory and


Practice. Pearson.

➢ Bass, L., Clements, P., & Kazman, R. (2012). Software Architecture in


Practice. Addison-Wesley.

➢ ISO/IEC 25010:2011. Systems and Software Quality Models. International


Organization for Standardization.

➢ McConnell, S. (2004). Code Complete: A Practical Handbook of Software


Construction. Microsoft Press.

➢ Boehm, B. W. (1988). A Spiral Model of Software Development and


Enhancement. ACM SIGSOFT Software Engineering Notes.

➢ IEEE Computer Society. (2018). Guide to the Software Engineering Body of


Knowledge (SWEBOK). IEEE.

➢ Schwaber, K., & Sutherland, J. (2017). The Scrum Guide. Scrum.org.


➢ ISO/IEC 27001:2013. Information technology – Security techniques –
Information security management systems – Requirements. International
Organization for Standardization.

➢ Davis, F. D. (1989). Perceived Usefulness, Perceived Ease of Use, and User


Acceptance of Information Technology. MIS Quarterly.

➢ Pressman, R. S. (2014). Engenharia de Software: Uma Abordagem


Profissional. AMGH Editora.

➢ Pfleeger, S. L., & Atlee, J. M. (2009). Engenharia de Software: Teoria e


Prática. Pearson.
➢ Bass, L., Clements, P., & Kazman, R. (2012). Arquitetura de Software em
Prática. Addison-Wesley.
➢ McConnell, S. (2004). Code Complete: Guia Prático para Construção de
Software. Alta Books.
43

Apêndice

Este apêndice visa proporcionar uma compreensão mais aprofundada dos


termos e conceitos essenciais abordados ao longo deste trabalho sobre o
desenvolvimento de sistemas críticos de software.

1. Defina o que é um "Sistema Crítico de Software".


Resposta: Um sistema crítico de software é uma aplicação ou plataforma
cujo mau funcionamento ou falha pode ter impactos significativos, incluindo
riscos à segurança, perda de vidas, danos ambientais ou prejuízos financeiros
substanciais.

2. Explique a importância da "Teoria dos Sistemas Complexos" no


contexto de sistemas críticos.
Resposta: A Teoria dos Sistemas Complexos destaca a interconexão e
interdependência entre os componentes de um sistema. No contexto de
sistemas críticos, compreender essa complexidade é vital, pois falhas em
qualquer parte do sistema podem ter efeitos cascata, impactando negativamente
o sistema como um todo.

3. Qual é a principal característica das "Metodologias Ágeis" e como


elas se relacionam com o desenvolvimento de sistemas críticos?
Resposta: A principal característica das Metodologias Ágeis é a ênfase na
flexibilidade, colaboração e entrega incremental. Elas se relacionam com o
desenvolvimento de sistemas críticos ao permitirem adaptação rápida a
mudanças nos requisitos, possibilitando uma abordagem iterativa que atenda às
demandas dinâmicas desses sistemas.

4. O que significa a sigla "ISO/IEC 27001" e qual é sua relevância no


desenvolvimento de sistemas críticos?
Resposta: A sigla "ISO/IEC 27001" refere-se a um padrão internacional
para sistemas de gestão de segurança da informação. Sua relevância no
desenvolvimento de sistemas críticos reside na definição de requisitos e boas
práticas que garantem a segurança e integridade dos dados.
44

5. Explique o propósito dos "Casos de Sucesso e Fracasso" no


contexto de sistemas críticos.
Resposta: Os casos de sucesso e fracasso fornecem lições valiosas para
equipes de desenvolvimento, destacando boas práticas e desafios a serem
evitados. No contexto de sistemas críticos, esses casos oferecem insights sobre
como abordar problemas complexos e alcançar resultados positivos.

6. O que envolve a "Análise de Ameaças e Riscos" no desenvolvimento


de sistemas críticos?
Resposta: A análise de ameaças e riscos envolve identificar potenciais
ameaças à segurança e riscos operacionais associados a um sistema crítico.

7. Como a "Criptografia Robusta" contribui para a segurança em


sistemas críticos?
Resposta: A criptografia robusta protege dados sensíveis por meio de
algoritmos seguros, garantindo que apenas usuários autorizados possam
acessar e compreender as informações. Em sistemas críticos, isso é essencial
para preservar a confidencialidade e integridade dos dados.

8. Qual é a finalidade dos "Testes de Penetração" e como eles podem


ser aplicados em sistemas críticos?
Resposta: Os testes de penetração têm como finalidade identificar
vulnerabilidades de segurança em um sistema. Em sistemas críticos, eles são
aplicados de maneira controlada para simular ataques, permitindo que as
equipes identifiquem e corrijam possíveis pontos fracos antes que sejam
explorados por agentes maliciosos.

O glossário no apêndice serve como uma ferramenta de referência para


consolidar e reforçar o entendimento dos termos-chave apresentados ao longo
do trabalho, auxiliando na compreensão mais profunda dos conceitos discutidos.
45

Anexo

Anexo A: Instrumento de Coleta de Dados

Neste anexo, apresentamos o instrumento de coleta de dados utilizado para a


pesquisa realizada no contexto do desenvolvimento de sistemas críticos de
software.

Questionário de Entrevista
Parte I: Perfil do Entrevistado
1. Nome:
• Resposta: Mariana da Rocha Silva
2. Cargo/Ocupação:

• Desenvolvedor

• Gerente de Projeto

• Analista de Segurança

• Outro (Especificar): __________


3. Experiência Profissional:

• Menos de 1 ano

• 1-3 anos

• 3-5 anos

• Mais de 5 anos

Parte II: Conhecimento sobre Sistemas Críticos de Software

4. Defina, na sua compreensão, o que caracteriza um "Sistema Crítico


de Software".
Resposta: Um sistema crítico de software é aquele cujo mau funcionamento
pode resultar em consequências graves, como perda de vidas, danos ambientais
ou prejuízos financeiros significativos.
46

5. Como a Teoria dos Sistemas Complexos pode ser aplicada no


desenvolvimento de sistemas críticos?
Resposta: A Teoria dos Sistemas Complexos ajuda a entender as interconexões
entre os componentes do sistema crítico, permitindo uma abordagem mais
abrangente e identificação de possíveis pontos de falha.

Parte III: Metodologias de Desenvolvimento

6. Você possui experiência com Metodologias Ágeis no


desenvolvimento de sistemas críticos?

• Sim

• Não
7. Na sua opinião, quais são os principais benefícios e desafios ao
aplicar Metodologias Ágeis em sistemas críticos?
Resposta: Os benefícios incluem flexibilidade e adaptação rápida a mudanças.
Os desafios podem incluir a necessidade de documentação rigorosa e garantia
de segurança durante iterações rápidas.

Parte IV: Segurança e Proteção de Dados


8. Qual a importância da ISO/IEC 27001 no contexto de sistemas
críticos?
Resposta: A ISO/IEC 27001 é crucial para garantir práticas de segurança da
informação robustas, garantindo a integridade e confidencialidade dos dados em
sistemas críticos.
9. Descreva a relevância da criptografia robusta na segurança de
sistemas críticos.
Resposta: A criptografia robusta é essencial para proteger dados sensíveis
contra acessos não autorizados, garantindo a segurança dos sistemas críticos.

Parte V: Análise de Casos


10. Cite um exemplo de caso de sucesso no desenvolvimento de um
sistema crítico. O que contribuiu para o sucesso desse projeto?
47

Resposta: Um exemplo hipotético seria o sistema de controle de tráfego aéreo


XYZ, que obteve sucesso devido à colaboração eficaz entre equipes, testes
extensivos e adoção de práticas ágeis.
11. Cite um exemplo de caso de fracasso em um projeto de sistema
crítico. Quais foram as lições aprendidas?
Resposta: Um exemplo hipotético seria o sistema bancário ABC, que falhou
devido à falta de testes de penetração adequados, resultando em vazamento de
dados. A lição aprendida foi a importância de investir em segurança desde o
início.

Parte VI: Considerações Finais


12. Na sua visão, quais são os principais desafios futuros no
desenvolvimento de sistemas críticos de software?
Resposta: Os desafios futuros podem incluir lidar com a crescente complexidade
tecnológica, garantir a conformidade com regulamentações e integrar inovações
sem comprometer a segurança.

Você também pode gostar