Buscar

SLIDE 4

Prévia do material em texto

Aula 04 – Aspectos Gerais de 
Sistemas Distribuídos e 
CMMI
Tema 01 – Sociedade
Conectada
Valter Castelhano de Oliveira
Sumário da Aula
• Sociedade conectada
• Engenharia de Requisitos
• CMMi
• Sistemas Distribuído
1 bilhão de lugares 
conectados
LUGARES
PESSOAS
COISAS
50 bilhões de 
coisas conectadas
5 bilhões de pessoas 
conectadas
Ritmo da Mudança
Em 2018!!!
850 M
PCs and tablets
9.3 BN
Mobile subscriptions
3.3 BN
Smartphone 
subscriptions
6.5 BN
Mobile broadband 
subscriptions
Um mundo conectado é apenas o começo
• Quando uma pessoa se conecta, seu mundo se 
altera.
• Com todo o mundo conectado, nosso mundo se 
altera.
Transformação da Indústria
Digitalização resulta em crescimento de toda a indústria de mídia
EM 2007 PARA 2016
Produtos de Media USD 381 bn  USD 352 bn
Serviços de Media online USD 21.7 bn  USD 104 bn
TOTAL USD 402 bn  USD 456 bn
Uma nova mentalidade
• Novo papel das telecomunicações
• Processamento e armazenamento – Cloud
• 2020: mobile a 1 giga
• 2020: redução consumo petróleo
• Internet das coisas e sensores
• Globalização de oportunidades
• Novos negócios e empreendedorismo
• Capacitação das pessoas
Desenvolvimento de sistemas, aplicativos, etc
Crise: Chaos Report!
Chaos report - http://www.standishgroup.com/
Sucesso projetos
Bem sucedido
Fracassado
Problemático
Pequenos Grandes
Custo desenvolvimento
Projetos pequenos: menos de $1 milhão
Projetos grandes: mais de $10 milliões
Chaos report - http://www.standishgroup.com/
Custo reparo sistema
1
6
10
40
70
500
0 100 200 300 400 500 600
Custo Relativo de correção de problemas
Requisitos
Design
Construção
Teste Des
Teste Aceitaçào
Produção
Et
ap
a 
ci
cl
o 
de
 v
