Modularização. Prof. Gustavo Willam Pereira. ENG10082 Programação II. Créditos: Prof. Clayton Vieira Fraga Filho

Documentos relacionados
Princípios e Conceitos de Desenho de Software. Projeto de Sistemas de Software Prof. Rodrigo Ribeiro

Engenharia de Software II

Programação Orientada a Objetos SANTOS, Rafael

Fundamentos de Teste de Software

Gerenciamento do Escopo do Projeto (PMBoK 5ª ed.)

Inteligência Artificial

ENGENHARIA DE SOFTWARE

Matriz de Especificação de Prova da Habilitação Técnica de Nível Médio. Habilitação Técnica de Nível Médio: Técnico em Logística

Arquitecturas de Software Enunciado de Projecto

Gestão da Qualidade. Aula 13. Prof. Pablo

CRIAÇÃO DE TABELAS NO ACCESS. Criação de Tabelas no Access

LIBERAÇÃO DE ATUALIZAÇÃO CORDILHEIRA

Manual do Usuário (Firma Inspetora) Versão 1.8. CMCP - Controle da Marcação Compulsória de Produtos

Soluções Inovadoras. FlyFlex. Fly Solution

Aula 03. Processadores. Prof. Ricardo Palma

LOCALIZAÇÃO DE EMPRESAS Aspectos qualitativos. Profª MSc. Patrícia Tavares

PROCEDIMENTO GERAL Gestão documental

SISTEMAS DISTRIBUÍDOS

DOCUMENTO DE REQUISITO DE SOFTWARE

Desenvolvimento de Software

Disponibilizada a rotina Vale Presente (LOJA830) no módulo Controle de Lojas (SIGALOJA), assim como já é utilizada no módulo Front Loja (SIGAFRT).

Objetivo do Portal da Gestão Escolar

Curso de Engenharia de Produção. Organização do Trabalho na Produção

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens

Algoritmos e Programação II

Modelagem De Sistemas

Sefaz Virtual Ambiente Nacional Projeto Nota Fiscal Eletrônica

MODELAGENS. Modelagem Estratégica

FastCube 2.0 Programmer Manual

O que é um banco de dados? Banco de Dados. Banco de dados

Modelo Entidade Relacionamento (MER) Professor : Esp. Hiarly Alves

,QVWDODomR. Dê um duplo clique para abrir o Meu Computador. Dê um duplo clique para abrir o Painel de Controle. Para Adicionar ou Remover programas

Tópicos Avançados em Banco de Dados Dependências sobre regime e controle de objetos em Banco de Dados. Prof. Hugo Souza

MDS II Aula 04. Concepção Requisitos Diagrama de Casos de Uso (Use Cases)

Curso de Desenvolvimento de Negócios Sociais e Inclusivos

PROJETO (OU DESIGN) DO SOFTWARE Diagrama de Estrutura

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

REITORA Ulrika Arns. VICE-REITOR Almir Barros da Silva Santos Neto. DIRETOR DO NTIC Leonardo Bidese de Pinho

Classificação de Ativo Orçamento e Provisão de Despesa

Gestão Documental. Gestão Documental

T.I. para o DealerSuite: Servidores Versão: 1.1

SISTEMA OPERACIONAL - ANDROID

Fundamentos de Bancos de Dados 3 a Prova Caderno de Questões

Métricas de Software

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

II Semana de Ciência e Tecnologia do IFMG campus Bambuí II Jornada Científica 19 a 23 de Outubro de 2009

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Introdução à orientação a objetos

10. CPU (Central Processor Unit) Conjunto das instruções Estrutura interna Formato das instruções...

Análise de Sistemas 3º Bimestre (material 2)

Plano de Projeto. Tema 3. Gerência de Projetos Profa. Susana M. Iglesias

MBA em Gerenciamento de Projetos. Teoria Geral do Planejamento. Professora: Maria Erileuza do Nascimento de Paula

PESQUISA OPERACIONAL -PROGRAMAÇÃO LINEAR. Prof. Angelo Augusto Frozza, M.Sc.

MANUAL DE PROCEDIMENTO V.WEISS & CIA LTDA PROCEDIMENTO PADRÃO PARA VIAGEM A SERVIÇO ATUALIZADO: JULHO/2015 V.WEISS & CIA LTDA

Banco de Dados I. Prof. Edson Thizon

CATÁLOGO DE APLICAÇÕES Rateio CC Contas a Pagar

Fundamentos de Sistemas Operacionais

