Buscar

Documento 1

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Desde o início da era da computação, as Arquiteturas Paralelas foram apresentadas como formas de obter uma maior capacidade de processamento para execução de tarefas com altas cargas de processamento.
(Adicionei)Nos computadores das primeiras gerações, era possível executar somente um programa por vez, para aumentar a performance desses processadores e permitir que dois aplicativos trabalhassem simultaneamente, foram desenvolvidas formas de processamento paralelo.
(adicionei)Na época, a técnica consistia na multiprogramação, vários programas utilizavam o processador por um curto período de tempo até que ambos fossem finalizados. Isso era amplamente utilizado por sua forma simples de execução, porém não supria a necessidade das empresas, pois não acelerava o processamento de dados.
Esse aumento na capacidade de processamento dos computadores só podia ser obtido através de processadores mais velozes ou através do aumento do número de processadores empregados em conjunto. Nos anos de 50 e 60, as tecnologias de fabricação de máquinas monoprocessadores eram suficientes para atender à demanda de processamento daquela época. A partir dos anos 70, as necessidades crescentes de capacidade de processamento não eram mais atendidas pelas evoluções na tecnologia dos monoprocessadores, tornando-se necessária a utilização de técnicas de concorrência para alcançar o desempenho requerido.
Como a tecnologia na época não tinha se desenvolvido tanto nessa parte da tecnologia, a tecnologia seguia no limite, sendo assim nasceu uma necessidade dos processadores paralelos, dois (ou mais) processadores de um computador sejam usados para trabalhar em partes separadas de uma tarefa. Dessa forma, é possível diminuir o tempo gasto na resolução do problema. 
Utilizando essa técnica, é possível ultrapassar as limitações tecnológicas de uma máquina, aumentando sua velocidade e poder de processamento.
O uso de múltiplas CPUs permite que os computadores resolvam problemas matemáticos da seguinte forma:
*um problema é quebrado em diversas partes menores;
*cada pedaço é dividido em uma série de instruções ainda menores;
*elas são distribuídas entre as diversas CPUs para serem resolvidas concomitantemente.
Dessa forma, a velocidade de resolução de problemas será aprimorada exponencialmente.
Arquitetura multithread
Multithread demonstra ser uma boa alternativa para a execução de programas. Cada processo é associado a cada processo existe um contexto que descreve o estado atual da execução do processo (registradores, PC, etc). Cada processo possui pelo menos uma thread, representada pelo fluxo de execução com o seu contexto local. A proposta da arquitetura multithread é executar mais do que um processo/thread simultaneamente, aproveitando melhor as unidades funcionais inativas. Este mecanismo é conhecido por TLP - Thread Level Parallelism. Um processador multithread emprega uma técnica que permite que múltiplas threads despachem múltiplas instruções a cada ciclo para as unidades funcionais.
Por explorar os dois tipos de paralelismo, ILP e TLP, multithread usa de forma mais eficiente os recursos disponíveis e os speedups são maiores. O emprego de mutithread cria, em última análise, processadores virtuais para o usuário destes processadores. Tipos de Multithread As arquiteturas multithread dividem-se em tipos diferentes dependendo da forma que serão executados as threads no processador. Explicit multithreading é uma abordagem de execução (simultânea ou não) de vários fluxos de instruções (threads) de diferentes origens. Esta forma de execução divide-se em três tipos diferentes que serão apresentados abaixo. • Multithreading de grão fino, IMT - Interleaved Multi Thread, é o método em que a cada novo ciclo uma nova instrução de uma thread diferente é executada. Portanto existe uma alternância na execução das instruções das diferentes threads a cada ciclo. O processador muda de contexto a cada novo ciclo. Neste caso é possível eliminar conflitos de dependências de dados e aumentar o ganho na execução do pipeline. Exemplo do emprego de IMT é na arquitetura do processador Ultra Sparc T1. • Multithreading de grão grosso, BMT - Blocked Multi Thread, é o método em que a execução de uma thread só é interrompida quando um evento de alta latência ocorre, tal como um acesso à memória. Neste caso, a cada novo ciclo a execução permanece com a mesma thread até acontecer uma mudança de contexto, por exemplo quando é realizado um acesso à memória. Sendo assim, é possível esperar o resultado do acesso á memória executando uma nova thread. Exemplo do emprego da arquitetura BMT é na arquitetura do processador IBM PowerPC RS64-III. • SMT- Simultaneous Multi Thread, é uma técnica que permite múltiplas threads despacharem múltiplas instruções a cada ciclo para as UF, unidades funcionais, de um processador superescalar adaptado para execução multithread. As arquiteturas SMT combinam tanto o paralelismo em nível de instrução, ILP, como paralelismo em nível de thread, TLP. Por explorar os dois tipos de paralelismo, SMT usa de forma mais eficiente os recursos disponíveis e os speedups são maiores A figura abaixo apresenta comparativamente o funcionamento dos tipos diferentes de multithread
Arquitetura multicore
Multicore refere-se a uma arquitetura na qual um único processador físico incorpora a lógica principal de mais de um processador. Um único circuito integrado é usado para empacotar ou manter esses processadores. Esses circuitos integrados únicos são conhecidos como matriz. A arquitetura multicore coloca vários núcleos de processador e os agrupa como um único processador físico. O objetivo é criar um sistema que possa completar mais tarefas ao mesmo tempo, ganhando assim um melhor desempenho geral do sistema.
Essa tecnologia é mais comumente usada em processadores multicore, onde dois ou mais chips ou núcleos de processador são executados simultaneamente como um único sistema. Processadores baseados em vários núcleos são usados em dispositivos móveis, desktops, estações de trabalho e servidores.
O conceito de tecnologia multicore é centrado principalmente na possibilidade de computação paralela, que pode aumentar significativamente a velocidade e eficiência do computador ao incluir duas ou mais unidades de processamento central (CPUs) em um único chip. Isso reduz o consumo de calor e energia do sistema. Isso significa um desempenho muito melhor com menos ou a mesma quantidade de energia.
A arquitetura de um processador multicore permite a comunicação entre todos os núcleos disponíveis para garantir que as tarefas de processamento sejam divididas e atribuídas com precisão. No momento da conclusão da tarefa, os dados processados de cada núcleo são devolvidos à placa-mãe por meio de um único gateway compartilhado. Essa técnica melhora significativamente o desempenho em comparação com um processador de núcleo único de velocidade semelhante.
Processadores da atualidade
A nova microarquitetura Efficient da Intel, conhecida anteriormente pelo codinome “Gracemont”, foi projetada para garantir a transferência eficiente de tarefas em segundo plano para multitarefas modernas. 
Segundo a empresa, essa é a microarquitetura x86 mais eficiente da Intel com um alvo agressivo de área de silício para que as cargas de trabalho de vários núcleos possam ser escaladas com o número de núcleos, oferecendo ainda uma ampla faixa de freqüência.
A microarquitetura e o esforço de projeto focado permitem que o núcleo eficiente funcione em baixa voltagem para reduzir o consumo geral de energia, ao mesmo tempo em que cria a altura de potência para operar em freqüências mais altas. Isto permite que o Efficient-core aumente o desempenho para cargas de trabalho mais exigentes.
O núcleo Efficient pode utilizar diversos avanços técnicos para priorizar cargas de trabalho sem desperdiçar poder de processamento e para melhorar diretamente o desempenho com recursos de melhoria de instruções por ciclo (IPC), entre eles:
Em comparação com Skylake, a microarquitetura para CPU mais prolífica da Intel,e considerando o desempenho de thread único, o núcleo Efficient tem desempenho 40% maior com o mesmo consumo de mesma energia ou oferece o mesmo desempenho consumindo 40% menos energia. Já para desempenho em termos de rendimento, com quatro núcleos, oferece taxa de transferência 80% maior consumindo menos energia do que dois núcleos Skylake executando quatro threads ou o mesmo desempenho de rendimento enquanto consome 80% menos energia.
Core Performance: maior amplitude e profundidade
A nova microarquitetura Performance da Intel, conhecida anteriormente pelo codinome "Golden Cove", foi projetada para oferecer alta velocidade e ultrapassar os limites de baixa latência e do desempenho de aplicações de thread único. As cargas de trabalho estão crescendo em termos de código e exigindo mais recursos de execução. 
Conjuntos de dados também estão crescendo muito junto com os requisitos de largura de banda. A nova microarquitetura Performance da Intel garante um aumento significativo na eficiência energética para suportar melhor aplicações.
O núcleo Performance apresenta uma arquitetura mais ampla, mais profunda e mais inteligente, de acordo com a empresa:
Mais ampla: 6 decodificadores (em vez de 4), 8 caches µop (em vez de 6), 6 portas de alocação (em vez de 5) e 12 portas de execução (em vez de 10);
Mais profunda: arquivos de registro maiores, arquivos de registro físico maiores, buffer de reordenação mais profundo com 512 entradas;
Mais inteligente: melhor precisão na previsão de desvios, menor latência L1 efetiva reduzida, otimizações da largura de banda preditiva para gravação completa em L2.
O núcleo Performance é o núcleo de CPU de maior desempenho que a Intel já desenvolveu e supera os limites de baixa latência e desempenho de aplicação de thread único com:
Melhoria geomeana de cerca de 19% em uma ampla gama de cargas de trabalho sobre a 11ª geração da arquitetura Intel Core (Cypress Cove) em isofrequência para desempenho de uso geral;
Exposição para mais paralelismo e aumento no paralelismo de execução;
Intel Advanced Matrix Extensions, nova geração de avanços integrados para aceleração de IA, indicadas para inferência de aprendizado profundo e desempenho dos treinamentos, inclui hardware dedicado e nova arquitetura de conjunto de instruções para realizar operações de multiplicação de matrizes muito mais rápido;
Menor latência e melhores recursos para aplicações que trabalham com grandes volumes e grandes volumes de código.
Conceituar qualidade de fato é uma tarefa complexa, mas ela pode ser vista como um método gerencial que através de procedimentos disseminados por toda a organização, busca garantir um produto final que satisfaça às expectativas do cliente, dentro daquilo que foi acordado inicialmente.
No contexto de desenvolvimento de software, qualidade pode ser entendida como um conjunto de características a serem satisfeitas, de modo que o produto de software atenda às necessidades de seus usuários. Entretanto, tal nível de satisfação nem sempre é alcançado de forma espontânea, devendo ser continuamente construído. Assim, a qualidade do produto depende fortemente do seu respectivo processo de desenvolvimento.
Devido ao processo de globalização e consequente aumento de empresas concorrentes, a qualidade, hoje em dia, é crítica para a sobrevivência e o sucesso no mercado de software. Portanto, uma organização não se destacará neste mercado a menos que produza software de boa qualidade e que seus clientes percebam isso nos seus produtos e serviços. Neste contexto, há algumas razões que devem ser consideradas:
*Qualidade é competitividade: Uma forma do produto se destacar é através da qualidade do software e do suporte que é fornecido com ele. Com o amadurecimento do mercado, os usuários não querem apenas que a empresa fale que tem qualidade, mas que mostre a todos que a tem através de certificação internacional. Não ter uma certificação pode acarretar em desvantagem competitiva;
*Qualidade é essencial para a sobrevivência: Clientes estão buscando por qualidade. Se a empresa não tiver habilidade de sobreviver em um mercado altamente competitivo, ela está em débito com o mercado. A maioria das grandes organizações está reduzindo o número de fornecedores, e um meio de escolher os fornecedores é verificando quais deles têm certificações de qualidade;
*Qualidade é essencial para o mercado internacional: O mercado de software está cada vez mais se expandindo, se tornando global. A habilidade das empresas de mostrar qualidade possibilita sua colocação no mercado;
*Qualidade é custo/benefício: Um sistema de qualidade direciona para o aumento da produtividade e permanente redução de custos, dando ênfase à prevenção de inconsistências no desenvolvimento e, consequentemente, de defeitos. A maior parte das empresas sabe que corrigir defeitos após o desenvolvimento do software é mais dispendioso do que identificá-los e corrigi-los antes;
*Qualidade retém consumidores e aumenta lucros: Pouca qualidade normalmente custa muito mais. A maioria dos clientes não tolera falta de qualidade, e caso isso ocorra procuram por outros desenvolvedores. A preocupação com a qualidade aumenta a satisfação dos clientes e assegura os que já são por mais tempo.
Os consumidores de software necessitam de produtos cada vez melhores e mais rápidos de serem desenvolvidos para aumentarem a sua competitividade no mercado. Para que este objetivo seja cumprido, os fornecedores de software devem utilizar as melhores práticas da engenharia de software, corrigindo os defeitos assim que forem detectados.
Apesar de tudo isso, é preciso entender que o problema não está no software em si, mas na forma como as pessoas têm desenvolvido software. É de fundamental importância que as equipes de desenvolvimento tenham a contínua atenção com a aplicação dos conceitos de qualidade em seus projetos.
Principais normas nacionais e internacionais de qualidade.
* ISO 9126- Características da qualidade de produtos de software.
* NBR 13596- Versão brasileira da ISO 9126.
*ISO 14598- Guias para a avaliação de produtos de software, baseados na utilização prática da norma ISO 9126.
*ISO 12119, Características de qualidade de pacotes de software (software de prateleira, vendido como um produto embalado).
* IEEE P1061, Standard for Software Quality Metrics Methodology. Norma que trata das metodologias para padronização da qualidade de software, incluindo algumas abordagens de medição.
* ISO 12207, Software Life Cycle Process. Norma para a qualidade do processo de desenvolvimento de software.
* NBR ISO 9001, Sistemas de qualidade – Modelo para garantia de qualidade em projeto, desenvolvimento, instalação e assistência técnica (processo).
* NBR ISO 9000-3, Gestão de qualidade e garantia de qualidade. Aplicação da norma ISO 9000 para o processo de desenvolvimento de software.
* NBR ISO 10011, Auditoria de Sistemas de Qualidade (processo).
* CMMI, Capability Maturity Model Integration. Modelo da SEI (Instituto de Engenharia de Software do Departamento de Defesa dos USA) para avaliação da qualidade do processo de desenvolvimento de software. Não é uma norma ISO, mas é muito bem aceita no mercado.
* SPICE ISO 15504, Projeto da ISO/IEC para avaliação do processo de desenvolvimento de software. Ainda não é uma norma oficial ISO, mas o processo está em andamento.
Modelo de qualidade MPS.BR
O MPS BR é um programa mobilizador criado em dezembro de 2003, que contribui para melhoria de processos, desempenho dos negócios e alavancagem da inovação, tornando as empresas brasileiras mais competitivas.
Coordenado pela Associação para Promoção da Excelência do Software Brasileiro (SOFTEX), com o apoio do Ministério da Ciência, Tecnologia e Inovações e Comunicações (MCTIC), o MPS BR tem como objetivo apoiar a inserção da cultura da qualidade principalmente nas micro, pequenas e médias empresas brasileiras.
Porém o principal foco do MPS BR é melhorar a capacidade de desenvolvimento de software, serviços e as práticas de gestão de RH na indústria de Tecnologia da Informação e Comunicação(TIC). Para isto, foram elaborados 3 modelos:
*MR-MPS-SW: modelo de referência associado à melhoria de processo de Software.
*MR-MPS-SV: modelo de referência associado à melhoria de processo de Serviços.
*MR-MPS-RH: modelo de referência associado à melhoria de processo de Gestão de Pessoas.
MR-MPS-SW é o modelo de referência de software baseado em níveis de maturidade, que são uma combinação entre Processos e sua Capacidade.
O Processo é caracterizado por seu propósito e seus resultados esperados. O resultado esperado do processo é atendido por meio de atividades e tarefas. Cada nível do modelo é atendido por um conjunto de processos a serem implementados.
A Capacidade do Processo representa o grau de refinamento e institucionalização com que o processo é executado na organização/unidade organizacional. Cada nível do modelo é atendido por um conjunto de capacidade de processo associado.
O MR-MPS-SW define 7 níveis de maturidade, apresentado abaixo do menor ao maior:
*G – Parcialmente Gerenciado.
* F – Gerenciado.
* E – Parcialmente Definido.
* D – Definido.
* C – Totalmente Definido.
* B – Gerenciado Quantitativamente.
* A – Em otimização.
Cada um dos níveis acima é composto por um conjunto de Processos de Projeto e Processos Organizacionais, bem como um conjunto de Capacidade de Processo. Os Processos e Capacidade de Processos do MR-MPS-SW são apresentados na figura abaixo.
(mudar esse título) Qual a importância dessa certificação para melhorar a gestão de processos da empresa?
Utilizar o MPS-SW em seu negócio trará agilidade e resultados mais consistentes no desenvolvimento de sua empresa.
Em vez de depender da indefinição e incerteza nos diversos processos que fazem parte do desenvolvimento do seu negócio, você terá um modelo seguro a ser adotado e seguido que certamente poderá aprimorar o seu empreendimento.
Ao adotar essa metodologia e obter a certificação em sua empresa, os resultados a serem alcançados são mais que animadores. Algumas das consequências positivas dessa implementação e avaliação que poderíamos ressaltar são:
*melhora considerável na organização dos processos;
* aumento da margem de lucro;
* credibilidade da empresa;
* garantia da entrega final com qualidade.
Tecnologia Docker
Uma das tecnologias mais usadas no momento é a tecnologia Docker, O Docker é uma plataforma open source que facilita a criação e administração de ambientes isolados. Ele possibilita o empacotamento de uma aplicação ou ambiente dentro de um container, se tornando portátil para qualquer outro host que contenha o Docker instalado. Então, você consegue criar, implantar, copiar e migrar de um ambiente para outro com maior flexibilidade. A ideia do Docker é subir apenas uma máquina, ao invés de várias. E, nessa única máquina, você pode rodar várias aplicações sem que haja conflitos entre elas. 
Docker é uma linguagem de programação, instalado em uma plataforma criada com o intuito de auxiliar no processo de construções e gerenciamento de aplicativos.
Containers
Um container é um ambiente isolado. Um container contém um conjunto de processos que são executados a partir de uma imagem, imagem esta que fornece todos os arquivos necessários. Os containers compartilham o mesmo kernel e isolam os processos da aplicação do restante do sistema.
se você está desenvolvendo uma aplicação para um cliente, você pode fazer suas configurações nessa aplicação… Mas, em um ambiente convencional, você precisará replicar estas configurações para os outros ambientes de execução. Com o Docker, você estará fazendo isso em um ambiente isolado e, por causa da facilidade para replicação de containers, você acaba criando ambientes padronizados, tanto em desenvolvimento como em produção, por exemplo. Assim, você pode disponibilizar essa arquitetura toda para seu cliente, onde ele estiver: basta replicar os containers, que serão executados da mesma maneira em qualquer lugar.
O container possui uma imagem que contém todas as dependências de um aplicativo, ele é portátil e consistente em todas as etapas de desenvolvimento. Essa imagem é um modelo de somente leitura que é utilizada para subir um container. O Docker nos permite construir nossas próprias imagens e utilizá-las como base para os containers.
Algumas características do Docker
O docker consegue ter a maior parte dos benefícios das máquinas virtuais (isolamento do sistema, elasticidade de recursos de CPU e memória, etc) e ainda com a vantagem de utilizar muito menos recurso que uma VM, sendo muito mais rápido ao iniciar e executar.
É possível iniciar um contêiner em menos de 1 segundo, pois não existe um S.O. em cada contêiner.
A quantidade de recurso de memória que um contêiner necessita é muito menor do que uma máquina virtual necessita.
É possível você ter 20 a 30 contêineres executando em um servidor, mas é inviável você ter a mesma quantidade de VMs rodando numa mesma CPU.
Ele fornece uma camada adicional de abstração para que você possa administrar seus contêineres através de ferramentas o Docker Client (client de linha de comando), API Rest e do Docker File (arquivos descritores).
O docker empacota software com vários níveis de isolamento: limites de memória, CPU, limite de rede, isolamento do file system dentro do contêiner, limites de uso de I/O, etc.

Continue navegando