E aí [Música] o Olá Essa é a disciplina de engenharia de software Eu sou professor Marcelo Fantinato e vamos agora com a aula sobre projeto de arquitetura e visões de arquitetura nas aulas anteriores nós falamos do processo de desenvolvimento de software de uma forma geral passando rapidamente uma visão Geral de de todas as etapas que nós temos que passar para desenvolver um softer e depois então nós começamos a tratar de atividades e de etapas específicas primeiramente nós falamos da engenharia de requisitos em que é nós precisamos levantar os requisitos que representa as necessidades e os
desejos do que o cliente quer do que o software deve ter e agora então nós passamos basicamente para segunda grande atividade que é projetar o software é definir a arquitetura que software vai ter Então em vez de dado que você tem os requisitos dados que vocês a dado que você sabe o que o requisito os requisitos do software em vez de você ir direto para implementação colocar a mão na massa e codificar programar vamos primeiro organizar as ideias tá então fazer o projeto de arquitetura é pensar num projeto de arquitetura significa organizar as ideias olhar
para aqueles requisitos e organizar a como é que nós queremos é organizar o softer que será implementado bom então o que é um projeto de arquitetura de software um projeto de arquitetura de software ele é um modelo que vai descrever como esse sistema de software que vai ser implementado ele deve ser é usado em função de componentes um conjunto de componentes a que se comunicam né obviamente essas componentes eles vão se comunicar então o projeto de arquitetura vai desenhar vai mostrar Olha esses requisitos todos aqui eu vou implementar como no formato desses componentes aqui se
comunicando então eu vou transformar um com uma lista de requisitos em um conjunto de componentes que se comunicam e isso vai ser o meu sofre por exemplo aqui né é uma arquitetura de um sistema de controle de embalagem robotizado não importa muito o que é esse exemplo é um exemplo ilustrativo para mostrar para vocês que um projeto de arquitetura é normalmente um diagrama que representa caixinhas dizendo Olha o sistema vai ter essa parte o sistema vai ter essa parte vai ter essa outra e essa parte se comunica com essa essa parte é mais voltado para
softer essa parte é mais voltada para Harbor por exemplo aqui nós temos controladores controlador do braço controlador da pinça que é uma coisa estão mais voltada para harber nós temos é o sistema de visão sistema de identificação de objetos que vai ser mais vai ter um peso maior do software Lembrando que embora nós estejamos o falando aqui da disciplina de engenharia de software a disciplina de engenharia de software normalmente está dentro da engenharia de sistemas você está construindo um sistema computacional e esse sistema computacional é formado por hardware e software né normalmente um sistema de
informação formado por hardware software e processos que devem ser seguidos então o seu é a sua o seu projeto de arquitetura pode ter elementos mais voltados para rar os resultados para Foster é controlador da esteira que provavelmente alguma coisa também mais votado para cargos enfim aqui apenas um exemplo para mostrar como que você está organizando as ideias para é depois é programar para depois realmente desenvolver os componentes propriamente ditos a bom e quando você vai então pensar nessa arquitetura vai projetar a sua arquitetura aquilo ali é apenas um exemplo né Você pode ter diferentes tipos
de modelos mais detalhados menos detalhados é E você tem que levar em consideração uma série de decisões a por exemplo esse esse essa imagem aqui Ela traz é oito decisões que você pode pensar você como engenheiro de software Mais especificamente nesse caso como um arquiteto de se você tem que se preocupar ou você pode se preocupar Você pode levar em consideração na hora de projetar arquitetura do software por exemplo né então nós temos o primeiro o primeiro a primeira decisão aqui existe uma arquitetura de aplicação genérica que possa agir como um template para o sistema
que está sendo projetado então bom eu tenho que fazer arquitetura do meu softer Ah mas o meu software é tão parecido com outro software o meu sistema de software é tão parecido com outro sistema Então em vez de eu ficar quebrando a cabeça pensando como eu vou arquitettá Lu eu vou pegar a arquitetura do outro que funciona bem para usar como um template mas não não tem então não vou bom então vamos pensar em outras coisas como o sistema será distribuído entre os núcleos ou processadores do Hardware será que esse sistema é um sistema grande
o suficiente para ser um entre vários processadores ou núcleos de processadores vai ter processamento paralelo ou não é um sistema relativamente simples que vai rodar em uma única máquina em um único computador e eu não tenho que me preocupar com isso pensando na engenharia de software profissional em que nós temos grande e sistemas né a de grande porte muitas vezes sistemas vão ser distribuídos é e eu vou ter que ter esse tipo de preocupação né De novo voltando lá para aquelas primeiras aulas em que eu comentei sobre métodos ágeis em que se desenvolvem sistemas mais
simples Talvez esse tipo de preocupação não seja o caso mas pensando na engenharia de software Tradicional em que eu tenha softwares de grande porte essa é uma preocupação existente sim bom e eu tenho aqui outras preocupações ou não vou passar por o material é obviamente está descrito lá na está descrito na material base que vocês têm acesso lá pelo sistema é não só para vocês lerem todas as perguntas aqui mas também para ler um detalhamento do que cada uma delas significa né mais uma questão é bastante importante relevante que tem a ver com as próximas
aulas que nós vamos ter aqui ainda é quais padrões ou estilos de arquitetura poderiam ser usados O que significa padrões de arquitetura ou estilos de arquitetura nós vamos tratar sobre padrões arquiteturais padrões de software é um pouco parecido com a primeira questão que usar algo como um template Tá mas a primeira questão aqui que eu havia mencionado é você sabe que existe um parecido com seu você vai lá e pega aquele para vou usar esse como um template quando a gente fala em padrões ou a estilo o software ou de arquitetura no caso mais específico
é porque alguém já preparou antes e disse olha esse padrão aqui pode ser aproveitado por diferentes pessoas eu fiz eu preparei como algo que pode ser reaproveitado por diferentes pessoas então existem arquiteturas padrão é profissionais é perceberam que alguns tipos de arquitetura são comuns para serem usadas por diferentes outros profissionais então você pode dar uma olhada no catálogo de padrões e e olhar e falar bom esse aqui é o tipo de arquitetura que eu preciso certo bom é então Existem algumas outras questões aqui que vocês podem é se preocupar mais ou menos dependendo do tipo
de software que vocês do tipo de sistema de software que vocês vão desenvolver certo por exemplo a questão números é e qual é a melhor organizar organização da arquitetura para entregar os requisitos não-funcionais do sistema vamos supor que um requisito não funcional seja entregar um Bom desempenho bom e aí como eu vou organizar arquitetura pensando por exemplo de forma amarrada lá com número 2 que é como separar como distribuir entre núcleos de processadores mas mais do que isso amarrando com o número 6 como os componentes estruturais do sistema serão de decomposta em subsistema Como que
você vai organizar um componente maior dividido em Componentes menores em Componentes menores em Componentes menores porque um componente menor pode rodar numa máquina um outro componente menor pode rodar no outra máquina no outro servidor Isso pode impactar o desempenho então uma coisa pode estar relacionada a outra você não pode olhar de forma isolada É mas você tem outros requisitos não funcionais né voltando no item anterior segurança é a desempenho segurança nós vemos uma série lá na aula de requisitos não-funcionais é enfim todos aqueles requisitos não-funcionais vocês tem que podem eventualmente ter que se preocupar na
hora de montar o projeto de arquitetura e essa arquitetura quando vocês definem vocês podem apresentar diferentes níveis diferentes e visões diferentes níveis de abstração por e o que está representado ilustrativamente é aqui nessa figura né o o mais comum é dizer que uma um projeto de arquitetura tem quatro possíveis divisões de arquitetura que a visão lógica a visão física a visão de processo EA visão de desenvolvimento a essa figura aí né Tá representando quatro olhos é mostrando o quatro formas e esse de enxergar arquitetura a visão lógica e é aquela visão mais fácil da gente
imaginar que deve existir que é como o sistema deve ser organizado em pedaços em subir pedaços em pedacinhos menores para entregar os requisitos Mais especificamente os requisitos funcionais do sistema em geral Como que você pensa na orientação objetos como é que você divide o sistema em classe vim objetos para entregar os requisitos do sistema como é que você cria a as classes e os objetos isso é Avisa o que a gente chama de visão lógica em geral é o que mais facilmente a gente pensa quando a gente pensa em arquitetura do software mas também existe
a visão de processo enquanto a visão lógica é uma visão estática Nós pensamos classes é e que vão gerar os seus objetos e vão ser a minha objetos né mas o dia que um diagrama de classes por exemplo é uma coisa estática uma visão de processo é uma visão dinâmica por quê Porque ela vai mostrar como um tempo de execução o sistema é composto de processos que interagem Então quais são os processos que devem acontecer durante o uso do sistema a isso seria então uma visão de de processo a dentro da arquitetura a Claro usando
os próprias operar os próprios métodos que vão existir dentro das classes que você pensou na visão lógica depois nós temos a visão de desenvolvimento que mostra como o software é decomposto pensando no desenvolvimento ou seja mostrar a a divisão do software em Componentes aquela visão lógica que você tinha visto lá no início tentado lá no início e a fica um monte de classes você pode juntar um pouco de classes e formar um componente outro pouco de classe outro componente outro pouco de classes outro componente isso tem mais a ver com o desenvolvimento do ponto de
vista de desenvolvimento Como organizar a classe juntar classes para formar componentes e vamos falar um pouco sobre componentes em aula futura ainda e por fim a visão física que mostra o Harbor do sistema e como os componentes de software esses componentes da visão de desenvolvimento como esses componentes estão distribuídos pelos processadores de sistema porque um componente que congrega um conjunto de classes pode rodar num num processador e o outro componente no outro processador no outro servidor por exemplo se for um sistema distribuído sistemas mais simples rodam todos os componentes no mesmo processador ou não vai
depender de qual é a complexidade do sistema enfim quatro visões diferentes quatro níveis de abstração diferente desde a visão lógica passando por visões intermediárias Até chegar na visão física que é como no nível de hardware o software vai ser executado e É para descrever a uma arquitetura nós podemos usar notações informais aquele primeiro diagrama que eu mostrei pra vocês é uma notação informal é um diagrama feito de quadradinhos e flechinhas Mas é uma notação informal nós podemos usar uma uma notação é formalizada por exemplo diagramas da uml existem vários diagramas por exemplo eu comentei aqui
no diagrama de classes é um dia usando a notação ml por exemplo diagrama de sequência diagrama de atividades da própria ml e podemos usar também linguagens de descrição de arquitetura é da sigla adh que é o nome em inglês são diagramas são linguagens muito formais quase que né a pensando aí em matemática é para especificar arquitetura de projetos de uma forma bastante formal pensando naquele sistemas e softwares e é altamente críticos em que não pode haver nenhum erro então em momento de arquitetura você precisa conseguir provar ou chegar perto de isso de provar que o
sistema está livre de defeitos ou que a especificação do sistema arquitetura do sistema está livre de defeitos o bom é isso para aula de hoje a referência principal desse material que é o material base de vocês para essa aula é o livro do autor é Summer viu ou livro engenharia de software da 10ª edição de 2018 e por hoje é isso obrigado a [Música] [Música]