Lógica de Programação. Profas. Simone Campos Camargo e Janete Ferreira Biazotto

Os passos a seguir servirão de guia para utilização da funcionalidade Acordo Financeiro do TOTVS Gestão Financeira.

1 Visão Geral. 2 Instalação e Primeira Utilização. Manual de Instalação do Gold Pedido

Análise Qualitativa no Gerenciamento de Riscos de Projetos

8 Crie um pequeno sistema para controle automatizado de estoque, com os seguintes registros:

Sérgio Luisir Díscola Junior

REGULAMENTO DA POLÍTICA DE MANUTENÇÃO E GUARDA DO ACERVO ACADÊMICO DA ESCOLA DE DIREITO DE BRASÍLIA EDB

Modelo Comportamental

AULA 1 INTRODUÇÃO A BANCO DE DADOS E VISÃO GERAL DO SQL CONCEITUANDO BANCO DE DADOS MODELO RELACIONAL

PROCEDIMENTOS PARA INCLUSÃO DE PERIÓDICOS NO PORTAL DE PERIÓDICOS FCLAR UNESP

Experiência 04: Comandos para testes e identificação do computador na rede.

CCS Cadastro de Clientes do SFN. Roteiro de Testes. Versão 2.1.7

Exercício. Exercício

Compliance. Título: Manual de Política de Rateio de Ordens. Assunto: Rateio de ordens para os fundos. Data: Abril 2016.

MANUAL DO INSTALADOR XD EM AMBIENTES MICROSOFT WINDOWS

Manual do Usuário. VpetConverter Ferramenta para adequação de documentos para Petições Eletrônicas.

GRADUAÇÃO TECNOLÓGICA EM GESTÃO DA PRODUÇÃO INDUSTRIAL GERENCIAMENTO ESTATÍSTICO DOS PROCESSOS PRODUTIVOS (tópicos da aula 3)

Copyright - IS Intelligent Software

CASOS DE TESTE PALESTRANTE: MARCIA SILVA

Módulo Vendas Balcão. Roteiro passo a passo. Sistema Gestor New

GIL, Antonio Carlos. Como elaborar projetos de pesquisa. São Paulo, Editora Atlas,

NORMA DE ELABORAÇÃO DE INSTRUMENTOS NORMATIVOS - NOR 101

Modulo II Padrões GRASP

Redes de Computadores

MÓDULO 2 Topologias de Redes

PRÓ-REITORIA DE GRADUAÇÃO

Prof. José Maurício S. Pinheiro - UGB

DIMENSÕES DE PESQUISA EM ENGENHARIA DE SOFTWARE

Adotada Total / Parcial. Fundamento da não adoção. Recomendação. Não adotada. 1. Princípios Gerais

2 Workshop processamento de artigos em serviços de saúde Recolhimento de artigos esterilizados: é possível evitar?

Cadeira de Tecnologias de Informação. Ano lectivo 2009/2010. Sites dinâmicos. Com Expression Web TI2009/10 EWD_1. Filipa Pires da Silva (2009)

Sistemas Operacionais. Rodrigo Rubira Branco

POLÍTICA DE INVESTIMENTO PEIXE PILOTO PARA CLUBES DE INVESTIMENTOS Vitória, 26 de agosto de 2009.

Análise de Processos. Por José Luís Carneiro

Esta melhoria depende de execução do update de base U_UPDFIN, conforme procedimento para implementação.

VERSÃO RESPOSTAS PROVA DE MARKETING

Acesso ao Sistema Usuário: MASTER Senha : MASTER (maiúsculo ou minúsculo)

Laboratório Virtual de Sistema de Controle Via Web em Labview. 1/6

Processo de Gerenciamento do Catálogo de Serviços de TIC

SISTEMA ISS - CURITIBA LIVRO ELETRÔNICO

MANUTENÇÃO SISTEMAS INFORMATIZADOS PARA O PLANEJAMENTO E CONTROLE DA MANUTENÇÃO. CCMS- Computer Maintenance Management System

Transcrição:

Modularização Prof. Gustavo Willam Pereira ENG10082 Programação II Créditos: Prof. Clayton Vieira Fraga Filho

Modularização O software pode ser dividido em módulos, que são integrados para satisfazer aos requisitos do sistema. É mais fácil de se resolver um problema complexo quando ele é dividido em partes administráveis. 2

