Escolar Documentos
Profissional Documentos
Cultura Documentos
Ministério da Educação
Instituto Politécnico Privado do Sequele
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
____________________________________
Docente
Luanda
2023
II
Integrantes
Dedicatória
Agradecimentos
À Deus por nossas vidas e por permitir termos saúde para concluir este
trabalho.
Epígrafe
Resumo
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.
Lista de ilustrações
Lista de tabelas
SC Sistema critico
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
Introduçã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
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
Objetivo Geral
Objetivos Específicos:
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
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.
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
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.
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
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.
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.
Componentes e Estrutura
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
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.
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
Fases do Desenvolvimento
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
Casos de Sucesso
Casos de Fracasso
39
Conclusão
Considerações Finais
Referências Bibliográficas
Apêndice
Anexo
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
• Menos de 1 ano
• 1-3 anos
• 3-5 anos
• Mais de 5 anos
• 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.