Baixe o app para aproveitar ainda mais
Prévia do material em texto
Olá, estudante! A arquitetura de software desempenha um papel fundamental ao de�nir a organização dos componentes, as relações entre eles e os princípios orientadores do desenvolvimento de sistemas. Ela proporciona uma visão global do sistema e contribui para a tomada de decisões críticas relacionadas à modularidade, reusabilidade, desempenho, segurança e outros atributos de qualidade. Além disso, a documentação da arquitetura é essencial para comunicar e compartilhar o conhecimento sobre a arquitetura, garantindo que sua visão seja compreendida por todos os membros da equipe. Nesta aula, você aprenderá sobre os elementos que compõem a arquitetura de software, incluindo a documentação, que auxilia no processo de design e ferramentas de comunicação. Além disso, exploraremos a integridade conceitual, que é composta por modelos para análise e ferramenta de rastreabilidade. Com esse conhecimento, você estará preparado para compreender e aplicar de forma efetiva os conceitos e práticas relacionados à arquitetura de software em seus futuros projetos. Bons estudos! Nesta aula, você aprenderá sobre os elementos que compõem a arquitetura de software, incluindo a documentação, que auxilia no processo de design e ferramentas de comunicação. Além disso, exploraremos a integridade conceitual, que é composta por modelos para análise e ferramenta de rastreabilidade. 23 minutos Aula 1 - Documentação da arquitetura Aula 2 - Decisões arquiteturais Aula 3 - Visões arquiteturais Aula 4 - Estudo de caso – sistema de aluguel e streaming de �lmes (SASF) Aula 5 - Revisão da unidade Referências 132 minutos Imprimir V er a n o ta çõ es https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula1 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula1 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula1 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula1 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula2 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula2 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula2 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula2 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula3 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula3 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula3 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula3 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula4 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula4 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula4 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula4 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula4 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula4 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula4 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula5 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula5 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula5 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#aula5 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#referencias https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/index.html#referencias A arquitetura de software desempenha um papel fundamental no desenvolvimento de sistemas de software de qualidade. Ela de�ne a estrutura e organização do sistema, incluindo os componentes principais, as interações entre eles e as decisões de design (BASS; CLEMENTS; KAZMAN, 2012). Essa documentação auxilia o �uxo de comunicação e o ciclo de vida do software. Veremos, nesta aula, a importância da arquitetura de software e discutiremos os principais documentos utilizados para documentar essa arquitetura. Uma arquitetura bem projetada permite a modularidade, a reutilização de componentes, a escalabilidade e a manutenibilidade do sistema. Além disso, ela mitiga riscos técnicos e facilita a comunicação entre a equipe de desenvolvimento (SHAW; GARLAN, 1996). A ideia é provermos uma arquitetura que seja clara e bem de�nida com visão geral da estrutura do sistema, a qual ajude a identi�carmos seus componentes principais e suas interações. Isso faz que os desenvolvedores observem o sistema como um todo, bem como propicia o trabalho em equipe; dessa forma, evitam-se problemas de acoplamento excessivo entre os componentes (FARLEY, 2021). O é uma fase que pode in�uenciar a arquitetura de software. Farley (2021) explica que esse processo tem o foco em atuar nos requisitos do sistema e envolve a identi�cação e a seleção de estratégias de design apropriadas para atender aos requisitos funcionais e não funcionais do sistema. Durante esse processo, os arquitetos de software utilizam várias técnicas, métodos e ferramentas para criar uma arquitetura sólida e coerente. A é um tópico importante para o desenvolvimento de software, pois garante que o sistema seja consistente, preciso e atenda aos requisitos estabelecidos. Ela se refere à consistência das de�nições, conceitos e abstrações utilizadas na arquitetura e no design do software (BASS; CLEMENTS; KAZMAN, 2012). Para alcançar a integridade conceitual, é necessário estabelecer um modelo para análise e utilizar ferramentas de rastreabilidade. De acordo com Kruchten (2004), o é uma representação estruturada e abrangente do software, que permite identi�car e analisar os componentes, as relações entre eles e suas propriedades. Ele ajuda a compreender a estrutura global do software e a validar sua integridade conceitual. Sommerville (2011) destaca que o modelo para análise pode incluir diagramas arquiteturais, diagramas de classes, diagramas de sequência e outras representações visuais que auxiliam a análise e a validação da arquitetura. Por �m, a utilização de um modelo para análise permite veri�car se os componentes estão corretamente de�nidos, se suas responsabilidades estão adequadamente atribuídas e se as interações entre eles são consistentes com as expectativas do sistema . Para manter a integridade conceitual ao longo do ciclo de vida do software, é fundamental utilizar as Essas ferramentas permitem rastrear as relações entre diferentes artefatos do software, desde os requisitos iniciais até as decisões de design e a implementação �nal (SOMMERVILLE, 2011). A rastreabilidade propicia a identi�cação de dependências, a detecção de possíveis impactos de mudanças e a garantia de que todos os elementos do sistema estejam alinhados com os requisitos e com a arquitetura. Essa abordagem ajuda a manter a integridade conceitual do software e facilita a evolução e a manutenção do sistema ao longo do tempo. V er a n o ta çõ es Vimos anteriormente que a documentação da arquitetura de software é uma atividade essencial para comunicar e preservar as decisões de design tomadas durante o desenvolvimento do sistema. Existem diversos documentos utilizados nesse processo,cada um com sua �nalidade especí�ca. A seguir, destacamos alguns dos principais documentos da arquitetura de software: 1. esse documento descreve uma visão geral do sistema, incluindo seus componentes, suas interações e as decisões arquiteturais fundamentais. 2. os diagramas de arquitetura são representações grá�cas da estrutura do sistema e de suas interações. O Quadro 1 a seguir mostra os principais tipos: Quadro 1 | Modelos de diagramas de arquitetura Diagrama de Blocos Representa a arquitetura do sistema em termos de blocos ou componentes e suas interações de alto nível. Diagrama de Componentes Mostra a estrutura do sistema em termos de componentes, suas interfaces e dependências. Diagrama de Sequência Ilustra as interações entre objetos no sistema, destacando a sequência de mensagens trocadas entre eles ao longo do tempo. Diagrama de Casos de Uso Descreve as interações entre atores (usuários ou sistemas externos) e o sistema, mostrando os principais casos de uso e suas relações. Diagrama de Fluxo de Dados Representa o �uxo de dados entre processos e as entidades externas que interagem com o sistema. Fonte: adaptado pelo autor a partir de Sommerville (2011). 3. esse documento detalha a arquitetura do sistema de forma mais aprofundada. Ele descreve os componentes individuais do sistema, suas responsabilidades, interfaces, restrições e requisitos não funcionais relevantes (BASS; CLEMENTS; KAZMAN, 2012). 4. esse documento registra as razões e decisões por trás das escolhas arquiteturais feitas durante o desenvolvimento do sistema. Ele ajuda a justi�car as decisões tomadas e a fornecer um histórico para futuras alterações e evoluções da arquitetura (KRUCHTEN, 2004). 5. os padrões arquiteturais são soluções recorrentes para problemas de arquitetura. Eles facilitam o entendimento e a comunicação entre os membros da equipe de desenvolvimento (BASS; CLEMENTS; KAZMAN, 2012). Cervantes e Kazman (2016) destacam os diferentes estilos arquiteturais, como arquitetura em camadas, arquitetura orientada a serviços (SOA), arquitetura baseada em microsserviços, arquitetura cliente-servidor e muitos outros. Na o sistema é dividido em camadas ou níveis hierárquicos, de modo que cada camada possui uma responsabilidade especí�ca. Geralmente, a comunicação ocorre de forma unidirecional, das camadas inferiores para as superiores. Na mais conhecida em inglês como service-oriented architecture (SOA), o sistema é composto por serviços independentes e reutilizáveis (BASS; CLEMENTS; KAZMAN, 2012). Cada serviço representa uma funcionalidade especí�ca e é projetado para ser autônomo, com interfaces bem de�nidas. V er a n o ta çõ es Na o sistema é dividido em serviços menores e independentes, que são responsáveis por funcionalidades especí�cas. A comunicação entre eles geralmente ocorre por meio de chamadas de application programming interface (API). Na o sistema é dividido em duas partes principais: o cliente (que é a interface com o usuário) e o servidor (que fornece os recursos e a lógica de negócio). A comunicação entre o cliente e o servidor ocorre por meio de solicitações e respostas. Por �m, devemos citar a (Model-View-Controller), a qual é um subconjunto do estilo arquitetural em camadas, focado em sistemas de software para interface com o usuário. Esse estilo promove a separação de responsabilidades e facilita a manutenção e a evolução da interface com o usuário. Vale ressaltar que durante o processo de design, a comunicação efetiva entre os membros da equipe de desenvolvimento é essencial. Para isso, é importante utilizar ferramentas adequadas que permitam a colaboração e o compartilhamento de informações sobre a arquitetura do software. Vimos anteriormente conceitos e a importância do uso de diagramas na arquitetura de software. Porém, algumas ferramentas de modelagem e design especí�cas podem dar suporte às implementações. Essas ferramentas oferecem recursos avançados, como a geração automática de diagramas a partir de modelos, a análise de dependências e a rastreabilidade dos requisitos (KRUCHTEN, 2004). Exemplos de ferramentas são Lucidchart, Draw.io, Microsoft Visio, StarUML, Visual Paradigm, e Astah. No entanto, vale ressaltar que a escolha e o uso das ferramentas devem ser adaptados às necessidades e à cultura da equipe de desenvolvimento. O foco deve ser na efetividade da comunicação e na facilidade de uso das ferramentas selecionadas (MAXIM; PRESSMAN, 2021). Por outro lado, as ferramentas de rastreabilidade são usadas para manter a integridade conceitual ao longo do ciclo de vida do software. Essas ferramentas permitem rastrear as relações entre diferentes artefatos do software, desde os requisitos iniciais até as decisões de design e a implementação �nal (SOMMERVILLE, 2011). A rastreabilidade auxilia a identi�cação de dependências, a detecção de possíveis impactos de mudanças e a garantia de que todos os elementos do sistema estejam alinhados com os requisitos e com a arquitetura. Existem diversas ferramentas de rastreabilidade disponíveis no mercado, as quais podem ser utilizadas para registrar e acompanhar as relações entre requisitos, componentes arquiteturais, testes, código-fonte e outros artefatos do sistema. 1. é uma ferramenta de modelagem abrangente que permite criar diagramas e modelos para representar a arquitetura do software. Ela oferece recursos de rastreabilidade, permitindo estabelecer links entre requisitos, componentes, testes e outras entidades do sistema (CERVANTES; KAZMAN, 2016). 2. é uma plataforma de modelagem e design que suporta a criação de diversos tipos de diagramas, como diagramas de caso de uso, diagramas de classe e diagramas de sequência. Ela também oferece recursos de rastreabilidade (CERVANTES; KAZMAN, 2016; SOMMERVILLE, 2011). 3. essa ferramenta foca na diagramação online e permite criar diagramas de arquitetura e estabelecer vínculos entre os elementos do sistema. Embora seja amplamente utilizada para criação de diagramas, também oferece recursos básicos de rastreabilidade (BASS; CLEMENTS; KAZMAN, 2012). 4. embora seja conhecida principalmente como uma ferramenta de gerenciamento de projetos e rastreamento de problemas, o JIRA também pode ser usado para rastrear relacionamentos entre requisitos, componentes e outras entidades do software (DOAR, 2011). Ele oferece recursos de rastreabilidade e é amplamente utilizado em ambientes de desenvolvimento ágil. Em conclusão, vamos imaginar um projeto de desenvolvimento de software para uma empresa. Os V er a n o ta çõ es documentos de arquitetura descreveriam a estrutura do sistema, indicando como os componentes se relacionam, como os usuários interagem com o aplicativo, e quais tecnologias e padrões arquiteturais foram escolhidos. A equipe implementa um processo de design bem de�nido, que inclui a análise de requisitos, a modelagem da arquitetura, a de�nição de interfaces e a implementação. Após isso, a integridade conceitual é aplicada ao garantir que todas as decisões de design estejam em conformidade com os princípios e requisitos de�nidos no início do projeto. A equipe pode ainda utilizar diagramas UML para modelar a estrutura do sistema. Por �m, uma ferramenta de rastreabilidade para acompanhar as mudanças nos requisitos ao longo do tempo. Quando um requisito é modi�cado, a ferramenta registra a alteração, permitindo que a equipe saiba exatamente quando e por que a mudança foi feita. Agora que você está familiarizado com alguns dos conceitos básicos de arquitetura de software, é hora de aprofundar seus conhecimentos assistindo à videoaula sobre este conteúdo. Teremos a oportunidade de explorar algumas fases da arquitetura de software e a importância de sua documentação. Além disso, vamos abordar o processo de design e as ferramentas de comunicação, mostrando ainda como o modelo para análise e ferramenta de rastreabilidade são úteis. Sugerimos uma referência para que você possa aprofundar um poucomais seus conhecimentos sobre arquitetura de software: Olá, estudante! A arquitetura de software é um campo essencial no desenvolvimento de sistemas complexos e de larga escala. Ela envolve a tomada de diversas decisões ao longo do processo de criação, desde a concepção até a implementação. Essas decisões têm o poder de moldar a estrutura e o comportamento do sistema, in�uenciando diretamente sua qualidade, desempenho e capacidade de evolução. Nesta aula, focaremos nas decisões que permeiam a arquitetura de software, com destaque para as decisões existenciais, descritivas e executivas. As decisões existenciais são aquelas que determinam a própria existência do sistema, como a escolha entre desenvolver um novo sistema ou adaptar um existente. Já as decisões descritivas são responsáveis por de�nir a estrutura, os componentes e as interações do sistema. Por �m, as decisões executivas englobam a de�nição de estratégias, políticas e diretrizes que guiam o desenvolvimento do sistema. Aproveite essa jornada no mundo da arquitetura de software. Bons estudos! Nesta aula, focaremos nas decisões que permeiam a arquitetura de software, com destaque para as decisões existenciais, descritivas e executivas. As decisões existenciais são aquelas que determinam a própria existência do sistema, como a escolha entre desenvolver um novo sistema ou adaptar um existente. 23 minutos V er a n o ta çõ es https://aws.amazon.com/pt/what-is/service-oriented-architecture/ https://aws.amazon.com/pt/what-is/service-oriented-architecture/ https://aws.amazon.com/pt/what-is/service-oriented-architecture/ Barbosa (2009) de�ne uma decisão arquitetural como sendo “uma escolha entre as alternativas de design arquitetural, que se propõe a alcançar um ou mais atributos de qualidade do sistema, por meio de estruturas ou regras que ela envolve ou de�ne”. Para tanto, a seguir, apresentaremos os três tipos principais. O primeiro tipo engloba as responsáveis por de�nir a própria existência do sistema. Elas mostram que devem existir um ou mais elementos arquiteturais no projeto da construção do software (BARBOSA, 2009; PFEIFER et al., 2022). Essas decisões estão relacionadas à escolha entre desenvolver um novo sistema ou adaptar um existente, além de determinar o escopo e os objetivos do projeto. Portanto, segundo Kruchten, Lago e Vliet (2006), elas são decisões de arquitetura que podem ser classi�cadas como estruturais e comportamentais e devem ser consideradas de forma positiva para o projeto. Ao enfrentar uma decisão existencial, os arquitetos de software devem considerar uma série de fatores, como a viabilidade técnica e econômica, as necessidades dos usuários e as demandas do negócio. Nesse processo, a avaliação de riscos também desempenha um papel crucial. Segundo Bass, Clements e Kazman (2012), é importante analisar a incerteza associada a cada opção e identi�car os riscos envolvidos, a �m de tomar uma decisão informada. Segundo Hofmeister, Nord e Soni (2000), essa abordagem pode reduzir o tempo de desenvolvimento e os riscos associados a um novo sistema. No entanto, é importante avaliar cuidadosamente a capacidade de o sistema existente suportar as mudanças desejadas e garantir que a arquitetura resultante seja �exível e escalável. O segundo tipo engloba as que são responsáveis por de�nir a estrutura, os componentes e as interações do sistema. Essas decisões envolvem a escolha de padrões de projeto, estilos arquiteturais, tecnologias e protocolos de comunicação, e têm um impacto signi�cativo na coesão, modularidade e �exibilidade do sistema. No processo de tomada de decisões descritivas, os arquitetos de software devem considerar diversas fontes de informação. Bass, Clements e Kazman (2012) destacam a importância de conhecer as melhores práticas e os padrões estabelecidos no campo da arquitetura de software. Esses conhecimentos podem ser aplicados para selecionar as abordagens mais adequadas para a estruturação do sistema. Além disso, a análise dos requisitos do sistema é essencial para tomar decisões descritivas informadas. É fundamental compreender as necessidades dos usuários, os objetivos do negócio e as restrições técnicas. Hofmeister, Nord e Soni (2000) enfatizam que a arquitetura de software deve ser projetada de forma a atender aos requisitos funcionais e não funcionais, como desempenho, segurança e escalabilidade. Por �m, há ainda as que são responsáveis por de�nir estratégias, políticas e diretrizes que guiam o desenvolvimento do sistema (KRUCHTEN; LAGO; VLIET, 2006). Kruchten (2004) enfatiza que essas decisões envolvem aspectos relacionados aos processos de negócios, como design do desenvolvimento do software e a tomada de decisão a respeito de quais tecnologias e ferramentas devem ser envolvidas no projeto. Ao tomar decisões executivas, os arquitetos de software devem considerar uma variedade de fatores. Uma dessas considerações é a de�nição de requisitos não funcionais. Os requisitos não funcionais, como desempenho, usabilidade e segurança, têm um impacto direto na qualidade do sistema. Os requisitos devem ter uma de�nição clara e precisa para que sejam orientados da forma correta na arquitetura do software (BASS; CLEMENTS; KAZMAN, 2012). Um aspecto importante a ser considerado nas decisões existenciais é o alinhamento com a estratégia de negócio. A escolha da arquitetura de software deve estar alinhada com os objetivos de longo prazo da organização. De acordo com Shaw e Garlan (1996), a arquitetura deve ser vista como uma estratégia para V er a n o ta çõ es atingir metas organizacionais e permitir a evolução contínua do sistema ao longo do tempo. Além disso, as decisões existenciais também podem estar relacionadas à escolha de soluções comerciais prontas ou desenvolvimento interno. A decisão de adquirir um sistema comercial pode ser apropriada quando o sistema atende à maioria dos requisitos e oferece benefícios em termos de tempo de implementação e suporte. No entanto, é importante considerar a capacidade de personalização e integração dessas soluções com os sistemas existentes. Segundo Cervantes e Kazman (2016), a tomada de decisões existenciais é uma etapa crítica no projeto de arquiteturas de software. A seleção do tipo de sistema a ser desenvolvido, levando em consideração aspectos como custo, tempo e qualidade, pode afetar diretamente o sucesso do projeto. Farley (2021) ressalta que as decisões existenciais também devem considerar o contexto organizacional e a capacidade de a equipe de desenvolvimento lidar com os desa�os técnicos envolvidos. De acordo com Kruchten (2004), as decisões existenciais podem ainda ser in�uenciadas pelo processo de desenvolvimento de software adotado. Nesse sentido, metodologias ágeis de projeto podem favorecer a adaptação de sistemas existentes. Vimos anteriormente que, ao contrário das decisões existenciais, as não de�nem partes do sistema, mas são responsáveis por de�nir sua estrutura, componentes e interações (BARBOSA, 2009). Essas decisões envolvem a escolha de padrões de projeto, estilos arquiteturais, tecnologias e protocolos de comunicação, e têm um impacto signi�cativo na coesão, modularidade e �exibilidade do sistema. No processo de tomada de decisões descritivas, os arquitetos de software devem considerar diversas fontes de informação. Bass, Clements e Kazman (2012) destacam a importância de conhecer as melhores práticas e os padrões estabelecidos no campo da arquitetura de software. Esses conhecimentos podem ser aplicados para selecionar as abordagens mais adequadas para a estruturação do sistema. Além disso, a análise dos requisitos do sistema é essencial para tomar decisões descritivas informadas. É fundamental compreender as necessidades dos usuários, os objetivos do negócio e as restrições técnicas. Hofmeister, Nord e Soni (2000) enfatizam que a arquitetura de software deve ser projetada de forma a atender aos requisitos funcionais e não funcionais, como desempenho,segurança e escalabilidade. Farley (2021) destaca a importância de incorporar medidas de segurança em todas as camadas do sistema para garantir a proteção adequada dos dados e a con�dencialidade das informações quando das decisões executivas. Cabe ressaltar a segurança do sistema. A proteção de dados sensíveis, a prevenção de ataques cibernéticos e a conformidade com regulamentações são aspectos que devem ser considerados na arquitetura de software. A escalabilidade é outro atributo importante a ser considerado nas decisões executivas. A capacidade de um sistema lidar com um aumento na carga de trabalho e no número de usuários é fundamental para garantir um desempenho e�ciente. Nesse sentido, a escolha de abordagens escaláveis, como a distribuição de carga e a escalabilidade horizontal, pode permitir que o sistema se adapte às necessidades em constante evolução (HOFMEISTER; NORD; SONI, 2000). As decisões existenciais são aquelas que têm um impacto duradouro e fundamental no sistema. Em muitos casos, as decisões existenciais são difíceis de serem modi�cadas posteriormente sem causar grandes impactos. São como a espinha dorsal do software, in�uenciando sua estrutura, escalabilidade e manutenibilidade. Re�itamos sobre um exemplo: imagine um novo projeto para desenvolver um sistema de gerenciamento de projetos em uma empresa de TI. Uma decisão existencial seria escolher entre uma arquitetura monolítica e uma arquitetura baseada em microsserviços. Essa decisão terá um grande impacto na estrutura do sistema, na forma como os componentes se comunicam e na escalabilidade do software. Ela também afetará as equipes de V er a n o ta çõ es desenvolvimento, pois requer diferentes habilidades e abordagens para implementação e manutenção. Vale ressaltar que, ao tomar decisões existenciais, os arquitetos de software devem buscar um equilíbrio entre os benefícios de desenvolver um novo sistema e os custos e riscos associados a essa abordagem. Essas decisões devem ser baseadas em uma análise cuidadosa das necessidades do negócio, das demandas dos usuários, dos recursos disponíveis e das restrições do projeto. Por sua vez, as decisões descritivas estão relacionadas à documentação e comunicação da arquitetura de software; descrevem como o sistema foi projetado e explicam as decisões existenciais tomadas. Essas decisões são importantes para garantir que todas as partes interessadas, incluindo a equipe de desenvolvimento, gerentes e stakeholders, compreendam a estrutura do sistema e possam colaborar de forma e�caz. Vejamos um exemplo prático: voltando ao cenário que acabamos de apresentar sobre um sistema de gerenciamento de projetos, uma decisão descritiva seria a criação de documentos detalhados de arquitetura, incluindo diagramas de alto nível e descrições dos padrões arquiteturais utilizados. Essa documentação ajudaria os membros da equipe a compreender melhor a arquitetura e garantiria que todos estejam alinhados em relação às decisões tomadas. Kruchten (2004) destaca a importância de selecionar o estilo arquitetural mais apropriado com base nas características e nos requisitos do sistema em questão. Cervantes e Kazman (2016) ressaltam que a aplicação correta de padrões de projeto pode melhorar a qualidade, a manutenibilidade e a extensibilidade do sistema. Sobre as decisões executivas, vimos que elas se referem a escolhas feitas durante a implementação, evolução e manutenção do sistema. Elas são tomadas com base nas decisões existenciais e podem ser adaptadas de acordo com as necessidades do projeto e as mudanças nos requisitos. Por isso, Cervantes e Kazman (2016) enfatizam que as decisões sobre as tecnologias a serem utilizadas devem considerar tanto os requisitos técnicos quanto os objetivos do negócio. A seleção adequada de tecnologias, linguagens de programação e frameworks pode in�uenciar a e�ciência e a manutenibilidade do sistema. Além disso, as decisões executivas também devem levar em consideração o desempenho do sistema. KRUCHTEN (2004) destaca a importância de medir e avaliar o desempenho do sistema para identi�car possíveis melhorias. A otimização de recursos, a minimização de gargalos e a melhoria do tempo de resposta são aspectos que podem ser abordados na arquitetura de software. Consideremos um exemplo prático: durante a implementação do sistema de gerenciamento de projetos visto anteriormente, a equipe pode tomar uma decisão executiva de adotar um framework especí�co para lidar com autenticação e autorização dos usuários. Essa decisão é uma implementação detalhada da decisão existencial de escolher uma arquitetura baseada em microsserviços, que exige uma abordagem �exível e descentralizada para gerenciar as permissões de acesso. Agora que você está familiarizado com alguns dos conceitos de arquitetura de software, é hora de aprofundar seus conhecimentos assistindo à videoaula deste conteúdo. Veremos como são feitas as decisões do tipo existenciais, as decisões descritivas, decisões executivas. Elas desempenham um papel fundamental no desenvolvimento de sistemas. Além disso, vamos abordar a aplicação dos atributos das decisões arquitetônicas, mostrando como esses elementos in�uenciam a construção e a evolução de software. Sugerimos uma referência para que você possa aprofundar um pouco mais seus conhecimentos sobre a metodologia ágil no processo de arquitetura de software, con�ra a matéria . V er a n o ta çõ es https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/Metodologia%20%C3%81gil%20%E2%80%93%20O%20que%20%C3%A9 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/Metodologia%20%C3%81gil%20%E2%80%93%20O%20que%20%C3%A9 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/Metodologia%20%C3%81gil%20%E2%80%93%20O%20que%20%C3%A9 https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/Metodologia%20%C3%81gil%20%E2%80%93%20O%20que%20%C3%A9 Olá, estudante! A documentação de arquitetura de software é de suma importância para o desenvolvimento de sistemas complexos, permitindo uma compreensão clara e detalhada das decisões arquiteturais tomadas durante o processo de projeto. Entre várias abordagens de documentação arquitetural, três modelos têm se destacado como referências importantes na área: o 4+1 de Kruchten, os viewpoints de Rozanski e Woods, e os viewtypes do Software Engineering Institute (SEI). Cada um desses modelos oferece uma perspectiva única para representar a arquitetura, abordando as preocupações especí�cas dos stakeholders e proporcionando uma visão abrangente do sistema em desenvolvimento. No entanto, apesar dos muitos benefícios oferecidos por essas metodologias de documentação, elas também enfrentam desa�os e di�culdades na aplicação prática, exigindo uma abordagem cuidadosa e estruturada para atingir resultados efetivos e alinhados com os objetivos do projeto. Nesse sentido, esta aula tem o objetivo de esclarecer cada um desses modelos de forma mais detalhada. Bons estudos! O Modelo 4+1 de Kruchten é uma abordagem de arquitetura de software proposta por Philippe Kruchten em 1995 (KRUCHTEN, 2004). Essa abordagem visa a fornecer uma visão completa e abrangente do sistema em desenvolvimento, ajudando os arquitetos de software na compreensão, comunicação e documentação da arquitetura do sistema. Várias organizações têm aplicado esse modelo com sucesso em projetos de diferentes tamanhos e domínios. Esse modelo combina quatro visões principais da arquitetura de software, juntamente com um conjunto adicional de casos de uso para capturar os requisitos funcionais do sistema. Figura 1 | Modelo 4+1 de Kruchten Entre várias abordagens de documentação arquitetural, três modelos têm se destacado como referências importantes na área: o 4+1 de Kruchten, os viewpoints de Rozanski e Woods, e os viewtypes do Software Engineering Institute (SEI). Cada um dessesmodelos oferece uma perspectiva única para representar a arquitetura, abordando as preocupações especí�cas dos stakeholders e proporcionando uma visão abrangente do sistema em desenvolvimento. 24 minutos V er a n o ta çõ es Fonte: adaptada pelo autor a partir de Kruchten (2004). Os viewpoints são uma abordagem sistemática para capturar diferentes perspectivas sobre a arquitetura de software, levando em consideração as preocupações especí�cas dos stakeholders, ou partes interessadas. Para enfrentar os desa�os inerentes a esse processo, diversos pesquisadores e pro�ssionais têm buscado abordagens inovadoras para capturar, comunicar e documentar a arquitetura de software. Entre essas abordagens, os viewpoints propostos por Rozanski e Woods (2012) se destacam como uma contribuição signi�cativa. O conceito de viewpoints foi introduzido por Garlan e Shaw (1993). Eles destacaram a importância de olhar para a arquitetura de software sob diferentes perspectivas para melhor entender as preocupações dos stakeholders. Essa ideia serviu de base para o desenvolvimento da abordagem de Rozanski e Woods, que aprimoraram essa visão ao fornecer uma estrutura sistemática para a utilização de viewpoints. Bass, Clements e Kazman (2012) destacam a importância da documentação arquitetural como um meio de comunicar a arquitetura de software de forma clara e compreensível para os stakeholders. Ao discutir a utilização de viewpoints e perspectivas, eles ressaltam que a criação de diferentes visões da arquitetura, cada uma com foco em preocupações especí�cas dos stakeholders, é essencial para garantir que todos os envolvidos tenham uma visão clara do sistema. Ao utilizar viewpoints, é possível obter uma visão mais abrangente do sistema, uma vez que cada viewpoint representa uma perspectiva especí�ca sobre a arquitetura (CLEMENTS; KAZMAN; KLEIN, 2002). Através da combinação e análise dessas diferentes visões, os arquitetos podem avaliar a qualidade e a adequação da arquitetura em relação aos requisitos e metas estabelecidas pelos stakeholders. Porém, vale ressaltar que a documentação arquitetural não deve se limitar a uma única visão, mas sim abranger múltiplos viewpoints que representem as perspectivas especí�cas de cada grupo de stakeholders (CLEMENTS et al., 2003). O Software Engineering Institute (SEI) é um centro de pesquisa e desenvolvimento patrocinado pelo Departamento de Defesa dos Estados Unidos. Ele se dedica a melhorar as práticas de engenharia de software. O SEI é responsável por instituir o modelo conhecido como Integração do Modelo de Maturidade de Capacidade (CMMI) para melhorar os processos de desenvolvimento de software em organizações. Também desenvolveu alguns modelos e viewtypes que facilitam a documentação e a comunicação das arquiteturas. Dentre os modelos propostos pelo SEI, destacam-se o Modelo de Visões e o Modelo de Viewtypes (CLEMENTS et al., 2003). O Modelo de Viewtypes, o qual é uma extensão do Modelo de Visões, descreve um conjunto especí�co de visões, denominadas “viewtypes”. Cada viewtype é uma representação arquitetural focada em um conjunto particular de elementos e relacionamentos, permitindo uma visualização mais detalhada de aspectos especí�cos do sistema (HOFMEISTER et al., 2002). Os viewtypes são particularmente úteis para organizar a documentação arquitetural e garantir que cada visão do sistema seja adequadamente comunicada aos stakeholders relevantes. Vimos anteriormente alguns conceitos de visões declaradas por Kruchten (2004), os quais formam o modelo 4+1. Vamos agora explorar melhor esse modelo. A primeira dessas visões refere-se à visão lógica, por meio da qual seriam identi�cados os componentes principais do sistema, como catálogo de produtos, carrinho de compras e processamento de pedidos. Essa visão ajuda a entender como esses componentes estão interconectados e quais funcionalidades são fornecidas por cada um deles. Ela é descrita por meio de diagramas de classes, diagramas de pacotes ou outras notações adequadas para representar a estrutura lógica do software (SHAW; GARLAN, 1996). A próxima visão é a de desenvolvimento e aborda a organização do trabalho de desenvolvimento do software, identi�cando as diferentes unidades de trabalho atribuídas a equipes ou desenvolvedores (BASS; CLEMENTS; KAZMAN, 2012). Nessa visão, os responsáveis implementam cada componente do sistema. Por V er a n o ta çõ es exemplo, uma equipe poderia ser responsável pelo desenvolvimento do catálogo de produtos, enquanto outra equipe cuidaria do carrinho de compras. A visão física, por sua vez, enfoca os aspectos de implantação e distribuição do sistema, descrevendo como os componentes do sistema são implantados em hardware especí�co (SHAW; GARLAN, 1996). Nessa visão, são ainda identi�cados os servidores, bancos de dados e outros recursos de hardware necessários para implantar o sistema de comércio eletrônico. Por último, a visão de processos concentra-se nos aspectos dinâmicos do sistema, descrevendo os �uxos de dados e as interações entre os diferentes componentes em tempo de execução (BASS; CLEMENTS; KAZMAN, 2012). Por exemplo, quando um cliente adiciona um item ao carrinho de compras, é necessário atualizar o catálogo de produtos e processar o pagamento. Além das quatro visões, o modelo 4+1 também incorpora uma quinta dimensão: os casos de uso. Esses descrevem as interações entre os atores externos e o sistema, representando os requisitos funcionais do software (KRUCHTEN, 2004). Eles são usados para capturar os principais cenários de uso do sistema e ajudar a validar a arquitetura proposta. Por sua vez, a abordagem desenvolvida por Rozanski e Woods (2012) é baseada na utilização de viewpoints para representar diferentes perspectivas do sistema. Cada viewpoint é desenvolvido em torno de um conjunto especí�co de stakeholders e suas necessidades. Essa abordagem garante que as decisões arquiteturais sejam tomadas levando em consideração as preocupações e prioridades de todos os stakeholders relevantes. Os viewpoints propostos por Rozanski e Woods incluem, por exemplo, o viewpoint de contexto (que descreve a relação entre o sistema e seu ambiente externo) e o viewpoint de informações (que se concentra nas necessidades e �uxos de dados dentro do sistema). Outros viewpoints, como o viewpoint de estrutura (que descreve a organização interna do sistema) e o viewpoint de comportamento (que se concentra nas interações e sequências de eventos dentro do sistema), também são fundamentais para uma visão abrangente da arquitetura. Por �m, vimos que o Modelo de Visões do SEI é uma abordagem que promove a representação da arquitetura de software a partir de diversas perspectivas, conhecidas como “visões”. Esse modelo enfatiza a importância de entender a arquitetura de múltiplos pontos de vista para melhor atender aos interesses e necessidades dos stakeholders envolvidos no projeto (ROZANSKI; WOODS, 2012). Cada visão no Modelo de Visões se concentra em uma área especí�ca da arquitetura, como lógica, processos, física e cenários, proporcionando uma compreensão mais abrangente e detalhada do sistema, conforme abaixo. Quadro 1 | Modelo de visões do SEI Concentra na estrutura lógica do sistema de software e descreve os componentes principais do sistema, e as pendências funcionais entre eles ROZANSKI & WOODS (2012) Concentra nos aspectos relacionados à execução do sistema, como a distribuição de tarefas e a coordenação entre processos e threads HOFMEISTER et al. (2002) Aborda os aspectos da arquitetura relacionados à implantação do software em hardware especí�co, incluindo a distribuição física dos componentes em diferentes nós de processamento MEDVIDOVIC et al. (2000) Descreve a arquitetura sob a perspectiva de casos de uso e cenários de interação com o sistema, auxiliando na interação entre os stakeholders e o software em situações especí�cas CLEMENTS, KAZMAN & KLEIN (2002) V er a n o ta çõ es Focanos aspectos relacionados à gerência e à organização no sistema CLEMENTS et al. (2003) Fonte: elaborado pelo autor. No que tange às ferramentas de mercado que utilizam o modelo 4+1, existem várias opções disponíveis. Por exemplo, o Processo Uni�cado Racional (RUP), descrito por Kruchten (2004), é uma metodologia que incorpora o modelo 4+1 em suas diretrizes de desenvolvimento de software. A RUP fornece um conjunto de práticas e modelos arquiteturais que auxiliam o projeto e a implementação de sistemas de software. O Enterprise Architect, da Sparx Systems, é uma ferramenta popular que permite a criação de diagramas de classes, diagramas de sequência e outros modelos arquiteturais necessários para representar as diferentes visões do sistema. Outras ferramentas, como o Visual Paradigm, MagicDraw e Lucidchart, também oferecem recursos semelhantes para a modelagem de software com base no modelo 4+1. Para aplicar efetivamente a abordagem dos viewpoints de Rozanski e Woods (2012), existem várias ferramentas e métodos disponíveis. A modelagem arquitetural é uma técnica comum para representar os viewpoints em diagramas e outros artefatos visuais. Ferramentas como UML (Uni�ed Modeling Language) e SysML (Systems Modeling Language) são frequentemente usadas para criar representações visuais dos viewpoints. Além disso, a utilização de ferramentas de gerenciamento de requisitos e colaboração, como JIRA (DOAR, 2011) ou Con�uence, pode facilitar a coleta e análise das necessidades dos stakeholders, auxiliando a de�nição dos viewpoints relevantes. De forma prática, a utilização de viewtypes propostos pelo SEI ajuda a identi�car problemas potenciais e antecipar desa�os durante o desenvolvimento e a evolução do sistema (CLEMENTS et al., 2003). Traremos agora algumas formas de aplicarmos os viewtypes do SEI em diversos tópicos. • foca em identi�car as medidas de segurança implementadas na arquitetura de software para proteger o sistema contra ameaças e ataques (CLEMENTS; KAZMAN; KLEIN, 2002). • processo que aborda questões relacionadas ao desempenho do sistema, como tempos de resposta, latência, utilização de recursos e capacidade de escalabilidade (MEDVIDOVIC et al., 2000). • é um serviço que se concentra na representação da interação do sistema com os usuários �nais (GARLAN; SHAW, 1993). Ele inclui elementos como grá�cos, �uxos de navegação e layout. • processo que permite descrever a organização e a estrutura do banco de dados do sistema, mostrando como os dados são armazenados, acessados e manipulados pela arquitetura (CLEMENTS et al., 2003). • processo que ajuda a de�nir os mecanismos e protocolos utilizados para a comunicação entre os componentes do sistema distribuído (ROZANSKI; WOODS, 2012). A parte prática e aplicável dos viewtypes do SEI está relacionada com a adoção dos serviços acima durante o ciclo de desenvolvimento de software. Alguns exemplos de aplicação prática incluem: • Em relação às viewtypes de segurança, a equipe pode identi�car possíveis vulnerabilidades e de�nir medidas de segurança para proteger o sistema contra ameaças e ataques, por meio de técnicas de criptogra�a, autenticação de usuários, controle de acesso e proteção contra injeção de código malicioso. • Em relação às viewtypes de comunicação, podemos imaginar o uso de sistemas distribuídos, e a equipe pode usar esta visão para de�nir os mecanismos e protocolos de comunicação entre os componentes. V er a n o ta çõ es • Nas viewtypes de interface do usuário, a equipe pode utilizar esta visão para representar como o sistema interage com os usuários �nais. Isso pode incluir a criação de wireframes, protótipos interativos e designs de interface grá�ca. Você já possui um conhecimento básico sobre visões arquiteturais de software; é hora de aprofundar seus conhecimentos assistindo a esta videoaula, na qual você terá a oportunidade de aprender o modelo 4+1 de Kruchten e os viewpoints de Rozanski e Woods. Também conhecerá os modelos de visões e viewtypes do SEI e quais são os benefícios para as equipes e para os stakeholders do projeto. Para aprofundar seu conhecimento sobre os temas relacionados à Integração do Modelo de Maturidade de Capacidade (CMMI), recomendamos a leitura do capítulo 8.6 do livro Gestão de Tecnologia da Informação - Governança de TI: Arquitetura e Alinhamento entre Sistemas de Informação e o Negócio, de Carneiro Ramos Molinaro. Olá, estudante! O cenário do entretenimento tem sido profundamente impactado pelo surgimento de plataformas digitais de aluguel e streaming de �lmes. Com o avanço da tecnologia e a crescente busca dos consumidores por conteúdo sob demanda, os sistemas de aluguel e streaming de �lmes (SASF) têm se tornado uma escolha popular para ciné�los e entusiastas do cinema. Nesta aula, exploraremos as funcionalidades do SASF e analisaremos o impacto das transmissões simultâneas, tempos de resposta, tamanho do inventário e o número de operações diárias. Também discutiremos a importância de um inventário bem gerenciado e como o crescimento constante do catálogo de �lmes pode afetar as operações diárias das empresas do setor. Além disso, abordaremos possíveis soluções e estratégias para otimizar a e�ciência e a capacidade de resposta dessas plataformas, garantindo uma experiência de usuário �uida e atraente. Compreender os aspectos do SASF vai prepará-lo para enfrentar os desa�os. Bons estudos! Nesta aula, exploraremos as funcionalidades do SASF e analisaremos o impacto das transmissões simultâneas, tempos de resposta, tamanho do inventário e o número de operações diárias. Também discutiremos a importância de um inventário bem gerenciado e como o crescimento constante do catálogo de �lmes pode afetar as operações diárias das empresas do setor. 23 minutos V er a n o ta çõ es https://integrada.minhabiblioteca.com.br/reader/books/978-85-216-1972-7/pageid/144 https://integrada.minhabiblioteca.com.br/reader/books/978-85-216-1972-7/pageid/144 https://integrada.minhabiblioteca.com.br/reader/books/978-85-216-1972-7/pageid/144 https://integrada.minhabiblioteca.com.br/reader/books/978-85-216-1972-7/pageid/144 https://integrada.minhabiblioteca.com.br/reader/books/978-85-216-1972-7/pageid/144 https://integrada.minhabiblioteca.com.br/reader/books/978-85-216-1972-7/pageid/144 https://integrada.minhabiblioteca.com.br/reader/books/978-85-216-1972-7/pageid/144 https://integrada.minhabiblioteca.com.br/reader/books/978-85-216-1972-7/pageid/144 https://integrada.minhabiblioteca.com.br/reader/books/978-85-216-1972-7/pageid/144 O sistema de aluguel e streaming de �lmes (SASF) é uma plataforma inovadora que vem transformando a maneira como as pessoas acessam e desfrutam de conteúdo cinematográ�co. Desenvolvido por uma equipe de especialistas em tecnologia, o SASF proporciona aos usuários uma experiência abrangente e diversi�cada no mundo do entretenimento audiovisual. Uma das principais funcionalidades do SASF é o amplo catálogo de �lmes disponíveis para aluguel ou streaming sob demanda. Com a capacidade de acessar uma vasta biblioteca de títulos, desde clássicos do cinema até os lançamentos mais recentes, os usuários têm o poder de escolher entre diferentes gêneros, diretores e estilos cinematográ�cos, conforme suas preferências pessoais. Isso foi possível graças ao trabalho de Smith e Telang (2016), que destacam o impacto da tecnologia de streaming e big data na indústria do entretenimento, e também ao estudo de Barbosa (2009), que abordou a importância do ensino de projeto de arquitetura de software para desenvolver plataformas como o SASF. A interface intuitiva e amigável do SASF permite uma navegação �uida e e�ciente. Os usuários podem facilmente encontrar �lmes por meio de pesquisas, �ltros personalizados e recomendações inteligentes baseadas no histórico de visualizações, algoritmos de aprendizado de máquina e técnicas de análise de dados (RICCI et al., 2011). Essa capacidade de sugestão personalizada é fundamental paraengajar os usuários e manter o interesse no serviço ao longo do tempo. Outro destaque do SASF é a sua compatibilidade com várias plataformas e dispositivos, como smartphones, tablets, smart TVs e computadores. Essa �exibilidade garante que os usuários possam desfrutar de seus �lmes favoritos em qualquer lugar e a qualquer momento. Funk (2003) destaca a mobilidade de consumo de mídia, um tema relevante na era digital, e que se refere à capacidade de as pessoas acessarem conteúdo de mídia, como �lmes, programas de TV, músicas e outros tipos de entretenimento, em diferentes dispositivos e locais. O sistema de aluguel e streaming de �lmes (SASF) enfrenta diversos desa�os relacionados a transmissões simultâneas, tempos de resposta, tamanho do inventário e número de operações por dia (BARBOSA, 2009). Esses desa�os são inerentes ao contexto da indústria do entretenimento e ao crescimento exponencial do consumo de conteúdo audiovisual através da internet e dispositivos móveis (FUNK, 2003). A alta demanda por �lmes e séries em streaming, associada à necessidade de atender a um grande número de usuários simultaneamente, pode levar a gargalos no sistema e redução do tempo de resposta para as requisições (SMITH; TELANG, 2016). Além disso, a diversidade do catálogo de �lmes e a necessidade de manter constantemente atualizado o inventário de títulos disponíveis representam um desa�o adicional (BARBOSA, 2009). Para enfrentar esses desa�os, o SASF pode adotar uma arquitetura de microsserviços, de modo que cada funcionalidade essencial é tratada por um componente independente (BARBOSA, 2009). Dessa forma, é possível distribuir a carga de trabalho e equilibrar o número de operações por dia, tornando o sistema mais escalável e capaz de atender a um maior número de usuários simultaneamente. Um dos maiores benefícios do SASF é que ele oferece a opção de download temporário de �lmes para visualização o�ine, atendendo à demanda de consumidores que desejam assistir a conteúdo sem depender da conexão à internet. Segundo Barbosa (2019), uma alternativa viável é assistir aos �lmes através da internet, utilizando o streaming de vídeo por meio de um dispositivo ou aplicativo que esteja compatível com o SASF. Essa opção dispensa a necessidade de aguardar a entrega física da mídia pelos correios ou o tempo de download do vídeo antes de iniciar a reprodução, uma vez que o conceito do streaming é possibilitar o consumo do arquivo de mídia à medida que ele é transmitido. Outra inovação trazida pelo SASF é a disponibilidade de conteúdo em resolução 4K e até mesmo em formatos de realidade virtual (VR). Tricart (2018) a�rma que essas tecnologias de ponta proporcionam uma experiência imersiva e envolvente aos usuários, permitindo que eles mergulhem no mundo dos �lmes de uma forma nunca antes experimentada. A resolução 4K oferece imagens com maior nitidez e detalhes visuais, aprimorando a qualidade visual das produções cinematográ�cas, enquanto a realidade virtual cria V er a n o ta çõ es uma sensação de presença e interatividade, fazendo que os espectadores se sintam parte da narrativa. Por �m, a plataforma SASF incorpora sistemas de recomendação baseados em aprendizado de máquina, que, por meio de algoritmos avançados, analisam os padrões de comportamento e preferências dos usuários para sugerir �lmes altamente relevantes (MCDONALD; SMITH-ROWSEY, 2016). Funk (2003) destaca que uma estratégia importante para lidar com as transmissões simultâneas é a implementação de uma tecnologia de entrega de conteúdo e�ciente, como content delivery networks (CDNs). Isso possibilita a distribuição do conteúdo para servidores localizados em diferentes regiões geográ�cas, reduzindo a latência e garantindo uma melhor experiência de streaming para os usuários (SMITH & TELANG, 2016). O tamanho do inventário pode ser gerenciado de forma mais e�caz através da utilização de um sistema de cache distribuído. Essa abordagem permite armazenar em memória os títulos mais populares, tornando as consultas de disponibilidade mais rápidas e reduzindo o tempo de resposta do sistema (BARBOSA, 2009). Outra estratégia relevante é a adoção de técnicas de recomendação personalizada, com base no histórico de preferências e comportamento dos usuários (BARBOSA, 2009; RICCI et al., 2011). Ao oferecer sugestões de �lmes e séries mais relevantes para cada usuário, o sistema pode aumentar o engajamento e o número de operações por dia, uma vez que os usuários são direcionados para conteúdos de maior interesse (RICCI et al., 2011). O SASF pode ainda se bene�ciar da utilização de tecnologias emergentes, como realidade virtual (VR), para aprimorar a experiência de streaming de �lmes (TRICART, 2017). Ao oferecer conteúdos em VR, o sistema pode se destacar no mercado, atrair mais usuários e, consequentemente, aumentar o número de operações por dia. Além dos desa�os mencionados anteriormente, o SASF também deve considerar as tendências tecnológicas e mudanças no comportamento do consumidor para garantir sua relevância no mercado em constante evolução (FUNK, 2003). Com o crescimento da indústria de entretenimento digital, os consumidores estão cada vez mais exigentes em relação à qualidade do serviço e à disponibilidade de conteúdos variados e exclusivos (MCDONALD; SMITH-ROWSEY, 2016). A empresa de entretenimento Cine�ix lançou recentemente o sistema de aluguel e streaming de �lmes (SASF), que permite aos usuários alugar e assistir �lmes online. Com uma crescente base de clientes, a plataforma oferece um vasto inventário de �lmes licenciados e originais, tornando-se rapidamente popular entre os ciné�los. O SASF permite que vários usuários assistam ao mesmo �lme simultaneamente, e a empresa tem investido em infraestrutura de servidores para suportar a demanda crescente. No entanto, à medida que a base de clientes e o catálogo de �lmes expandem, a empresa começa a enfrentar desa�os de desempenho, como tempos de resposta lentos, problemas de transmissão simultânea e gargalos operacionais. Trazendo à tona o problema, foi visto que, com o rápido crescimento do SASF, o aumento no número de usuários simultâneos está afetando negativamente o desempenho da plataforma. Os tempos de resposta estão mais lentos, resultando em uma experiência de usuário insatisfatória. Além disso, a funcionalidade de transmissão simultânea de �lmes está enfrentando instabilidades, com usuários relatando pausas inesperadas ou interrupções nas sessões de streaming. O tamanho crescente do inventário de �lmes também está gerando gargalos nas operações diárias, tornando a administração e a manutenção da plataforma mais complexas. Nesse sentido, a equipe de engenharia e operações do Cine�ix conduziu uma análise detalhada para identi�car as principais causas dos problemas enfrentados pela plataforma. Observou-se que o aumento signi�cativo no número de usuários simultâneos está sobrecarregando os servidores de streaming e os bancos de dados. Os tempos de resposta lentos e as interrupções no streaming são resultado direto de a infraestrutura atual não conseguir lidar e�cientemente com a carga crescente. Além disso, o tamanho V er a n o ta çõ es massivo do inventário de �lmes está impactando o gerenciamento de conteúdo e os processos de atualização. A equipe de operações está enfrentando desa�os em relação à manutenção do catálogo e à disponibilidade de �lmes para os usuários de forma ágil. Como solução, a empresa Cine�ix resolveu implementar uma série de ações estratégicas. Primeiramente, a empresa investirá em uma infraestrutura de servidores mais robusta e escalável, capaz de lidar com a crescente demanda de usuários simultâneos. Será feita uma parceria com provedores de serviços em nuvem para utilizar recursos elásticos, permitindo que a capacidade de streaming seja ampliada ou reduzida dinamicamente, de acordo com a demanda. Em relação à transmissão simultânea, a equipe de engenharia realizará uma otimização do algoritmode distribuição de conteúdo, garantindo uma melhor gestão dos dados enviados aos usuários durante a reprodução dos �lmes. Isso reduzirá as pausas e interrupções nas sessões de streaming, melhorando a experiência do usuário. Quanto ao inventário de �lmes, a empresa adotará uma abordagem de gerenciamento de conteúdo mais e�ciente, automatizando processos de atualização e manutenção do catálogo. Com a implementação de ferramentas e �uxos de trabalho aprimorados, será possível adicionar e remover �lmes do inventário de forma mais rápida e con�ável. Por �m, para otimizar as operações diárias, o Cine�ix implementará tecnologias de monitoramento e análise de desempenho em tempo real. Isso permitirá que a equipe identi�que e resolva rapidamente quaisquer problemas operacionais, mantendo a plataforma funcionando de forma suave e con�ável. Em conclusão, com essas soluções implementadas, o sistema de aluguel e streaming de �lmes (SASF) do Cine�ix estará preparado para lidar com o crescimento contínuo de sua base de clientes, oferecendo uma experiência de usuário aprimorada, transmissões simultâneas mais estáveis, tempos de resposta rápidos e uma gestão e�ciente do inventário de �lmes. Agora que você conhece e entende os conceitos apresentados em nosso estudo de caso, é hora de aprofundar seus conhecimentos assistindo à videoaula sobre esse conteúdo. Você aprenderá as principais funcionalidades e capacidades do sistemas de aluguel e streaming de �lmes (SASF), além de compreender o impacto causado pelas transmissões simultâneas, os tempos de resposta, tamanho do inventário e número de operações por dia. A videoaula vai enriquecer seu aprendizado e proporcionar uma visão ampla sobre arquitetura de software. Bons estudos! Sugerimos uma referência para que você possa aprofundar um pouco mais seu conhecimento sobre serviços de streaming: Como funciona a Net�ix? (do DVD ao streaming). Olá, estudante! A arquitetura de software é fundamental para garantir a compreensão, organização e 33 minutos V er a n o ta çõ es https://tecnoblog.net/responde/como-funciona-a-netflix/ https://tecnoblog.net/responde/como-funciona-a-netflix/ https://tecnoblog.net/responde/como-funciona-a-netflix/ evolução de sistemas complexos. Para desenvolver uma arquitetura sólida, é necessário documentar as decisões e diretrizes tomadas ao longo do processo de design. Os documentos da arquitetura atuam como registros essenciais, permitindo que a equipe de desenvolvimento compreenda a estrutura do sistema e sua evolução ao longo do tempo. Essa documentação é crucial para garantir a integridade conceitual do projeto. Durante o processo de design arquitetônico, várias ferramentas podem ser utilizadas para auxiliar na comunicação e visualização das decisões tomadas. A utilização de modelos para análise e ferramentas de rastreabilidade facilita a identi�cação de dependências entre os diferentes componentes do sistema. Essas ferramentas permitem uma melhor compreensão das complexidades do projeto, possibilitando uma tomada de decisão mais informada. As decisões arquitetônicas podem ser categorizadas em três tipos principais: existenciais, descritivas e executivas. As decisões existenciais de�nem a estrutura fundamental do sistema, como a escolha da plataforma, padrões arquitetônicos e tecnologias a serem utilizadas. Já as decisões descritivas detalham a implementação de componentes especí�cos, como a escolha de bibliotecas e frameworks. As decisões executivas estão relacionadas a questões de negócio, como a priorização de requisitos e o planejamento de entregas. O modelo 4+1 de Philippe Kruchten é uma abordagem de documentação arquitetônica que utiliza cinco pontos de vista diferentes para descrever o sistema: lógico, de desenvolvimento, físico, de processos e de cenários. Essa abordagem permite uma visão holística e abrangente do projeto, garantindo que todos os aspectos importantes sejam considerados durante o processo de design. Os viewpoints são perspectivas especí�cas que destacam diferentes aspectos da arquitetura do sistema. A abordagem de Rozanski e Woods propõe vários viewpoints, como o de contexto, de composição, de informação e de estrutura, entre outros. Essa técnica ajuda a equipe a compreender as necessidades e restrições de cada parte interessada, facilitando o processo de design. O Software Engineering Institute (SEI) de�ne viewtypes como representações particulares de uma arquitetura que enfocam aspectos especí�cos, como o viewtype de design, de processos e de casos de uso. Essas visualizações permitem uma análise mais detalhada dos diferentes componentes e funcionalidades do sistema, facilitando a comunicação entre os membros da equipe. Para ilustrar a aplicação dos conceitos arquitetônicos mencionados acima, consideremos o sistema de aluguel e streaming de �lmes (SASF). Esse sistema tem o objetivo de fornecer aos usuários uma plataforma para alugar e transmitir �lmes online. Para projetar essa arquitetura, é necessário tomar diversas decisões existenciais, como a escolha da infraestrutura de nuvem e as tecnologias de streaming a serem utilizadas. Além disso, decisões descritivas, como a de�nição das APIs para interação com o catálogo de �lmes e as funcionalidades de pagamento, são fundamentais. As decisões executivas incluem a priorização dos recursos a serem implementados e o planejamento das entregas, levando em conta fatores como a quantidade de transmissões simultâneas suportadas, tempos de resposta ideais, tamanho do inventário e quantidade de operações por dia. Por �m, ao adotar o modelo 4+1 de Kruchten, os viewpoints de Rozanski e Woods e os viewtypes do SEI, a equipe de desenvolvimento pode documentar a arquitetura do SASF de forma abrangente, garantindo a integridade conceitual e permitindo uma análise detalhada de cada aspecto do sistema. Convidamos você a assistir a este vídeo que resume os conceitos fundamentais sobre arquitetura de software, abordados durante as aulas da Unidade 3. Nele, você vai compreender aspectos importantes, como design arquitetônico, tipos de decisões arquitetônicas, uso de ferramentas de rastreabilidade e a relevância dos modelos de visão e viewpoints. Além disso, vamos explorar os viewtypes do Software Engineering Institute (SEI), e as características e funcionalidades do sistema de aluguel e streaming de �lmes (SASF). V er a n o ta çõ es Para contextualizar sua aprendizagem, imagine que você trabalha para a empresa ABC, uma plataforma de e-commerce estabelecida no mercado há vários anos. No entanto, nos últimos tempos, a plataforma tem enfrentado diversos desa�os relacionados à sua arquitetura e à capacidade de evolução do sistema. A equipe de desenvolvimento percebeu que a falta de documentação arquitetônica adequada tem causado di�culdades na compreensão global do sistema e na comunicação entre os diferentes membros da equipe. Além disso, a arquitetura atual apresenta uma série de decisões tomadas ao longo do tempo, sem uma visão clara de como elas se relacionam entre si. Essa falta de uma visão abrangente tem prejudicado a capacidade de analisar o sistema para identi�car pontos de melhoria e para entender o impacto de possíveis mudanças. Para resolver esses desa�os, você será o protagonista na análise detalhada da arquitetura existente e deverá identi�car as principais de�ciências. Algumas etapas-chave dessa análise incluem: 1. revisar toda a documentação da arquitetura disponível para identi�car lacunas e inconsistências. Será necessário veri�car se os principais componentes, módulos e �uxos do sistema estão devidamente documentados. Além disso, é importante avaliar a forma como a documentação está sendo compartilhada e atualizada pela equipe. 2. analisar as ferramentas e práticas utilizadas pela equipe durante o processo de design da arquitetura. Veri�car se existem padrões de comunicação bem de�nidos e se as ferramentas de documentação e diagramação estão sendo empregadas de maneiraadequada. 3. compreender a arquitetura como um todo e identi�car os principais conceitos e decisões arquitetônicas. Estabelecer um modelo para análise que permita relacionar as decisões e componentes arquitetônicos de forma coesa. 4. avaliar a existência de uma ferramenta que permita rastrear as decisões arquitetônicas ao longo do tempo, auxiliando a equipe a entender as motivações por trás de cada escolha e facilitando a tomada de decisões futuras. 5. classi�car as decisões arquitetônicas existentes em categorias, como decisões estratégicas (existenciais) que impactam a direção geral do sistema, decisões descritivas que de�nem a estrutura e comportamento dos componentes, e decisões executivas que envolvem aspectos tecnológicos e de implementação. 6. analisar os atributos das decisões, como a criticidade, estabilidade, �exibilidade e desempenho, para entender o impacto de cada uma na arquitetura e na evolução do sistema. 7. utilizar os modelos arquiteturais propostos para entender diferentes perspectivas do sistema e identi�car possíveis problemas e melhorias em cada uma delas. Após essa análise detalhada, a equipe estará mais bem preparada para criar uma solução efetiva para os problemas enfrentados na arquitetura da plataforma de e-commerce. Poderão ser propostas ações concretas para aprimorar a documentação, comunicação e tomada de decisões, garantindo uma arquitetura mais sólida, coesa e adaptável. Para auxiliá-lo a entender melhor o estudo de caso apresentado, pense que uma empresa de médio ou grande porte tenha muitos projetos envolvendo softwares. Em empresas com múltiplos projetos de software, a arquitetura desempenha um papel crucial para o sucesso e a e�ciência dos negócios. Ao padronizar o desenvolvimento, ela cria uma base sólida e consistente para todos os projetos, V er a n o ta çõ es facilitando a colaboração entre as equipes e otimizando o processo de desenvolvimento (BASS; CLEMENTS; KAZMAN, 2012; DOAR, 2011; ROZANSKI; WOODS, 2012). Através da de�nição de padrões, estilos e tecnologias comuns, a arquitetura possibilita a integração entre os sistemas e a reutilização de componentes, evitando a duplicação de esforços e reduzindo custos de manutenção (SHAW; GARLAN, 1996). Além disso, a análise cuidadosa dos requisitos funcionais e não funcionais garante que as decisões arquitetônicas sejam bem fundamentadas, assegurando a escalabilidade, segurança e desempenho dos sistemas. O uso de ferramentas de modelagem e documentação é essencial para visualizar a estrutura dos sistemas e rastrear as decisões arquitetônicas ao longo do tempo, garantindo a integridade conceitual do projeto (KRUCHTEN, 2004). Investir na capacitação da equipe é uma prioridade, permitindo que os pro�ssionais estejam atualizados com as melhores práticas de arquitetura de software e preparados para aplicar soluções inovadoras e e�cazes. Dessa forma, a arquitetura de software é o alicerce para o crescimento sustentável das empresas, proporcionando e�ciência operacional, redução de custos, entrega de soluções inovadoras e destaque em um mercado cada vez mais competitivo. Após realizar a análise detalhada da arquitetura da plataforma de e-commerce ABC e identi�car os problemas, vejamos algumas ações para solucioná-los e melhorar a qualidade geral do sistema. 1. primeiramente, a medida é estabelecer uma documentação arquitetônica centralizada e de fácil acesso para toda a equipe de desenvolvimento. Isso inclui a criação de diagramas de alto nível, descrição de componentes e interfaces, bem como documentação de decisões arquitetônicas importantes. Uma plataforma online de compartilhamento de documentos será utilizada para garantir a atualização constante da documentação, tornando-a uma referência con�ável para a equipe. 2. serão estabelecidos padrões de comunicação para garantir que todas as informações relevantes sobre a arquitetura sejam adequadamente compartilhadas. Reuniões regulares de revisão arquitetônica possibilitarão que a equipe discuta e esclareça dúvidas sobre o design da arquitetura e as decisões tomadas. Isso promoverá uma comunicação mais e�ciente e evitará mal-entendidos. 3. um modelo arquitetônico claro será proposto. Ele ajudará a entender a integridade conceitual da arquitetura e facilitará a análise de possíveis impactos decorrentes de mudanças futuras. 4. será adotada uma ferramenta de rastreabilidade para registrar as decisões arquitetônicas e suas motivações ao longo do tempo. Isso permitirá que a equipe compreenda o histórico das decisões e suas implicações na evolução da plataforma, contribuindo para a transparência do processo decisório. 5. as decisões arquitetônicas serão classi�cadas em existenciais, descritivas e executivas, considerando seus respectivos atributos de criticidade, estabilidade, �exibilidade e desempenho. Essa classi�cação auxiliará a equipe a priorizar ações de melhoria e a direcionar esforços para as áreas mais críticas. 6. ajudará a analisar o sistema sob diferentes perspectivas e garantir uma visão abrangente da arquitetura. Isso permitirá identi�car problemas em áreas especí�cas e propor soluções mais adequadas. 7. a equipe receberá treinamentos e capacitação em relação à utilização das V er a n o ta çõ es ferramentas de comunicação, análise arquitetônica e tomada de decisões. Isso garantirá que todos os membros tenham o conhecimento necessário para aplicar as melhores práticas de arquitetura e alinhar-se aos modelos adotados. Com a implementação dessas ações, a arquitetura da plataforma do e-commerce será aprimorada, tornando-se mais clara, consistente e bem documentada. A equipe de desenvolvimento poderá tomar decisões mais informadas, identi�car pontos de melhoria com maior precisão e garantir uma evolução sustentável do sistema ao longo do tempo. Além disso, a comunicação entre os membros da equipe será aprimorada, evitando mal-entendidos e garantindo uma colaboração mais efetiva e e�ciente em todo o processo de desenvolvimento. Lembre-se de re�etir sobre como essas melhorias e soluções podem se adequar à realidade pro�ssional, considerando a diversidade de cenários e possibilidades. A busca contínua por aprimoramento e a aplicação dos conceitos aprendidos serão essenciais para o sucesso na área de arquitetura de software. Fonte: elaborada pelo autor. AMAZON. Disponível em: https://aws.amazon.com/pt/what- is/service-oriented-architecture/. Acesso em: 15 jul. 2023. BASS, Len; CLEMENTS, Paul; KAZMAN, Rick. 3 ed. Boston: Addison- Wesley, 2012. CERVANTES, Humberto; KAZMAN, Rick. a practical approach. Boston: Addison-Wesley Professional, 2016. DOAR, Matthew. Using JIRA E�ectively: Beyond the Documentation. Sebastopol: O’Reilly Media Inc., 2011. FARLEY, David. Doing What Works to Build Better Software Faster. Boston: Addison-Wesley Professional, 2021. KRUCHTEN, Philippe. An Introduction. 3 ed. Boston: Addison-Wesley, 2004. a a 6 minutos V er a n o ta çõ es https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/assets/img/fig_a5_01.jpg https://conteudo.colaboraread.com.br/202302/WHITE_LABEL/ARQUITETURA_DE_SOFTWARE/LIVRO/U3/assets/img/fig_a5_01.jpg https://aws.amazon.com/pt/what-is/service-oriented-architecture/ https://aws.amazon.com/pt/what-is/service-oriented-architecture/ https://aws.amazon.com/pt/what-is/service-oriented-architecture/ https://aws.amazon.com/pt/what-is/service-oriented-architecture/ MAXIM, B. R.; PRESSMAN, Roger S. uma abordagem pro�ssional. Porto Alegre: Bookman, 2021. SHAW, Mary; GARLAN, David. Perspectives on an Emerging Discipline. Upper Saddle River: Prentice Hall, 1996. SOMMERVILLE, Ian. São Paulo: Pearson Education, 2011. ALURA. Disponível em: https://www.alura.com.br/artigos/o-que-e-metodologia- agil. Acesso em: 1 ago. 2023. BARBOSA, Guilherme Mauro Germoglio. Dissertação (Mestrado em Ciência da Computação) – UniversidadeFederal de Campina Grande, Centro de Engenharia Elétrica e Informática. Campina Grande, 2009. Disponível em: http://dspace.sti.ufcg.edu.br:8080/xmlui/bitstream/handle/riufcg/12033 /GUILHERME%20MAURO%20GERMOGLIO%20BARBOSA%20-%20DISSERTA%C3%87%C3%83O%20%28PPGCC %29%202009..pdf. Acesso em: 28 jul. 2023. BASS, Len; CLEMENTS, Paul; KAZMAN, Rick. 3 ed. Boston: Addison- Wesley, 2012. CERVANTES, Humberto; KAZMAN, Rick. a practical approach. Boston: Addison-Wesley Professional, 2016. FARLEY, David. Doing What Works to Build Better Software Faster. Boston: Addison-Wesley Professional, 2021. HOFMEISTER, Christine; NORD, Robert L.; SONI, Dilip. Boston: Addison- Wesley Professional, 2000. KRUCHTEN, Philippe. An Introduction. 3 ed. Boston: Addison-Wesley, 2004. KRUCHTEN, Philippe. LAGO, Patricia; VLIET, Hans van. Building Up and Reasoning About Architectural Knowledge. In: Västerås, Suécia, p. 43–58, 2006,. PFEIFER, Stefan; AKGÜL, Didem; RÖBENACK, Silke; TIHLARIK, Amelie; ALBERT, Bruno; ANACKER, Harald; DUMITRESCU, Roman. Towards traceable and sustainable Documentation and Communication. Copenhague: NordDesign, 2022. SHAW, Mary; GARLAN, David. Perspectives on an Emerging Discipline. Upper Saddle River: Prentice Hall, 1996. BASS, Len; CLEMENTS, Paul; KAZMAN, Rick. 3 ed. Boston: Addison- Wesley, 2012. CLEMENTS, Paul; KAZMAN, Rick; KLEIN, Mark. Methods and Case Studies. Boston: Addison-Wesley Professional, 2002. CLEMENTS, Paul; GARLAN, David; REED, Little; NORD, Robert; STAFFORD, Judith. Documenting software architectures: views and beyond. In: IEEE, p. 740-741, 2003. DOAR, Matthew. Using JIRA E�ectively: Beyond the Documentation. Sebastopol: O’Reilly Media Inc., 2011. GARLAN, David; SHAW, Mary. Advances in Software Engineering a a a V er a n o ta çõ es https://www.alura.com.br/artigos/o-que-e-metodologia-agil https://www.alura.com.br/artigos/o-que-e-metodologia-agil https://www.alura.com.br/artigos/o-que-e-metodologia-agil https://www.alura.com.br/artigos/o-que-e-metodologia-agil http://dspace.sti.ufcg.edu.br:8080/xmlui/bitstream/handle/riufcg/12033/GUILHERME%20MAURO%20GERMOGLIO%20BARBOSA%20-%20DISSERTA%C3%87%C3%83O%20%28PPGCC%29%202009..pdf http://dspace.sti.ufcg.edu.br:8080/xmlui/bitstream/handle/riufcg/12033/GUILHERME%20MAURO%20GERMOGLIO%20BARBOSA%20-%20DISSERTA%C3%87%C3%83O%20%28PPGCC%29%202009..pdf http://dspace.sti.ufcg.edu.br:8080/xmlui/bitstream/handle/riufcg/12033/GUILHERME%20MAURO%20GERMOGLIO%20BARBOSA%20-%20DISSERTA%C3%87%C3%83O%20%28PPGCC%29%202009..pdf http://dspace.sti.ufcg.edu.br:8080/xmlui/bitstream/handle/riufcg/12033/GUILHERME%20MAURO%20GERMOGLIO%20BARBOSA%20-%20DISSERTA%C3%87%C3%83O%20%28PPGCC%29%202009..pdf http://dspace.sti.ufcg.edu.br:8080/xmlui/bitstream/handle/riufcg/12033/GUILHERME%20MAURO%20GERMOGLIO%20BARBOSA%20-%20DISSERTA%C3%87%C3%83O%20%28PPGCC%29%202009..pdf http://dspace.sti.ufcg.edu.br:8080/xmlui/bitstream/handle/riufcg/12033/GUILHERME%20MAURO%20GERMOGLIO%20BARBOSA%20-%20DISSERTA%C3%87%C3%83O%20%28PPGCC%29%202009..pdf Imagem de capa: Storyset e ShutterStock. and Knowledge Engineering. Pittsburgh: School of Computer Science, 1993. HOFMEISTER, Christine; NORD, Robert L.; SONI, Dilip. Views and Beyond. Boston: Addison-Wesley Professional, 2002. KRUCHTEN, Philippe. An Introduction. 3 ed. Boston: Addison-Wesley, 2004. MEDVIDOVIC, Nenad; TAYLOR, Richard N.; OREIZY, Peyman. A Classi�cation and Comparison Framework for Software Architecture Description Languages. 2000. ROZANSKI, Nick; WOODS, Eoin. working with stakeholders using viewpoints and perspectives. Boston: Addison-Wesley, 2012. SHAW, Mary; GARLAN, David. Perspectives on an Emerging Discipline. Upper Saddle River: Prentice Hall, 1996. BARBOSA, Guilherme Mauro Germoglio. Dissertação de mestrado para o Curso de Pós-Graduação em Ciência da Computação da Universidade Federal de Campina Grande – Campus I, Campina Grande, 2009. Disponível em: http://docs.computacao.ufcg.edu.br/posgraduacao/dissertacoes /2009/Dissertacao_GuilhermeMauroGerrmoglioBarbosa.pdf. Acesso em: 15 jul. 2023. FUNK, Je�rey L. The Technologies and Applications Driving the Mobile Internet. Hoboken: Wiley, 2003. GOGONI, Ronaldo. Como funciona a Net�ix? (do DVD ao streaming). , 2019. Disponível em: https://tecnoblog.net/responde/como-funciona-a-net�ix/. Acesso em: 20 jul. 2023. MCDONALD, Kevin; SMITH-ROWSEY, Daniel. Technology and Entertainment in the 21st Century. Londres: Bloomsbury Publishing PLC, 2016. RICCI, Francesco; ROKACH, Lior; SHAPIRA, Bracha; KANTOR, Paul B. Nova York: Springer, 2010. SMITH, Michael D.; TELANG, Rahul. Big Data and the Future of Entertainment. Cambridge: The MIT Press, 2016. TRICART, Celine. Techniques & Best Practices for VR Filmmakers. Abingdon: Routledge, 2017. BASS, Len; CLEMENTS, Paul; KAZMAN, Rick. 3 ed. Boston: Addison- Wesley, 2012. DOAR, Matthew. Using JIRA E�ectively: Beyond the Documentation. Sebastopol: O’Reilly Media Inc., 2011. KRUCHTEN, Philippe. An Introduction. 3 ed. Boston: Addison-Wesley, 2004. ROZANSKI, Nick; WOODS, Eoin. working with stakeholders using viewpoints and perspectives. Boston: Addison-Wesley, 2012. SHAW, Mary; GARLAN, David. Perspectives on an Emerging Discipline. Upper Saddle River: Prentice Hall, 1996. a a a V er a n o ta çõ es https://storyset.com/ https://storyset.com/ https://www.shutterstock.com/pt/ https://www.shutterstock.com/pt/ http://docs.computacao.ufcg.edu.br/posgraduacao/dissertacoes/2009/Dissertacao_GuilhermeMauroGerrmoglioBarbosa.pdf http://docs.computacao.ufcg.edu.br/posgraduacao/dissertacoes/2009/Dissertacao_GuilhermeMauroGerrmoglioBarbosa.pdf http://docs.computacao.ufcg.edu.br/posgraduacao/dissertacoes/2009/Dissertacao_GuilhermeMauroGerrmoglioBarbosa.pdf http://docs.computacao.ufcg.edu.br/posgraduacao/dissertacoes/2009/Dissertacao_GuilhermeMauroGerrmoglioBarbosa.pdf https://tecnoblog.net/responde/como-funciona-a-netflix/ https://tecnoblog.net/responde/como-funciona-a-netflix/
Compartilhar