Modularização Módulos: conjuntos de elementos mantidos pela equipe de desenvolvimento que fornecem e usam serviços de outros elementos do software; Podem ser compostos de outros elementos mais simples (p.e: procedimentos e funções), ou componentes (provedores de serviços); Um módulo bem projetado tem um objetivo simples e apresenta interface reduzida (pequena) para outros módulos. Isso leva o módulo a ser: REUSÁVEL ( apto a ser incorporado em muitos programas) MODIFICÁVEL (pode ser alterado sem forçar grandes modificações nos outros módulos) Ex: Sistema de vendas: fazer vendas, efetuar recebimento, lançar no caixa ou contas a receber 3

Modularização Módulo pode ser só uma procedure ou function (prog. in the small), ou pode conter diversos componentes agrupados e com um propósito em comum: tipos constantes variáveis procedures functions... Um módulo ENCAPSULA seus componentes. Para conseguir ter uma interface pequena, um módulo deixa poucos componentes visíveis para fora dele. Esses componentes são exportados pelo módulo. Os outros componentes permanecem escondidos (hidden) dentro do módulo, sendo usados para ajudar na implementação dos componentes exportados. 4

Modularização Um módulo é uma unidade cujos elementos estruturais estão fortemente conectados entre si e (relativamente) fracamente conectados com elementos de outras unidades. (McClelland and Rumelhart, 1995) São estruturalmente independentes mas que funcionam juntas. Módulo de vendas ( proc. Realizar venda, forma_pag, lançar_caixa_avista, lanca_contas_receber_prazo, cartao_credito) Este módulo deve receber informação do modulo de Gestao_produto (cod_prod, valor, estoque) Este módulo deve enviar informação para o modulo Financeiro (total_venda, venda_avista, venda_prazo, venda_cartao) 5

Modularização Granularidade dos módulos: A granularidade do artefato de software é um fator relevante que ajuda a definir o conceito de módulo. Uma instrução, por exemplo, tem um nível de granularidade menor, que uma função ou procedimento. Uma biblioteca, que agrupa diversos funções e procedimentos tem uma granularidade maior. Programming in the Small Programming in the Large Instruções Função ou procedimento Biblioteca 6

Modularização Um bom projeto modular reduz a complexidade, facilita a mudança e resulta numa implementação mais fácil ao estimular o desenvolvimento paralelo de diversas partes de um sistema. Ocultamento de informação Independência funcional Coesão (alta) Acoplamento (baixo) 7

Modularização Submodularidade: módulos grandes e caros, além de difíceis de entender e modificar devido a sua estrutura monolítica; Supermodularidade: infinidade de pequenos módulos com custo elevado devido a necessidade de integração entre módulos 8

Modularização Vantagens da Modularização Reduz a complexidade Possibilita o desenvolvimento em paralelo Facilita a modificação Possibilita a reutilização 9

Ocultamento de informação Módulos devem ser especificados e projetados de tal forma que as informações (procedimentos e dados) contidas num módulo sejam inacessíveis a outros módulos que não necessitem destas informações. Reduz a ocorrência de efeitos colaterais Limita o impacto global das decisões locais de projeto Enfatiza comunicação através de interfaces controladas Desencoraja o uso de dados globais Leva ao encapsulamento - um atributo de projeto de alta qualidade Resulta em qualidade de software 10

Ocultamento de informação Um subconjunto das propriedades do módulo é escolhido como parte pública, oficial, disponível para os clientes. Sistema Acadêmico: Modulo RH disponibiliza parte publica (nome do professor) parte secreta (salario, número dos dependentes) Sistema Comercial : Modulo Gestão Produtos - disponibiliza parte publica (produto, preço_venda, estoque) parte secreta (custo_mercadoria, fornecedores) Sistema Contábil : Modulo Fiscal - disponibiliza parte publica (total de vendas, total de impostos) parte secreta (calculo dos impostos). 11

Independência funcional A independência funcional é conseguida desenvolvendo-se módulos com função de um só propósito" e "aversão" a interações excessivas com outros módulos. Decorrência direta da modularidade e ocultamento de informação Obtida quanto o Módulo tem finalidade única e aversão a iteração excessiva com outros módulos Um software com módulos independentes é mais fácil de ser desenvolvido e mais fácil de ser mantido. A independência funcional de um módulo é medida usando-se dois critérios estruturais: coesão e acoplamento. Ex: Gestão de produtos para se fazer o calculo do custo de produtos é necessário ter acesso: as despesas operacionais (que estão disponiveis no modulo contabil) as despesas de impostos (que estão disponíveis no modulo fiscal) 12

