O QUE E ARQUITETURA DE SOFTWARE ? é o processo de
converter características de software como flexibilidade,
escalabilidade, viabilidade, reutilização e segurança em uma
solução estruturada que atenda às expectativas técnicas e de
negócios.Essa definição nos leva a perguntar sobre as
características de um software que pode afetar o design de
uma arquitetura de software. Há uma longa lista de
características que representam principalmente os requisitos
comerciais ou operacionais, além dos requisitos técnicos.
Características: as características do software descrevem os
requisitos e as expectativas de um software nos níveis
operacional e técnico. Assim, quando um líder de produto diz que
está competindo em um mercado de rápida mudança e deve
adaptar seu modelo de negócios rapidamente. O software deve
ser “extensível, modular e de manutenção adequada” se uma
empresa lidar com solicitações urgentes que precisam ser
concluídas com êxito em questão de tempo. Como arquiteto de
software, observe que o desempenho e a baixa tolerância a
falhas, escalabilidade e confiabilidade são suas principais
características. Agora, depois de definir as características
anteriores, o proprietário da empresa informa que eles têm um
orçamento limitado para esse projeto, outra característica
aparece aqui, que é “a viabilidade”.
Design de Software
O QUE E DESINGN DE SOFTWARE ? é a parte
da engenharia de software que se encarrega de
fazer todo o planejamento anterior ao
desenvolvimento, incluindo a definição da
arquitetura do software, e transformar tudo
em um documento ou conjunto de documentos
capazes de serem interpretados diretamente
pelo programador.
Características: O design de software é um processo criativo. Uma
tentativa de organizar e padronizar os problemas através de
elementos comuns. Diante deste cenário príncipios do SOLID e os
Design Patterns do GOF se materializam. São abordagens bem
sucedidas. Que resolvem problemas com caracteristicas em comum.
É difícil avaliar se um design está certo ou errado. Sua natureza é
interpretativa. Depende do observador. Por isso a utilização de
padrões já amplamente adotado aumenta as chances de sucesso e
garante facilidades na manutenção do código.
Diferenças entre eles !
Lembre-se de que existe uma diferença entre um arquiteto de
software e um desenvolvedor de software. Os arquitetos de
software geralmente têm líderes de equipe experientes, que têm
um bom conhecimento sobre as soluções existentes que os ajudam
a tomar decisões corretas na fase de planejamento. Um
desenvolvedor de software deve saber mais sobre design de
software e bastante sobre arquitetura de software para facilitar a
comunicação interna dentro da equipe.
Relação entre eles !
Arquitetura e design de software são abstrações do mundo real.
Traduzidos em software. Sua natureza, quase que sempre, advém
de problemas sociais. Automatizar o processo atual feito por
pessoas. Construídos a partir da complexidade do negócio, feito por
humanos. Seu entendimento depende do observador. Nem sempre
para duas soluções haverá uma obrigatoriamente errada.