Arquitetura de software vs Arquitetura do sistema x Diagramas de classes?

11

Estou bastante confuso sobre os seguintes termos:

Arquitetura de software

A arquitetura de aplicativos de software é o processo de definir uma solução estruturada que atenda a todos os requisitos técnicos e operacionais, além de otimizar atributos comuns de qualidade, como desempenho, segurança e capacidade de gerenciamento. Envolve uma série de decisões baseadas em uma ampla variedade de fatores, e cada uma dessas decisões pode ter um impacto considerável na qualidade, desempenho, manutenção e sucesso geral do aplicativo. ( microsoft )

Arquitetura do sistema

Uma arquitetura de sistema é um modelo conceitual que define a estrutura, o comportamento e mais visualizações de um sistema. 1 Uma descrição da arquitetura é uma descrição formal e representação de um sistema, organizada de maneira a apoiar o raciocínio sobre as estruturas e os comportamentos do sistema ( wiki )

Diagramas de classe

Na engenharia de software, um diagrama de classes na Unified Modeling Language (UML) é um tipo de diagrama de estrutura estática que descreve a estrutura de um sistema, mostrando as classes do sistema, seus atributos, operações (ou métodos) e os relacionamentos entre objetos. ( wiki )

Se eu ler essas descrições, tudo isso descreverá as interações entre os diferentes módulos do aplicativo. No entanto, quais são as diferenças entre estes?
O que eu acho / tentei comparar estes termos :

  • Os diagramas de classes não são uma forma de arquitetura do sistema, porque a descrição acima ( structure, behavior, and more views of a system) implica que nenhum detalhe de implementação está presente em uma arquitetura, enquanto os diagramas de classes descrevem a implementação e provavelmente estão mais na direção do design do que na arquitetura?
  • Eu acho que a arquitetura do sistema é uma arquitetura que também inclui interações externas (como banco de dados), enquanto a arquitetura do software se concentra no próprio aplicativo?
KingBoomie
fonte
1
Talvez Diagramas de Classes são uma saída da atividade de Arquitetura de Software, em uma maneira similar que plantas de um edifício são uma saída do arquiteto do edifício ...
FrustratedWithFormsDesigner

Respostas:

7

A arquitetura do sistema descreve os componentes do sistema. Por exemplo, você pode ter um sistema de entrada de pedidos que consiste em:

Front-end da Web, serviço de camada de negócios e armazenamento de dados.

Portanto, você deve ter um diagrama de alto nível mostrando isso.

Arquitetura de aplicativos de software descreve a arquitetura de um componente específico. Por exemplo, um dos componentes do sistema de entrada de pedidos é o front end da Web. A arquitetura do aplicativo mostrará as várias camadas e interações desse componente. Interface do usuário responsiva, Model View Controller, chamadas de serviço da web, como o log será realizado etc. Ele fornece uma idéia de cada componente que será construído e as camadas desse componente que fazem parte do sistema maior.

geralmente são criados um diagrama mais detalhado mostrando como esse componente será construído.

Por fim, os diagramas de classes se aprofundam na arquitetura de aplicativos de software. Por exemplo, como é o contrato para a interface de log? Como o View interagirá com o Controlador ... e assim por diante. Isso detalhará mais a arquitetura do aplicativo de software para um componente específico do sistema.

Deve haver muitos deles se o componente em particular for grande e complexo.

Jon Raynor
fonte
2

Alguns pontos adicionais:

  • Sistema é o termo mais amplo e normalmente o mais alto, menos detalhado.
  • Parte do sistema pode ser classificada como software.
  • Parte do software pode ser descrita usando diagramas de classes.

Por último, mas não menos importante: a arquitetura é sobre escolhas únicas que são difíceis ou impossíveis de serem recuperadas posteriormente sem reconstruir tudo. A melhor definição de arquitetura, que a diferencia do design, é "tudo o que é realmente caro mudar". Portanto, na arquitetura, você normalmente encontrará a opção para uma linguagem de programação, o sistema operacional, a marca de um banco de dados relacional, o que quer que prenda você a um tipo de solução. Portanto, o que classifica como arquitetura também depende do próprio sistema e de quão (in) flexível é em relação ao aspecto.

Martin Maat
fonte
0

Os diagramas de classes são bem diferentes do restante dos dois termos - eles mostram o que as classes oferecem a outras classes e como elas interagem. No entanto, os termos 'arquitetura do sistema' e 'arquitetura de software' criam confusão e exigem mais esclarecimentos.

É importante perceber que um 'sistema' se refere não apenas a componentes de software, mas também a outros componentes, como componentes de hardware. Se um sistema contiver apenas um sistema de software, não haverá diferença entre os dois termos. No entanto, obviamente, se um sistema contiver outros componentes que não sejam de software, a arquitetura do software será significativamente diferente da arquitetura do sistema.

Tushar
fonte
A arquitetura do sistema também deve conter algo como um módulo GUI? @Tushar
KingBoomie
Sim, pode e não precisa ser um componente de software. @RickBeeloo
Tushar
Mas você precisaria de uma classe no software para aceitar a entrada do usuário e exibir algo para o usuário? Portanto, também deve ser um componente de software?
22719 KingBoomie
Sim e Não. Nem todos os consumidores de um sistema de software são seres humanos :)
Tushar