Estilos e Vistas da Arquitetura de Software

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Qual das seguintes características não faz parte dos requisitos não funcionais considerados na arquitetura de software?

  • Desempenho
  • Escalabilidade
  • Complexidade do código (correct)
  • Segurança

Na definição de arquitetura de software, o que compõe a estrutura de um sistema?

  • Apenas as conexões entre os módulos
  • Componentes, conexões e suas interações (correct)
  • Apenas os componentes
  • Os requisitos e as restrições

Qual das visões arquiteturais se concentra na infraestrutura de hardware onde o software será executado?

  • Visão física (correct)
  • Visão de segurança
  • Visão lógica
  • Visão de desempenho

Os conectores na arquitetura de software representam o que?

<p>Interações entre os componentes (A)</p> Signup and view all the answers

Qual elemento é parte integrante da arquitetura de software e assegura a interação adequada entre componentes?

<p>Restrições e regras (B)</p> Signup and view all the answers

Qual é a principal função da arquitetura na engenharia de software?

<p>Conectar todas as etapas do ciclo de vida do desenvolvimento (C)</p> Signup and view all the answers

Qual técnica é mencionada para avaliar a eficácia da arquitetura proposta?

<p>Análise de Trades da Arquitetura (ATAM) (A)</p> Signup and view all the answers

Os estilos arquiteturais na engenharia de software são utilizados para:

<p>Guiar a organização e a interação dos componentes de um sistema (C)</p> Signup and view all the answers

Como a arquitetura influencia a fase de manutenção do software?

<p>Oferece uma base consistente para a atualização do sistema (C)</p> Signup and view all the answers

Qual dos seguintes itens não é uma função atribuída à arquitetura de software?

<p>Estruturar o código sem considerar padrões (A)</p> Signup and view all the answers

Qual é uma desvantagem da arquitetura monolítica?

<p>Erro em um componente afeta todo o sistema (C)</p> Signup and view all the answers

Qual afirmação é verdadeira sobre a arquitetura de microserviços?

<p>Sistemas podem ser facilmente escalados de forma independente (A)</p> Signup and view all the answers

Qual é um benefício principal da arquitetura baseada em eventos?

<p>Desempenho eficiente em tempo real (C)</p> Signup and view all the answers

Na arquitetura de microserviços, qual é uma desvantagem significativa?

<p>Dificuldade em gerenciar muitos serviços distintos (B)</p> Signup and view all the answers

O que é um aspecto crítico da arquitetura monolítica?

<p>Dificuldade em escalar e atualizar o sistema conforme o crescimento (A)</p> Signup and view all the answers

Qual é a forma de comunicação utilizada na arquitetura baseada em eventos?

<p>Assíncrona através de mensagens (D)</p> Signup and view all the answers

Como a comunicação na arquitetura de microserviços normalmente ocorre?

<p>Utilizando APIs entre serviços diferentes (C)</p> Signup and view all the answers

Qual é uma desvantagem da arquitetura em camadas relacionada à comunicação entre as camadas?

<p>Sobrecarga de desempenho devido à comunicação (D)</p> Signup and view all the answers

Qual das opções a seguir é uma vantagem da arquitetura Cliente-Servidor?

<p>Possibilidade de escalabilidade ao adicionar mais clientes (D)</p> Signup and view all the answers

Na arquitetura em camadas, qual é um ponto positivo relacionado à gestão do sistema?

<p>Facilidade de compreensão e manutenção (D)</p> Signup and view all the answers

Qual é um fator que pode ser considerado uma desvantagem na arquitetura Cliente-Servidor?

<p>Dependência da rede para operação (A)</p> Signup and view all the answers

O que pode ser uma consequência de uma dependência rígida nas camadas de um sistema em camadas?

<p>Necessidade de mudanças em múltiplas camadas para alterações (D)</p> Signup and view all the answers

Qual é um exemplo de componente que pode ser reutilizado em sistemas que utilizam arquitetura em camadas?

<p>A lógica de negócios da aplicação (A)</p> Signup and view all the answers

O que a arquitetura em camadas facilita em relação aos testes de software?

<p>Os testes individuais de cada camada (C)</p> Signup and view all the answers

Como a arquitetura Cliente-Servidor pode melhorar a interação entre dispositivos?

<p>Por permitir a distribuição de processamento entre servidor e cliente (B)</p> Signup and view all the answers

Flashcards

Qual é o papel da arquitetura de software?

A arquitetura de software é a base do desenvolvimento e influencia todas as etapas do ciclo de vida, desde análise de requisitos até manutenção.

Como a arquitetura de software é representada?

