Olá sejam bem-vindos ao canal engenharia de software com ênfase o ML eu sou o professor Janes Guedes e eu já atuo na área de modelagem de software a vários anos eu tenho quatro livros publicados sobre o assunto e eu já ministrei diversas palestras e cursos técnicos so modelagem de software utilizando a linguagem uml na aula de hoje eu pretendo dar continuidade ao tema sobre arquiteturas de software dessa vez enfocando principalmente estruturas e visões arquiteturais Então vamos iniciar o nosso conteúdo eu vou apresentar alguns conceitos básicos sobre arquiteturas de software baseados principalmente no livro sobre arquiteturas
de software do Bass então de acordo com B eh uma arquitetur de software ele é um conjunto de estruturas de software esse conjunto é formado por módulos componentes e conectores e alocações vamos falar um pouco sobre cada um deles então os módulos eles são estruturas estáticas eles enfocam responsabilidades específicas e são a base de trabalho para as equipes de desenvolvimento o módulo ele pode conter diversos componentes ainda módulos costumam ser um pouco maiores ah ah com relação aos componentes e conectores eles são estruturas dinâmicas e determinam como ah os elementos o eh interagem os seus
elementos internos interagem para executar as funcionalidades que eles encapsulam Então nesse sentido com relação à representação de uma arquitetura de software de acordo com B os componentes serão sempre entidades executáveis mas de acordo com outros autores Inclusive eu próprio componentes não necessariamente são somente de dados executáveis em outras situações eles podem representar arquivos como arquivos de código fonte arquivos de configuração arquivos eh auxiliares como arquivos de help a bibliotecas dlr apis etc Ah mas ok vamos continuar e nós temos as alocações que basicamente determinam de que maneira os componentes e módulos serão mapeados para as
estruturas de software nos ambientes a aos quais eles se destinam esses ambientes podem ser o ambiente da organização o ambiente de desenvolvimento enquanto o software ainda está sendo desenvolvido ou o ambiente de execução onde o software será executado realmente Ah ainda segundo be uma arquitetura de software é uma abstração uma vez que ela suprime algumas informações eh ela representa os elementos do software e como esses elementos se relacionam mas ela omite certas informações que não são consideradas úteis para a compreensão do software no sentido de compreender a arquitetura em que o software está sendo estruturado
ah e agora vou começar a falar sobre estruturas e visões arquiteturais eh então de acordo com be eh os arquitetos eles projetam a estrutura da arquitetura e documentam essa estrutura por meio de diversas visões então uma estrutura é o conjunto total de elementos contidos no software e como eles estão relacionados enquanto que as visões representam uma parte desses elementos representam um grupo coerente de elementos arquiteturais E como eles estão relacionados mas em geral não é o total de elementos é apenas uma parte por isso elas são chamadas visões porque elas enfocam um aspecto específico daquela
estrutura então por exemplo Eh vamos supor a estrutura complexa do corpo humano ela é difícil de compreender Então dessa forma nós passamos a estudá-la em visões em que nós enfocamos apenas uma faceta apenas uma característica apenas um aspecto dessa estrutura então aqui eu tenho cinco visões diferentes do corpo humano eu tenho a visão nervosa do sistema nervoso onde identifico o cérebro e os os seus neurônios as suas terminações nervosas aqui eu tenho uma visão do sistema vascular que basicamente eu identifico a As veias e artérias aqui eu tenho uma visão dos órgãos internos do do
corpo humano aqui eu tenho uma visão de como ela é ele é estruturado em termos de músculos como é que como a estrutura muscular do corpo humano e aqui eu tenho uma visão do esqueleto do corpo humano Então são cinco visões diferentes para a mesma estrutura então H com relação às visões arquiteturais A lógica é a mesma nós apresentamos diversas visões da estrutura para compreender melhor determinadas as facetas dela então nós temos várias visões arquiteturais entre elas nós temos a visão conceitual a visão lógica a visão de processo a visão de desenvolvimento e a visão
física vamos falar um pouco sobre cada uma delas a visão conceitual ela é uma visão abstrata do software ela serve de base para decomposição dos requisitos de alto nível em especificações mais detalhadas então eu posso ter eh requisitos de negócio e requisitos de usuário e a partir da produção dessa visão eu posso produzir eh requisitos de sistema ah essa visão ela a produção dessa visão ela auxilia os engenheiros a tomarem decisões sobre como os componentes poderão ser utilizados se existem componentes que podem ser utilizados nessa arquitetura específica eh a produção dessa visão exige que seja
consultada a especificação de requisitos a especificação de requisitos basicamente é um documento que detalha os requisitos funcionais e não funcionais que foram identificados para aquele software a ênfase está nos requisitos não funcionais e nos modelos de caso de uso eh requisitos não funcionais são requisitos Gerais que devem ser seguidos pelo sistema comum todo como por exemplo eh requisitos não funcionais de desempenho usabilidade manutenibilidade escalabilidade confiabilidade proteção segurança e diversos outros e os modelos de caso de uso eles identificam os diversos requisitos funcionais que irão compor o sistema identificando seus diversos cenários ah durante a produção
da Visão conceitual a própria especificação de requisitos ela pode ser evoluída pode ser melhorada e os próprios modelos de caso de uso também podem sofrer evolução nós temos agora a visão lógica que ela mostra Abstrações fundamentais do sistema em termos de objetos ou classes que irão compor esse sistema modelos de classes conceituais que são modelos de classes produzidos ainda durante a fase de Engenharia e requisitos que identificam somente classes de entidade que são classes relacionados diretamente ao domínio do problema que provavelmente serão persistentes ou se seus objetos deverão ser gravados em disco e que conterão
a lógica do negócio também podde ser produzidos modelos de objetos que são basicamente uma visão de como alguns objetos das classes contidas no modelo de classes eh se comportarão existe como eles estarão ã em uma determinada visão daquela classe uma forma de ilustrar como ã auxiliar a comprender aquela classe eh se produz um modelo de objetos então o modelo de objetos apresenta uma visão de como alguns objetos das classes estarão representados existirão se comportarão em determinado momento como eles estarão relacionados entre si ã a a visão lógica Então ela desenvolve consulta e aperfeiçoa modelos de
classes e modelos de objetos principalmente modelos de classes conceituais Ah e nessa visão deve ser possível relacionar os interesses das partes interessadas dos clientes dos usuários com as entidades as entidades no caso são classes de entidade que como eu falei estão relacionados diretamente ao domínio do problema então se nós foss fazer um exemplo do sistema de biblioteca classe de entidade seriam eh empréstimo seriam livro exemplar autor esse tipo de coisa se fosse o sistema bancário as classes de entidades seriam ã conta corrente ou conta especial conta poupança ã pessoas físicas pessoas eh jurídicas movimentos que
ocorrem sobre as contas esse tipo de coisa Ah nós temos também a visão de processo ela mostra como em tempo de execução o software será composto de diversos processos interativos Então ela permite analisar as características não funcionais do software e para isso ela pode se produzir modelos de atividade sequência visão Geral de interação que são todos diagramas do ML ou mesmo diagramas BPMN para identificar o processo como um todo embora essa isso também também pode ser feito por meio da Visão Geral de interação ã e nós temos a visão de desenvolvimento ela decompõe o software
em diversos componentes determinar para determinar como eh as funcionalidades as classes serão encapsuladas por cada componente e como esses componentes deverão ser desenvolvidos Então essa visão é útil para o gerenciamento do projeto de software e e para auxiliar a produzir essa visão nós podemos criar modelos de componentes da uml e nós temos finalmente a visão física que mostra o hardware necessário para suportar o software e como os componentes do software estarão distribuídos nesse hardware em termos de servidores por exemplo ela é útil quando o sistema é um sistema distribuído entre vários computadores e ela auxilia
na no planejamento implantação do software então para produzir Essa visão nós podemos utilizar o diagrama de implantação da uml então nós concluímos mais essa aula eu espero que esse conteúdo tenha sido útil se vocês gostaram dessa aula eu peço que compartilhem com quem possa se interessar curtam o vídeo e se vocês ainda não estão inscritos eu peço que se inscrevam obrigado pela atenção nós nos vemos nas próximas aulas