id
a
Carr, J. "Requirements engineering and management: the key to designing quality complex systems", 
TQM Magazine, V12 N6, 2000
Processo de Engenharia de Sistemas
Definição de 
Requisitos
Design do Sistema
Desenvolvimento 
Subsistema
Integração do 
Sistema
Instalação do 
Sistema
Evolução do Sistema
Desativação do 
Sistema
Tema 2
Engenharia de Requisitos
Valter Castelhano de Oliveira
Engenharia de Requisitos
• Processo de estabelecer os serviços que o
consumidor requer do sistema e as restrições
pela quais ele é operado e desenvolvido
• Identificação de objetivos e oportunidades para
o novo sistema (system to-be)
• Definição de funcionalidades, restrições e
responsabilidades do novo sistema
• Registro de tudo em documento
Requisitos
• Níveis de abstração dos requisitos pode variar
desde o nível mais abstrato de serviço ou
desejo, passando por uma restrição do sistema
até um detalhamento funcional de uma
especificação formal
• Podemos ter requisitos com dupla função:
– Base para a oferta de um contrato - deve ser
aberto a interpretação
– Base para o próprio contrato - deve ser
definido em detalhe
Abstração de Requisitos
• Para estabelecer contrato para o desenvolvimento de um
grande projeto, requisito abstrato para não predefinir
uma solução.
• Requisitos redigidos de modo que os diversos
fornecedores possam apresentar propostas, oferecendo,
diferentes maneiras de atender às necessidades do
cliente.
• Contratado, o fornecedor elabora uma definição
detalhada do sistema para o cliente, de modo que o
cliente compreenda e valide o sistema.
• Estas variedades podem ser chamadas de documentos
de requisitos do sistema
Tipos de Requisitos
• Requisitos do usuário
– Linguagem natural e diagramas contendo funções e
restrições do futuro sistema. Redigido para
consumidores
• Requisitos do sistema
– Documento estruturado e detalhado. Escrito como um
contrato entre o cliente e o contratado
• Especificação de Sistema
– Descrição detalhada do sistema, base para o projeto
ou implementação. Escrito para os desenvolvedores
Categorias de Requisitos
• Requisitos Funcionais
– Declarações de funções que o sistema deve fornecer, como o
sistema deve reagir a entradas específicas e como deve se
comportar em determinadas situações. Ex. O sistema fornecerá
telas apropriadas para o usuário ler documentos no repositório
de documentos
• Requisitos não funcionais
– São restrições sobre os serviços ou as funções oferecidos pelo
sistema. Ex: restrições de tempos, processo de desenvolvimento,
padrões, leis e normas, etc.
• Requisitos de domínio
– São requisitos que se originam do domínio de aplicação do
sistema e que refletem características desse domínio. Podem ser
requisitos funcionais ou não funcionais
Requisitos imprecisos
• Requisitos declarados de forma imprecisa pode
causar problemas
• Ambiguidade no registro dos requisitos causa
diferentes interpretações de desenvolvedores e
usuários
• Considere o termo “visualizadores apropriados”
– Intenção do usuário - um visualizador de propósito
específico para cada tipo de documento
– Interpretação do desenvolvedor - Prover um
visualizador em texto que apresenta o conteúdo do
documento
Completude e consistência de requisitos
• Requisitos devem ser completos e consistentes
– Completo: incluir descrições sobre todas as
facilidades requeridas
– Consistente: inexistência de conflitos e contradições
nas descrições das facilidades do sistema
• Na prática é impossível produzir um documento
de requisitos completo e consistente
Requisitos não funcionais
• Definir as propriedades e restrições do sistema.
– Requisitos de produto: velocidade de execução,
confiabilidade, etc
– Requisitos organizacionais: padrões de processo
utilizado, requisitos de implementação, etc
– Requisitos externos: requisitos de
interoperabilidade, requisitos de legislação, etc
• Requisitos não funcionais podem ser mais
críticos que funcionais.
– Se não for satisfeito, o sistema vai ser inútil
Objetivos e requisitos
• Requisitos não funcionais dificuldade para
determinar precisamente
• Requisitos imprecisos podem ser difíceis de
verificar
• Objetivo
– Uma intenção geral como por exemplo fácil de utilizar
• Requisito não funcional verificável
– Uma sentença utilizando alguma medida que pode ser
objetivamente testada
• Objetivos são de grande valor para os
desenvolvedores assim que eles transmitem as
intenções dos usuários do sistema
Exemplo de objetivo e requisito
• Uma meta do sistema
– O sistema deve ser fácil de utilizar por controladores
experientes e deve ser organizado de modo que os
erros dos usuários sejam minimizados
• Um requisito não funcional verificável
– Controladores experientes devem ser capazes de
utilizar todas as funções do sistema depois de um
total de duas horas de treinamento. Depois desse
treinamento, o número médio de erros feitos por
usuários experientes não deve exceder dois por dia
Métricas para requisitos não funcionais
• Velocidade: transações por minuto, tempo de resposta
ao usuário, tempo de refresh de tela
• Tamanho: K bytes
• Facilidade de uso: tempo de treinamento, número de
telas de ajuda
• Confiabilidade: tempo média para falhar, probabilidade
de indisponibilidade, taxa de ocorrência de falhas,
disponibilidade
• Robustez: tempo de reinício após falha, porcentagem de
eventos que causam falha, probabilidade de dados
serem corrompidos
• Portabilidade: número de sistemas alvo, porcentagem de
declarações dependentes de sistema alvo
Requisitos de domínio
• Derivados do domínio da aplicação e descrevem
características do sistema e aspectos que
refletem o domínio
• Domínios disjuntos (especialista e
desenvolvedores).
• Se os requisitos de domínio não são satisfeitos,
o sistema talvez seja não aplicável
• Ex. : Regras físicas, padrões organizacionais,
normas,etc.
Requisitos do usuário
• Requisitos funcionais e não-funcionais devem ser
descritos para que sejam compreensíveis pelos
usuários que não tem conhecimento técnico
• Requisitos do usuário são definidos utilizando
linguagem natural, tabelas e diagrama
Problemas com linguagem natural 
• Falta de clareza
• É difícil ter precisão sem fazer o documento difícil
de ler
• Confusão de requisitos
• Requisitos funcionais e não funcionais podem estar
misturados
• Fusão de requisitos
• Requisitos diferentes podem ser expressos juntos
Como escrever requisitos 
• Utilizar formato padrão
• Utilizar linguagem de maneira consistente.
– “será” para os requisitos necessários
– “deverá” para os requisitos desejáveis
• Utilizar destaques no texto para identificar
partes chaves do requisito
• Evitar o uso de “jargões”
Requisitos de sistema 
• Especificações mais detalhadas dos requisitos
dos usuários
• Serve como base para modelar o sistema
• Deve ser utilizado como parte do contrato do
sistema
• Devem ser expressos utilizando modelos (model
driven)
Requisitos e desenho (design)
• Em princípio os requisitos deveriam descrever o
que o sistema deveria fazer e o projeto deveria
descrever como fazer isso
• Na prática, requisitos e desenho são
inseparáveis
– A arquitetura do sistema pode ser projetada para
ajudar a especificação de requisitos
– O sistema dever interoperar com outros sistemas.
Esta interoperação geram outros requisitos de design
– O uso de um projeto específico pode ser um requisito
do domínio do sistema
Problemas com a especificação de sistema 
em linguagem natural
• Ambiguidade
– Leitores e escritores do requisitos devem interpretar
as palavras da mesma maneira. Linguagem natural é
por natureza ambígua
• Muito flexível
– A mesma coisa pode ser dita de várias maneiras
diferentes na especificação
• Perda de modularização
– Estruturas em linguagem natural são inadequadas
para es
Especificação em linguagem natural 
• Uma forma limitada da linguagem natural deve
ser utilizadas para expressar requisitos
• Isto remove alguns problemas resultantes da
ambigüidade e flexibilidade e impõe um grau de
uniformidade na especificação
• Normalmente suportadas pelo uso de
formulários padrão
Especificações baseadas em 
formulários-padrão 
• Definição da função ou entidade
• Descrição das entradas e de onde elas vem
• Descrição das saídas e para onde elas vão
• Indicação de outras entidades requeridas
• Pré e pós condições (se apropriadas)
• Os efeitos colaterais (se existirem)
Documentos de requisitos 
• Os documentos de requisitos são declarações
oficiais sobre o que é requerido dos
desenvolvedores do sistema
• Deveria incluir ambos uma definição e uma
especificação de requisitos
• Ele NÃO é um documento de projeto. O tanto
quando possível, ele deveria dizer O QUE o
sistema deveria fazer e não COMO deveria fazer
Documentos de requisitos especificam 
Requisitos 
• Especificam o comportamento externo do sistema
• Especificam as restrições de implementação
• Fáceis de serem alterados
• Servem como ferramenta de referência para a
manutenção do sistema
• Gravam registros previstos a respeito do ciclo de vida do
sistema (por exemplo: prever as mudanças)
• Especificam a resposta para eventos não esperados
• Devemos antecipar a formalização dos requisitos.
Tema 3
CMMi
Valter Castelhano de Oliveira
CMMI – Motivação
Principais problemas das organizações durante a
gerência dos seus projetos:
Falta de definição das responsabilidades.
Retrabalho por falta de qualidade.
Problemas com fornecedores.
Falta de conhecimento técnico.
Falta de competências para gerenciar os projetos.
CMMI – Motivação
Falta de uma ferramenta de apoio.
Falta de uma metodologia de apoio.
Mudanças constantes no escopo.
Recursos humanos insuficientes.
Mudanças de prioridade.
Estimativas incorretas.
CMMI – Motivação
Riscos não avaliados corretamente.
Falta de apoio da alta administração.
Problemas de comunicação.
Não cumprimento do orçamento.
Não cumprimento dos prazos.
Influenciadores
Pessoas Tecnologia
Processos
CMMI
O que é o CMMI®?
Capability Maturity Model Integration
1. Qualidade ou estado de ser capaz.
2. Característica ou faculdade de desenvolver 
potencialidade.
3. Facilidade ou potencial para indicar o uso ou o 
desenvolvimento.
CMMI
O que é o CMMI®?
Capability Maturity Model Integration
1. Qualidade ou estado de estar maduro.
2. Estado de adaptação ou ajustamento ao seu próprio
meio.
3. Estado ou condição de pleno desenvolvimento.
CMMI
O que é o CMMI®?
Capability Maturity Model Integration
1. Representação de algo, geralmente em miniatura.
CMMI
Definição
CMMI (Capability Maturity Model Integration – Modelo Integrado de
Maturidade e de Capacidade) é um modelo de maturidade para
melhoria de processo, destinado ao desenvolvimento de produtos e
serviços, composto pelas melhores práticas associadas a atividades
de desenvolvimento e manutenção que cobrem o ciclo de vida do
produto, desde a concepção até a entrega e manutenção
(SEI – Software Engineering Institute, 2006).
Modelos CMMI
Definição
São coleções de melhores práticas e de metas
para melhoria de processos que as organizações
utilizam para avaliar e melhorar seus processos.
As metas e práticas são organizadas em grupos
chamados de "áreas de processo."
Modelo CMMI
CMMI para Aquisição (CMMI-ACQ)
Orientações para as organizações que gerenciam
a cadeia de abastecimento sobre aquisição e
integração de produtos e serviços de forma a
atender às necessidades do cliente.
Foi projetado para as empresas que trabalham
com os fornecedores para montar um produto ou
fornecer um serviço.
Modelo CMMI
CMMI para Desenvolvimento (CMMI-DEV)
Fornece orientações para melhorar a eficácia,
eficiência e qualidade de produtos e
desenvolvimento de serviços.
Foi projetado para empresas que se concentram
no desenvolvimento de produtos e serviços.
Modelo CMMI
CMMI para Serviços (CMMI-SVC)
Fornece orientação às organizações que
estabelecem, gerenciam e prestam serviços que
atendam as necessidades dos clientes e usuários
finais.
Foi projetado para empresas que focam a
criação, gestão e prestação de serviços.
Estrutura do Modelo CMMI
São 22 áreas de processo distribuídas em:
 Quatro categorias.
 Cinco níveis de maturidade.