Independência funcional Coesão medida da unidade funcional relativa de um módulo. cola que mantém os componentes do módulo juntos Indicação qualitativa do grau em que um módulo focaliza apenas uma coisa Um módulo coeso realiza uma única tarefa dentro de um procedimento de software Alta coesão -> maior independência funcional Coesão é a medida em que os componentes de um módulo estão relacionados, se eles têm responsabilidade em comum ou se foram apenas agrupados por acaso. 13

Independência funcional Acoplamento medida da interdependência relativa entre os módulos. a força da conexão entre módulos O quão "amarrado" uma parte do sistema é às outras partes. O quão dependente uma parte do sistema é das estruturas internas das outras partes do sistema. É a medida de interconexão entre módulos numa estrutura de software Acoplamento diz respeito a independência entre componentes, a medida de impacto que a alteração da implementação de um componente tem sobre outros. 14

Independência funcional Cada módulo deve ser altamente coeso (highly cohesive) módulo é visto como "unidade" componentes internos a um módulo estão relacionados Módulos devem apresentar baixo acoplamento (low coupling) módulos possuem poucas interações com outros módulos podem ser compreendidos separadamente 15

Acoplamento Quanto menor o número de conexões entre os módulos, menor a chance do efeito cadeia (propagação); Deseja-se trocar um módulo com um mínimo de riscos de ter de trocar outro módulo; Deseja-se que cada mudança do usuário afete o mínimo de módulos; Enquanto estiver sendo realizada a manutenção de um módulo, não deve existir a necessidade de se preocupar com a codificação interna de nenhum outro módulo. elevado baixo por conteúdo comum externo por controle por imagem por dados 16

Acoplamento por conteúdo Dois módulos apresentam acoplamento por conteúdo se um faz referência ao interior do outro. Ocorre quando um módulo faz uso de dados ou controle mantida dentro dos limites de outro modulo Ou quanto são feitos desvios para o meio de um módulo Tal acoplamento quebra o conceito de caixa preta caixa branca ou transparente Viola o Ocultamento de informação Prejudica reuso, manutenção e testes. baixo alto 17

Acoplamento por Área Comum Quando vários módulos fazem referência a uma área de dados global Existe quando o projeto está organizado de modo que os dados estejam acessíveis a partir de um repositório de dados comum: Dificuldade em determinar qual componente é responsável pela definição de uma variável com um determinado valor. Área de Dados Comum baixo alto 18

Acoplamento por Área Comum baixo alto 19

Acoplamento externo Ocorre quando um módulo se comunica ou colabora com elementos de infra-estrutura como funções de sistema operacional, facilidades de banco de dados, função de telecomunicações. Também quando há imposição de padrões externos, para comunicação entre aplicativos. É necessário, mas deve ser limitado para não comprometer a adaptabilidade do software. Ex: Software que utiliza a API do Windows Software que utiliza serviços do Linux como agendamento de eventos Uso de Store Procedures de um Banco de Dados específico (SQL Server) Formato de Dados de uma empresa específica. baixo alto 20

Acoplamento por controle Dois módulos são acoplados por controle se um passa um grupo de dados (controle) para o outro para controlar sua lógica interna. Em outras palavras: x e y se comunicam por parâmetros sendo que um deles é um flag que controla o comportamento de um dos módulos Uma variável que controla decisões em um módulo superior é passada como parâmetro para o módulo subordinado É impossível para o componente controlado funcionar sem a orientação do componente que o controla. baixo alto 21

Acoplamento por controle Juntar registros de clientes Registro de transação Módulo: Juntar registros de clientes Início Obter como_proceder Executar Controlar E/S do sistema enviando como_proceder recebendo registro mestre e/ou registro de transação Fim Como proceder Como proceder Registro mestre Obter opção Controlar E/S do sistema Valores de Como proceder : 1 - Obter próximo registro mestre 2 - Obter próximo registro de transação 3 - Obter ambos Decompor a operação em múltiplas operações primitivas baixo alto 22

Acoplamento por controle Juntar registros de clientes Como proceder Registro mestre Registro de transação Obter opção Obter registro mestre Obter registro de transação Módulo: Juntar registros de clientes Início Obter como_proceder Caso como_proceder 1 : Executar Obter registro mestre recebendo registro mestre 2 : Executar Obter registro de transação recebendo registro de transação 3 : begin Executar Obter registro mestre recebendo registro mestre Executar Obter registro de transação recebendo registro de transação fim Fim baixo alto 23

