Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação Modular Importância da Modularidade • Os fatores externos de qualidade extensibilidade e reusabilidade dependem significativamente de um fator interno: modularidade. • Por isso é extremamente importante entender o que é modularidade e como pode ser alcançada. Critérios para Modularidade O que é modularidade? • Programação modular denota a construção de programas pela composição de partes pequenas para formar partes maiores. As partes são chamadas módulos. • A programação com módulos também pode ser chamada 'programming in the large', contrastando com 'programming in the small'. • Esta técnica de programação é baseada no princípio filosófico 'Dividir para conquistar', o qual sugere que um problema complexo seja dividido em subproblemas que possam ser resolvidos separadamente. • Mas programação modular não implica necessariamente em modularidade de software: é essencial saber como usar programação modular de forma a se obter modularidade. Assim como qualidade de software, modularidade é caracterizada por um conjunto de critérios: • decomposição modular • composição modular • entendimento modular • continuidade modular • proteção modular Estes aspectos devem ser favorecidos pelo estilo de modularização a ser utilizado. Decomposição • Dividir um problema em vários subproblemas a serem resolvidos separadamente (por pessoas diferentes) • O processo é repetitivo • Estrutura de conexão deve ser simples • Reduz complexidade da descrição de grandes sistemas • Projeto top-down, módulo de inicialização Hierarquia top-down Composição • Produzir módulos que possam ser facilmente conectados a outros para formar um sistema • Impacto sobre reusabilidade (qualidade) • Mercado de componentes de software • Bibliotecas de subprogramas, shells do Unix, pré- processadores Entendimento Modular • Produzir módulos que possam ser entendidos com o auxílio de poucos (ou nenhum) módulos relacionados • Impacto sobre extensibilidade e reusabilidade Continuidade Modular • Produzir módulos que quando alterados não impliquem na alteração da arquitetura ou de outros módulos do sistema • Propagação de mudanças • Impacto sobre extensibilidade • Constantes - representação de dados. • Na mudança de valor, a única coisa a atualizar é a definição constante. Esta regra pequena, mas importante é uma sábia precaução para a continuidade Continuidade Proteção Modular • Produzir módulos que não propaguem uma situação anormal de tempo de execução para muitos módulos • Erros causados em um módulo não vão ser detectados em outros módulos. • Extensibilidade • Validar dados nos módulos onde eles são lidos, tratamento de exceções em C++, Java e C#. Regras para Modularidade • Mapeamento direto. • Poucas interfaces. • Pequenas interfaces (acoplamento fraco). • Interfaces explícitas. • Ocultação de informações Mapeamento direto • Módulos devem corresponder a unidades sintáticas da linguagem • Impacto sobre decomposição, composição e proteção • É possível modularizar usando linguagens sem módulos? • A estrutura modular desenvolvida no processo de construção de um sistema de software deve continuar a ser compatível com qualquer estrutura modular desenvolvida no processo de de modelar o domínio do problema. Poucas Interfaces • Um módulo deve se comunicar com tão poucos módulos quanto possível. • Impacto sobre continuidade, proteção, composição, entendimento e decomposição. • Evitar módulos mutuamente recursivos Interfaces Pequenas • Se dois módulos se comunicam, eles devem trocar tão pouca informação quanto possível • Impacto sobre continuidade e proteção Interfaces Explícitas • Se dois módulos se comunicam, isto deve ser indicado nos módulos, ou pelo menos em um deles • Impacto sobre decomposição, composição, entendimento e continuidade. Informações Escondidas • Módulos só devem permitir o acesso a certas informações se elas são essenciais para a utilização dos módulos • Módulos clientes, módulos servidores e interfaces • O que? versus Como? • Impacto sobre continuidade, entendimento, composição, e decomposição A razão fundamental por trás da ocultação de informações é o critério de continuidade . Uma mudança de módulo, só se aplicam a seus elementos secretos, deixando os públicos intocados, Então outros módulos que o usam, não serão afetados.
Compartilhar