As metas e práticas são organizadas em grupos
chamados áreas de processo.
CMMI – Visão Geral
Tema 4
Sistemas Distribuídos
Valter Castelhano de Oliveira
Sistemas Distribuídos
Definição
Sistema distribuído é um sistema no qual os
componentes de hardware e software,
localizados em computadores de uma rede,
comunicam e coordenam suas ações somente
pela troca de mensagens (Coulouris).
• Consequências desta definição:
– Concorrência de componentes.
– Ausência de relógio global.
– Falhas independentes.
Sistemas Distribuídos
Definição
• Coleção de computadores independentes
que se apresentam ao usuário como
um único sistema coerente (Tanenbaum).
• Essa definição implica em:
– Máquinas autônomas (camada de software unifica e
torna a visão homogênea).
– Usuários pensam que estão lidando com um único
sistema.
Vantagens dos Sistemas Distribuídos
• Economia
– Aproveitar recursos ociosos; é mais barato ter
vários processadores interconectados do que um
supercomputador.
• Distribuição inerente
– Algumas aplicações são distribuídas por natureza.
• Tolerância a falhas
– Em caso de falha de uma máquina, o sistema
pode sobreviver, mesmo com desempenho
degradado.Vantagens dos Sistemas Distribuídos
• Crescimento incremental
– O poder computacional pode ser aumentado
através da inclusão de novos equipamentos.
• Flexibilidade
– Maior flexibilidade na alocação dos recursos,
permitindo que usuários compartilhem dados,
processamento e dispositivos.
Desvantagens dos Sistemas Distribuídos
• Aplicações mais complexas
– Pouco software de alto nível disponível
para sistemas distribuídos.
• Segurança
– Necessidade de construir mecanismos
para controle de acesso às informações.
• Dependência da rede
– Falhas.
– Capacidade de tráfego insuficiente.
Conceitos de Hardware
• Sistemas distribuídos consistem de
várias CPUs
– Diferentes maneiras de se organizar o
hardware (interconexão e comunicação).
• Classificação
– Multiprocessador (memória compartilhada).
– Multicomputador.
Clusters Computacionais
Definição
Sistema distribuído de computadores
independentes e interligados cujo objetivo é suprir
a necessidade de um grande poder computacional.
Clusters Computacionais
Vantagens:
• Alto desempenho.
• Escalabilidade.
• Tolerância a falhas.
• Balanceamento de carga.
• Independência de fornecedores.
• Baixo custo.
Clusters Computacionais – Tipos
• Alta Disponibilidade e tolerância a
falhas – disponibiliza serviços e recursos de
forma contínua. Usado em base de dados de
missões críticas: correio, servidores de
arquivos e aplicações.
• Balanceamento de carga – distribui o
tráfego de entrada ou requisições de
recursos aos nós que executam os mesmos
programas entre as máquinas que compõem
o cluster. Usado, em geral, em servidores de
web.
Clusters Computacionais – Tipos
• Combinação entre alta disponibilidade e
balanceamento de carga – sistemas ativos por um
longo período de tempo e em plena condição de uso.
Usado em servidores de web que necessitam de alta
disponibilidade, e-mail, notícias ou ftp.
• Processamento distribuído ou processamento
paralelo – aumenta o desempenho das aplicações,
dividindo-as em pequenas tarefas distribuídas entre as
estações. Usado para computação científica ou análises
financeiras, tarefas típicas para exigência de alto poder
de processamento.
Clusters Computacionais – Beowulf
• Não exige uma arquitetura específica, tão pouco
máquinas homogêneas.
• Conexão entre os nós, que pode ser feita por meio
de ethernet.
• Deve haver um ou mais nós mestres (front-end)
para realizar o controle dos nós escravos (back-
end).
• O sistema operacional, baseado em Linux, contendo
todas as ferramentas necessárias para a
configuração do cluster.
Clusters Computacionais – Beowulf
Clusters Computacionais – Beowulf
É necessário que haja um nó mestre (servidor)
que realiza toda a distribuição das tarefas e o
monitoramento do desempenho do cluster.
Clusters Computacionais – OpenMosix
• Distribui processos – ao detectar o alto volume
de processamento, migram as instâncias entre
as máquinas do cluster, sendo processadas
simultaneamente, sem a necessidade de
adaptação do código.
• Diferença: ao invés de quebrar os processos
como em clusters Beowulf, o Mosix realiza
migração.

Continue navegando