Acoplamento por imagem Existem estruturas de dados mais complexas na lista de argumentos. Ocorre quando dois módulos fazem referência a uma mesma estrutura de dados. Este tipo de acoplamento fornece mais dados do que o necessário a um módulo. registro aluguel = combustivel modelo do carro data de locação km percorrida locatario fim baixo alto 24

Acoplamento por dados Dois módulos são acoplados por dados se eles se comunicam por parâmetros Lista simples de argumentos dados simples são passados, existe a correspondência de itens um a um. baixo alto 25

Coesão A coesão de um módulo é o grau de relacionamento entre atividades que este realiza (métodos, responsabilidades) Quanto maior o grau de coesão melhor A coesão e o acoplamento estão inter relacionados, pois a coesão de um módulo geralmente determina o quanto ele será acoplado a outros módulos. Boa coesão é uma forma de minimizar acoplamento Um módulo coeso realiza uma única tarefa dentro de um procedimento de software Alta coesão maior independência funcional alta baixa funcional sequencial comunicacional procedural temporal lógica coincidental 26

Coesão Indicação qualitativa do grau em que um módulo focaliza apenas uma coisa. A escala da coesão é não linear É desnecessário determinar o nível preciso de coesão É importante saber identificar a existência de baixa coesão 27

Coesão Considerando componentes como: Classes em um pacote, Responsabilidades de um classe, Linhas de código em um método Coesão é a medida em que os componentes de um módulo estão relacionados, se eles têm responsabilidades em comum ou se foram apenas agrupados por acaso 28

Coesão Coincidental As tarefas executadas no módulo se relacionam fracamente. Os elementos não têm razão aparente para estarem juntos. Um objeto não representa nenhum conceito do domínio e nem da arquitetura Falsa idéia de reuso e componentização; baixa alta 29

Coesão Lógica (ou de utilidade) As tarefas realizadas são relacionadas logicamente Os elementos do módulo estão envolvidos em tarefas similares. Elementos contribuem para atividades da mesma categoria geral, onde a atividade ou as atividades a serem executadas são selecionadas fora do módulo. Dificulta a manutenção, testes e reuso; baixa alta 30

Coesão Temporal Módulo cujos elementos estão envolvidos em atividades que estão relacionadas no tempo. Ou seja, estão agrupados no mesmo módulo porque são processados no mesmo intervalo de tempo. Tem alto acoplamento com vários outros módulos Exemplos comuns: Função de inicialização (main) que provê valores defaults para uma série de funções diferentes Função ou bloco de código de finalização que limpa variáveis internas antes de terminar execução baixa alta 31

Coesão Temporal Controlar inicializações Mensagens Nome das variáveis Nome dos arquivos Inicializar variáveis Abrir arquivos Emitir mensagens iniciais Difícil de modificar, pois será necessário olhar vários módulos do software (que dependem destas informações) quando houver alguma mudança: utiliza dados de vários módulos. Também dificulta o reuso: como reutilizar todo o método InicializarVariaveis? baixa alta 32

Coesão Procedural (Procedimental) Os elementos do módulo encontram-se juntos em um procedimento adotado para solucionar o problema (em uma mesma unidade do algoritmo). Os elementos de processamento de um módulo estão relacionados devem ser executados numa ordem específica baixa alta 33

Coesão Procedural act tratarsaque v erificalimitecredito Possui limite? true false efetuarsaque bloquearsaque baixa alta 34

Coesão Comunicacional Um módulo tem coesão de comunicação quando suas atividades estão relacionadas pelo uso da mesma entrada ou da mesma saída Os elementos de processamento utilizam-se da mesma área de estrutura de dados. baixa alta 35

Coesão seqüêncial As funções internas estão envolvidas em atividades de tal forma, que os dados de saída de uma atividade sirvam como dados de entrada para a próxima. Este fluxo estabelece uma seqüência de execução das funções. Módulo: Gravar dados do cliente Início Abrir arquivo Gravar dados Fechar arquivo Fim Gravar dados do cliente Dados do cliente baixa alta 36

Coesão seqüêncial Módulo: Exibir consulta Início Abrir arquivo da conta Consultar número da conta Exibir dados da conta Fim baixa alta 37

Coesão funcional Um módulo com coesão funcional contém elementos que contribuem para execução de uma [e apenas uma] tarefa relacionada ao problema. Contém todos os elementos e apenas aqueles necessários para realizar uma única tarefa bem definida. baixa alta 38