Diagramas e documentos descrevem a estrutura e o comportamento do sistema, mostrando como os componentes interagem.

Como a arquitetura de software é avaliada?

Técnicas como ATAM (Architecture Tradeoff Analysis Method) avaliam a eficácia da arquitetura proposta, analisando seus pontos fortes e fracos.

Por que a documentação e comunicação são importantes na arquitetura de software?

A documentação e comunicação são essenciais para garantir que todos os envolvidos no projeto compreendam a arquitetura.

Signup and view all the flashcards

O que são estilos arquiteturais de software?

Padrões de design que definem como organizar e conectar componentes de um sistema, atendendo a necessidades e restrições específicas.

Signup and view all the flashcards

Arquitetura de Software

Um conjunto de decisões estruturais e organizacionais que definem o design e a operação de um sistema de software. Essencial para o processo de engenharia de software, funcionando como um plano que guia o desenvolvimento, a evolução e a manutenção de um sistema.

Signup and view all the flashcards

Componentes de software

Parte independente do sistema que possui funções específicas, por exemplo, bibliotecas, serviços ou classes.

Signup and view all the flashcards

Conexões de software

Representam as interações entre os componentes, como chamadas de funções, APIs ou mensagens.

Signup and view all the flashcards

Restrições e Regras de Arquitetura de Software

Regras que definem como os componentes e conectores devem interagir, garantindo que o sistema atenda aos requisitos desejados.

Signup and view all the flashcards

Visões Arquiteturais

Diferentes perspectivas para visualizar a arquitetura, focalizando em aspectos como comportamento, funcionalidades, infraestrutura e etc.

Signup and view all the flashcards

Arquitetura em Camadas

Organiza o sistema em camadas empilhadas, onde cada camada fornece serviços à camada acima e consome serviços da camada abaixo. Exemplos comuns incluem camadas de apresentação, lógica de negócios e acesso a dados.

Signup and view all the flashcards

Vantagem da Arquitetura em Camadas: Separação de Responsabilidades

Facilita a manutenção e o entendimento do sistema, pois as responsabilidades são separadas.

Signup and view all the flashcards

Vantagem da Arquitetura em Camadas: Facilidade de Teste

Permite testar cada camada individualmente, garantindo que cada parte funciona corretamente antes da integração.

Signup and view all the flashcards

Vantagem da Arquitetura em Camadas: Reutilização

Componentes das camadas podem ser reutilizados em outros sistemas, reduzindo o tempo e o esforço de desenvolvimento.

Signup and view all the flashcards

Desvantagem da Arquitetura em Camadas: Desempenho

A comunicação entre camadas pode adicionar sobrecarga, impactando o desempenho do sistema.

Signup and view all the flashcards

Desvantagem da Arquitetura em Camadas: Dependência Rígida

Alterações em uma camada podem exigir mudanças em outras camadas, aumentando a complexidade do sistema.

Signup and view all the flashcards

Arquitetura Cliente-Servidor

Divide o sistema em dois componentes principais: servidor e cliente, onde o servidor processa dados e fornece serviços, e o cliente consome esses serviços.

Signup and view all the flashcards

Vantagem da Arquitetura Cliente-Servidor: Distribuição

Permite interação entre dispositivos distintos, permitindo uma maior flexibilidade e alcance.

Signup and view all the flashcards

Arquitetura Monolítica

Um estilo de arquitetura onde todos os componentes do sistema são desenvolvidos e implementados como um único bloco de código.

Signup and view all the flashcards

Vantagens da Arquitetura Monolítica

Vantagens da Arquitetura Monolítica: Simplicidade no desenvolvimento e implantação em sistemas pequenos e desempenho otimizado devido à ausência de sobrecarga de comunicação entre serviços.

Signup and view all the flashcards

Desvantagens da Arquitetura Monolítica

Desvantagens da Arquitetura Monolítica: Dificuldade em escalar e atualizar à medida que o sistema cresce, além de perder confiabilidade pois um erro pode afetar todo o sistema.

Signup and view all the flashcards

Arquitetura de Microserviços

Um estilo de arquitetura que divide o sistema em pequenos serviços independentes, cada um com sua própria lógica e banco de dados, comunicando-se via APIs.

Signup and view all the flashcards

Vantagens da Arquitetura de Microserviços

Vantagens da Arquitetura de Microserviços: Facilidade na escalabilidade de serviços de forma independente e manutenção mais simples, pois alterações em um serviço não afetam outros.

Signup and view all the flashcards

Desvantagens da Arquitetura de Microserviços

Desvantagens da Arquitetura de Microserviços: Maior complexidade na gestão de muitos serviços e possibilidade de latência na comunicação entre os serviços.

