More than Just Lines on a Map: Best Practices for U.S Bike Routes
Escolher a arquitetura adequada para resolver um determinado problema de software.
1. Resumo de como escolher a arquitetura adequada para resolver um
determinado problema de software.
Para escolher uma arquitetura de software adequada para resolver um
determinado problema de software é necessário estudar vários assuntos, onde seus
principais seriam: ”o que é arquitetura de software”, “a motivação para desenvolver
uma arquitetura de software”, “os papeis do arquiteto de software”, “MVS (Modelo
Visual do Sistema)”, e “ as visões do sistema (Modelo 4+1)”, portanto segue abaixo,
cada tópico e suas devidas importâncias dentro da arquitetura de software:
O que é arquitetura de software
Arquitetura de um software é a estrutura do sistema que compreende os
elementos de software, o relacionamento entre estes elementos, e as propriedades
externamente visíveis destes elementos.
A documentação da arquitetura do software facilita: a comunicação entre os
stakeholders. Registra as decisões iniciais acerca do projeto de alto-nível, e permite
o reuso do projeto dos componentes e padrões entre projetos (arquitetura de
software é centrada na ideia da redução da complexidade através da abstração e
separação de interesses).
Todos esses fatores compreendem o projeto no nível arquitetural e estão
diretamente relacionados com a organização do sistema e, portanto, afetam os
atributos de qualidade (também chamados de requisitos não funcionais) como
desempenho, portabilidade, confiabilidade, disponibilidade, entre outros.
A motivação para desenvolver uma arquitetura de software
A motivação para desenvolver uma arquitetura de software é necessária para
que no início e durante o projeto seja possível encontrar e mitigar os riscos
referentes à aplicação, validando e, atendendo aos requisitos necessários
estruturando a aplicação, possibilitando a reutilização, assim como, também garantir
prazos, e custos definidos.
2. Os papeis do arquiteto de software
O arquiteto de software tem um papel de suma importância para estratégia
adotada pela empresa. Ele precisa ter profundo conhecimento do domínio, das
tecnologias existentes e de processos de desenvolvimento de software.
Dentre suas principais responsabilidades estão escolher um padrão de
desenvolvimento, definir um framework para ser utilizado, ter contato e
conhecimento sobre outras aplicações na organização e enxergar a aplicação e
maneira mais abrangente. Ele irá garantir que o padrão de arquitetura implantando
no sistema seja seguido até o fim. Quebrar a complexidade do desenvolvimento em
pedaços menores, entender as funções e as interações e dependências de cada
componente, também são responsabilidades do arquiteto.
Para assumir o papel do arquiteto é necessário um profissional com um
perfil com características e habilidades como:
Pensamento estratégico: Muitas decisões são tomadas visando o retorno
proporcionado à empresa. Conhecimento de negócio e visão estratégica são
imprescindíveis para a tomada de boas decisões.
Interação Sistêmica: O contato com outros sistemas inclusive em linguagens
diferentes e o conhecimento de seus componentes é necessário.
Design: Ditar padrões, incluindo código, ferramentas, etc. Com objetivo
estratégico.
Comunicação: importante para entender o negócio e passar sua visão para a
equipe.
O arquiteto tem vários papéis no decorrer do desenvolvimento do
sistema, estes são:
- Analista de Negócios (Requisitos): Interação para compreensão e colaboração
para definição dos requisitos.
3. - Gerente de Projeto: Irá avaliar o progresso do projeto. Provém informações
técnicas, feedback, conselhos e avalia riscos.
- Especialista em Tecnologia: Obtém informações detalhadas sobre uma tecnologia
e consegue aplicá-las onde necessário.
- Desenvolvedor: Liderança técnica para garantir aderência à arquitetura, auxilia,
acompanha e revisa os documentos gerados pela equipe. Envolvem-se testes de
sistemas integrados e desenvolver código.
MVS (Modelo Visual do Sistema)
Modelo Visual do Sistema é a forma de representar visualmente os elementos
do sistema, como eles se relacionam e as propriedades que são visíveis de forma
externa. Tem como objetivo fornecer a visão geral do sistema, de modo a facilitar a
compreensão dos elementos importantes de um software. Torna-se extremamente
importante o uso desse modelo para construir sistemas complexos e desafiadores.
Possui como vantagens o aumento do reuso, diminuir o trabalho e redundância,
mitigar os riscos mais cedo possível, reduzir custos de desenvolvimento,
manutenção e evolução do software.
A modelagem tem como objetivo a compreensão de sistemas complexos,
explorar e comparar as alternativas de desenho a um baixo custo, capturar
requisitos com precisão e comunicar decisões se ambiguidade.
As visões do sistema (Modelo 4+1)
O Modelo 4+1 são as visões utilizadas para descrever e demostrar o sistema sobre
várias perspectivas diferentes, tais elas: do usuário, do desenvolvedor os gerentes
entre outros participantes do projeto.
As quatro visões são: “1 - Visão Lógica”, “2 - Visão de Desenvolvimento”, “3 - Visão
de Processo”, “4 - Visão Física”, a visão de caso de uso é utilizada para ilustrar a
arquitetura que seria a visão +1.
Abaixo está a representação do Modelo 4+1:
4. O diagrama explica a topologia do modelo 4+1 e os pontos de importâncias de cada
visão, citando também exemplos de como podem ser aplicadas as visões.
O que é de suma importância para atingir esta competência
Conhecer todos estes conceitos citados no resumo acima, onde seus principais
seriam: “o que é arquitetura de software”, “a motivação para desenvolver uma
arquitetura de software”, “os papeis do arquiteto de software”, “MVS (Modelo Visual
do Sistema)”, e” as visões do sistema (Modelo 4+1)”, tendo conhecimento destes
temas é possível ter um bom embasamento para escolher a arquitetura adequada
para resolver um determinado problema de software. E achar a solução mais
plausível depois de analisar todos estes conceitos e elaborar o projeto de acordo
com as metodologias citadas. Um ótimo ponto para conseguir solucionar este
problema é possuir as habilidades de um bom arquiteto de software como: o
pensamento estratégico , interação sistêmica , design e comunicação , e as que não
possuir tentar desenvolver ao longo de suas experiências. Além disso é
extremamente necessário ser um eterno aprendiz.