• Nenhum resultado encontrado

Rodrigo M A Almeida

N/A
N/A
Protected

Academic year: 2019

Share "Rodrigo M A Almeida"

Copied!
45
0
0

Texto

(1)

Engenharia de Software

Processo de desenvolvimento

Modelagem do sistema

Arquiteturas

Atingindo qualidade de software

Rodrigo M A Almeida

(2)
(3)

Processo de desenvolvimento

(4)

Processo de desenvolvimento

Existem diversas ferramentas para modelar,

avaliar e escolher uma arquitetura

Design patterns: soluções genéricas para problemas de

baixo-nível

Convenções de Design: coleção de padrões que auxiliam

na definição de uma atividade

(5)

Processo de desenvolvimento

Geralmente não existe um modelo de referência

para o sistema em desenvolvimento

Existem algumas soluções genéricas, conhecidas

como arquiteturas de software

– Focar em apenas uma arquitetura pode trazer problemas

– Fazer um bom projeto esta relacionado em selecionar, adaptar e integrar diversos estilos de arquiteturas para produzir o

(6)

Processo de desenvolvimento

Projetar a arquitetura de um software é um

processo iterativo

O documento final (Software Architecture

(7)

Modelagem do sistema

Porque modelar o sistema

– Entender o sistema

– Determinar a possibilidade de reutilização de módulos de outros sistemas

– Apresentar a "planta-baixa" para o sistema a ser construido – Imaginar detalhes sobre a evolução do sistema

– Analizar dependências

(8)

Modelagem do sistema

Alguns problemas no projeto não possuem solução

pronta

Os projetistas devem decompor o sistema para isolar os

problemas principais

Alguns modelos para decompor o projeto:

Funcional

Orientado às caracteristicas

Orientado à informação

Orientado aos processos

(9)

Modelagem do sistema

Funcional

Separar as funcionalidades/requerimentos em módulos

Começar com as funcionalidades que estão listadas na

ficha de requerimentos

Se necessários separar as funcionalidades em módulos

para facilitar a implementação

(10)

Modelagem do sistema

Orientado à funcionalidade

Atribuir funcionalidades/responsabilidade à cada um

dos módulos

O projeto de alto nível descreve o sistema em questões

de serviço e da coleção de funcionalidades

(11)

Modelagem do sistema

Orientado à informação

Foco em como os dados serão tratados pelos módulos

O projeto de alto nivel descreve as estruturas de dados

O projeto de baixo nível descreve

Como os dados estão distribuidos nos módulos

(12)

Modelagem do sistema

Orientado à processo

Divide o sistema em diversos processos concorentes

Projeto de alto nível

Identifica os principais processos do sistema

Atribui tarefas para os processos

Explica como os processos são coordenados

(13)

Modelagem do sistema

Orientado à eventos

Foca nos eventos que o sistema tem que atender e atribui

responabilidade do antendimento para diferentes módulo

O progeto de alto nível apresenta as entradas esperadas

O projeto de baixo nível decompõe o sistema em estados e

descreve como os eventos modificam o estado atual do

(14)

Modelagem do sistema

Um projeto é

modular

quando cada atividade do

sistema é feita por apenas um módulo, e as

entradas e saídas são bem definidas

Um software é

bem definido

quando a interface é

acertiva e especifica precisamente o

(15)

Modelagem do sistema

- Visualização

Entre os modos de visualização do sitema

os mais comuns são:

Decomposição

Dependencias

Generalizações

Execução

Implementação

Entrada/Saída

(16)

Modelagem do sistema

- Visualização

Decomposição

A vista da decomposição apresenta o sistema

como unidades programáveis

É geralmente hierárquica

(17)

Modelagem do sistema

- Visualização

Dependências

Mostra a interdependências entre as unidades

do software

É muito útil no planejamento do projeto

(18)

Modelagem do sistema

- Visualização

Generalização

Mostra partes do software que são

generalizações ou especializações de outras

É importante quando se projeta um software

(19)

Modelagem do sistema

- Visualização

Execução

É feita com o uso de fluxogramas, mostrando os

componentes e conexões entre esses em

"run-time"

Cada componente é uma entidade distinta,

geralmente um processo separado.

Uma conexão é um mecanismo de interconexão

como um canal de comunicação, região de

(20)

Modelagem do sistema

- Visualização

Implementação

Mapeia cada unidade com os respectivos

arquivos de código que contém a

implementação do módulo

Auxilia o programador a encontrar as

(21)

Modelagem do sistema

- Visualização

Entrada/Saída

Este diagrama mapeia os recursos, conexões e

componentes de interface do sistema

(22)

Modelagem do sistema

- Visualização

Tarefas

Separa o projeto em taferas a serem

implementadas de modo que possam ser

dividas entre a equipe

(23)

Arquiteturas

Cano-Filtro

Cliente-servidor

Ponto-à-ponto

Repositório

(24)

Arquiteturas

Cano-Filtro

O "cano" são os dados

O "filtro" são as transformações de informação

(25)

Arquiteturas

Vantages

– O projetista pode compreender o efeito de todo o sistema na entrada e saída, como a composição dos filtros

– Os filtros podem ser reutilizados facilmente em outros sistemas – Evolução do sistema é simples

– Permitir a execução simultânea de filtros

Desvantagem

– Incentiva o processamento em lote

(26)

Arquiteturas

Cliente-Servidor

O servidor possui serviços

O cliente apenas faz requisições

(27)

Arquitetura

Ponto-à-ponto

Cada componente age como um cliente e um

servidor para os outros pontos.

Qualquer componente pode iniciar uma

solicitação de qualquer outro componente

Caracteristicas

• Escalona muito bem

• Aumenta a capacidade do sistema • Alta tolerância à falhas

(28)

Arquiteturas

Os componentes interagem enviando

mensagens e reagindo à enventos

– O componente pode se inscrever para receber uma dada informação

– Quando outro componente anuncia um evento, todos os assinantes são avisados

Caracteristicas

– Sistema de fácil evolução e personalização.

– Fácil de reutilizar componentes de outros sistemas controlados por eventos.

– Necessita de repositório compartilhado de componentes para compartilhar dados persistentes.

(29)

Arquiteturas

Repositório

Dois componentes

• Um central

• Uma coleção de outros componentes que acessam o central para obter informações, atualizar dados etc.

Definindo quem pode falar

• Banco de dados tradicional: cada transação aciona um processo

• Quadro negro: O sistema central controla o acionamento do processo

(30)

Arquiteturas

Maior vantagem: abertura

– Pode ser disponibilizada para diversos programadores ao mesmo tempo

(31)

Arquiteturas

Camadas

– Cada camada provê recurso para a camada superior e utiliza das funções da camada inferior.

– Uma ponte pode permite que uma camada fure essa hierarquia. – O projeto deve contemplar protocolos explicando como um par de

camadas irá se comunicar

Vantagens

– Alto nível de abstração High levels of abstraction

– Relativamente simples de modificar/adicionar camadas

Desvantagens

– Nem sempre é simples de estruturar o sistema em camadas (NOT!)

(32)

Arquiteturas

(33)

Arquiteturas

Combinações

– Arquiteturas reais raramente se baseiam em um único estilo – Os tipos de arquitetura podem ser combinadas de várias

maneiras

• Use estilos diferentes em camadas diferentes (por exemplo, a arquitetura cliente-servidor no sistema geral com

componente de servidor decomposto em camadas)

• Estilos diferentes para modelar componentes diferentes ou tipos de interação

(34)

Atingindo qualidade de

software

Em geral busca se obter através do projeto

as seguintes caractristicas

– Modificabilidade – Performance – Segurança – Confiabilidade – Robustez

(35)

Atingindo qualidade de

software - Modificabilidade

O projeto deve ser facil de mudar

Numa mudança deve-se classificar as

unidades em

– Afetadas diretamente: acomodam as mudanças requisitadas – Afetadas indiretamente: as responsabilidades não mudam, mas

devem ser revisadas para continuar funcionando com as unidades modificadas

(36)

Atingindo qualidade de

software - Modificabilidade

Táticas para minimizar o número de unidades

afetadas por uma mudança:

– Antecipar as mudanças esperadas: Identificar as decisões de design que são mais propensos a mudar, e encapsular cada um em sua unidade de software próprio

– Coesão: Quanto mais coesas, menor a chance de que uma mudança de requisito altere muitos objetos

(37)

Atingindo qualidade de

software - Performance

Entre os pontos importantes temos:

– Tempo de resposta

(38)

Atingindo qualidade de

software - Performance

Táticas para melhorar o desempenho

incluem:

Melhorar a utilização dos recursos

Gerenciar a alocação de recursos de forma mais

eficaz

First-come/first-served: Os pedidos são

processados na ordem em que são recebidos

Prioridade explícita: Os pedidos são processados

em ordem de suas prioridades atribuídas

Primeiros primeiro prazo: Os pedidos são

processados em ordem de seus prazos iminentes

(39)

Atingindo qualidade de

software - Segurança

Duas principais características para a segurança

temos a imunidade e a resiliência

Imunidade: a capacidade de frustrar uma tentativa

de ataque

A arquitetura incentiva a imunidade por:

• Assegurando que todos os elementos de segurança estão incluídos no desenho

• Minimizar falhas de segurança exploráveis

Resiliência: capacidade de recuperar rapidamente e

facilmente de um ataque

• A arquitetura incentiva resiliência por:

• Segmentar funcionalidades para conter ataques

(40)

Atingindo qualidade de

software - Confiabilidade

Um sistema é confiável se desempenha as

suas funções necessárias corretamente sob

condições assumidas

É o software internamente livre de erros?

Uma falta é o resultado de erro humano,

em comparação com uma falha, que é uma

degeneração do comportamento

especificado

(41)

Atingindo qualidade de

software - Confiabilidade

Detecção de falhas passiva: esperar até que a

falha ocorrer durante a execução

Detecção de falhas ativa: verificar periodicamente

se há sintomas ou tentar prever quando irão

ocorrer falhas

Exceções: situações que fazem com que o sistema

se desvie do seu comportamento desejado

Exceções típicas incluem:

– Deixar de prestar um serviço

– Prestação do serviço errado

– Dados corrompidos

– Violação de um sistema

(42)

Atingindo qualidade de

software - Confiabilidade

Programação com N-versões

Dois times implementam separadamente a

mesma funcionalidade utilizando técnicas

diferentes

A chance de uma falha acontecer com os dois

sistemas é menor

(43)

Atingindo qualidade de

software - Robustez

Um sistema é robusto, se inclui mecanismos para acomodar

ou se recuperando de problemas no ambiente ou em outra

unidade

A desconfiança mútua: cada unidade de software assume

que as outras unidades contêm falhas

Táticas de robustez diferem das táticas de confiabilidade

Táticas de recuperação são semelhantes:

Reverter para estado checkpoint

Abortar uma transação

Iniciar uma unidade de backup

Fornecer serviço reduzido

Corrigir os sintomas e continuar o processamento

(44)

Atingindo qualidade de

software - Usabilidade

Usabilidade reflete a facilidade com que um

usuário é capaz de operar o sistema

(45)

Atingindo qualidade de

software - $$$

Deve-se sempre levar em conta questões financeiras no

desenvolvimento de um software

Comprar vs. Fazer

• Tempo x Dinheiro • Confiabilidade

• Componentes prontos introduzem barreiras • Ficar na mão do fornecedor

Desenvolvimento inicial vs Manutenção

• Modificabilidade salva gastos com manutenção mas aumenta complexidade e atrasa o projeto

Tecnologias novas vs. conhecidas

Referências

Documentos relacionados

de professores, contudo, os resultados encontrados dão conta de que este aspecto constitui-se em preocupação para gestores de escola e da sede da SEduc/AM, em

O objetivo desse trabalho ´e a construc¸ ˜ao de um dispositivo embarcado que pode ser acoplado entre a fonte de alimentac¸ ˜ao e a carga de teste (monof ´asica) capaz de calcular

Os principais resultados obtidos pelo modelo numérico foram que a implementação da metodologia baseada no risco (Cenário C) resultou numa descida média por disjuntor, de 38% no

Os supercondutores magnéticos, volantes de inércia e os condensadores são apropriados para aplicações que necessitam de grande potência de saída em pouca

Objetivo: O presente trabalho tem como objetivo analisar uma série temporal de transplantes de órgãos humanos em diversos Estados e quais as políticas públicas

Portanto, conclui-se que o princípio do centro da gravidade deve ser interpretado com cautela nas relações de trabalho marítimo, considerando a regra basilar de

Esses comportamentos são também vistos por Simmel como uma patologia porque, assim como ao avaro e ao pródigo, o dinheiro pode tornar-se um fim em si mesmo,

Narrativamente consensual, o sexo anal, assim como nas cenas de Sasha Grey, parece destravar a boca como caixa de ressonância.. Olham fixamente