Signup and view all the flashcards

Arquitetura Baseada em Eventos (Event-Driven)

Um estilo de arquitetura onde os componentes do sistema se comunicam através de eventos assíncronos, ou seja, um evento é gerado por um produtor e consumido por um ou mais consumidores.

Signup and view all the flashcards

Study Notes

Software Architecture Styles

  • Software architectures are a set of structural and organizational decisions that define the design and operation of a software system.
  • They play a fundamental role in the software engineering process, acting as a plan that guides development, evolution, and maintenance of a system.
  • Key architectural components include: Components (or Modules): These are independent parts of the system that perform specific functions, like libraries, services, classes, or other software elements.
  • Conexões (or Conectores): These represent interactions between components, such as function calls, APIs, messages, or events.
  • Restrições e Regras: These are guidelines defining how components and connectors interact to ensure the system meets desired requirements

Software Architecture Views

  • Architectural views represent the architecture from different perspectives:
  • Logical View: Focuses on system behavior and functionalities.
  • Physical View: Describes the hardware infrastructure where the software will run.
  • Development View: Shows how the software is organized for construction and maintenance.
  • Process View: Considers system execution, concurrency, and communication aspects.

Importance of Software Architecture

  • Provides a Foundation for Decision Making: Helps in making decisions about technologies, frameworks, programming languages, and design patterns.
  • Enhances Evolution and Maintainability: Facilitates adding new features, correcting errors, and adapting to changes.
  • Improves Communication: Creates a common model for developers, managers, clients, and other stakeholders to understand and collaborate.
  • Supports Quality Assurance: Helps in meeting quality requirements, such as performance, scalability, reliability, and security.

Software Architecture Creation Process

  • Understanding Requirements: Gathering and analyzing functional and non-functional requirements.
  • Modeling: Representing the architecture with diagrams and documents explaining its structure and behavior.
  • Architectural Style Selection: Choosing appropriate architectural styles (e.g., client-server, microservices, monolithic) based on requirements.
  • Evaluation: Employing techniques to assess the effectiveness of the proposed architecture.
  • Documentation and Communication: Documenting and presenting the architecture to ensure everyone understands and can contribute.

Relation with Software Engineering

  • Architecture connects all stages of the software development life cycle.
  • It influences requirements analysis, design, implementation, testing, and maintenance phases.

Architectural Styles

  • Different architectural styles exist for specific needs:
  • Monolithic: Application logic is organized as a single unit, making it easy to develop but complex to maintain and scale.
  • Microservices: Architecture is composed of small, independent services enabling continuous delivery but creating complexity in communication management.
  • Service-Oriented (SOA): Re-usable services communicate via standardized protocols facilitating easier integration across platforms but can have increased communication overhead.
  • Layered: Organizing application logic into separate logical layers.
  • Client-server: Dividing an application into separate clients and servers.
  • Component-Based: Separating system into a core and separate modules for extended functionality.
  • Event-Driven: Components respond to events rather than predefined sequences.
  • Distributed Systems: Splitting data and processes into locations to achieve fault tolerance and scalability.
  • Domain-Driven Design (DDD): Aligning architecture with business domain, leading to better maintainability.
  • Hexagonal/Clean Architecture: Separating concerns of data access from application logic.
  • Interpreter: Converts high-level code into executable instructions.
  • Publish-Subscribe: Components are connected by events.
  • Model-View-Controller (MVC) and Model-View-Presenter (MVP): Architectures for separation of UI and business logic.
  • Space-Based: Distributes data and processes into different spaces.
  • CQRS (Command Query Responsibility Segregation): Separates data modification and retrieval.
  • Pipe-and-Filter: Passing data through a sequence of independent filtering processes.
  • Shared Repository: Placing the shared data in a central location.

Cloud-Based Architecture

  • Cloud Computing: Provides on-demand IT resource capability as a service.
  • Advantages: Scalability, cost-effectiveness, and reduced infrastructure costs.
  • Disadvantages: Vendor lock-in, security concerns, and possible latency issues.

Fog Computing

  • Fog Computing: Processes data near the user thereby decreasing latency and network traffic.
  • Advantages: Improved data processing speeds and reduced bandwidth usage.

Cloud-Fog Hybrid Architecture

  • Combines both cloud computing and fog computing advantages, using fog computing near the data source and cloud computing for processing and storage needs.
  • A combination of these paradigms allows more distributed processing power with a balance of responsiveness from near data sources and scalability of cloud computing.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

Arquiteturas de SW PDF

More Like This

Use Quizgecko on...
Browser
Browser