O que é modularidade? Sérgio Soares scbs@cin.ufpe.br

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

Introdução ao Design

Análise e Projeto de Software

Desenho de Software. Desenho de Software 1

Padrões de projeto 1

Aspectos técnicos do desenvolvimento baseado em componentes

Utilização de Análise de Características Dinâmicas em analises estáticas.

2 Engenharia de Software

2 Desenvolvimento de Software Orientado a Aspectos

build UNIP Sistemas de Informação Análise Essencial de Sistemas 3 Prof.Marcelo Nogueira A produção de Software é uma atividade build and fix.

Separação de Interesses Programação Estruturada e Programação Orientada a Objetos Entrelaçamento de Código Espalhamento de Código

Roteiro. Interfaces de Programação de Aplicações (Application Programming Interfaces) Conceitos BásicosB. ! Definição

Critérios para Apoiar a Decisão Sobre o Momento de Parada dos Testes de Software

Ciência da Computação ENGENHARIA DE SOFTWARE. Análise dos Requisitos de Software

Engenharia de Requisitos

Banco de Dados Aula 02. Colégio Estadual Padre Carmelo Perrone Profº: Willian

Análise e Projeto Orientados a Objeto

UML Linguagem de Modelagem Unificada

Paradigmas de Linguagens de Programação

Princípios de Engenharia de Software Resumo 1 Semana 1 Versão 1.0 Data:11/03/2004

Introdução. Aulas. ltodi.est.ips.pt/es. Detalhes administrativos Definição de engenharia de software Contexto Relação com outras áreas e disciplinas

Requisitos de Software

Programação Orientada a Objeto

Design Rules. The Power of Modularity (Capítulos II e III) Rodrigo Bonifácio

ISO/IEC 12207: Gerência de Configuração

Professor: Curso: Disciplina:

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Universidade Federal de Pernambuco

Processos de Desenvolvimento de Software. Prof. Hélio Engholm Jr

Identificação de Interesses Transversais: Uma Visão Geral

INSTRUÇÃO DE SERVIÇO PARA ELABORAÇÃO DE PLANOS GERAIS DE PROJETOS DE SISTEMAS OU APLICATIVOS

Software product lines. Paulo Borba Informatics Center Federal University of Pernambuco


Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Histórico da Orientação a Objetos Ciclo de vida de Desenvolvimento de SW

Engenharia de Software III

Modelagem de Software

UML 2. Guia Prático. Gilleanes T.A. Guedes. Novatec. Obra revisada e ampliada a partir do título Guia de Consulta Rápida UML 2

Extração da Métrica WMC a partir de Código Java

ENG1000 Introdução à Engenharia

Copyright Total Metrics

Objetivos. Processos de Software. Tópicos abordados. O processo de software. Modelos genéricos de modelos de processo de software.

Processos de Design de IHC (Parte II)

Feature-Driven Development

Dado: Fatos conhecidos que podem ser registrados e têm um significado implícito. Banco de Dados:

Projeto de Arquitetura

Documento de Arquitetura

UML & Padrões Aula 7. UML & Padrões - Profª Kelly C C Silva

Ciência da Computação ENGENHARIA DE SOFTWARE. UML-Unified Modeling Language Linguagem de Modelagem Unificada

Ao introduzir o sistema ERP, o empresário reconhece imediatamente os benefícios e ferramentas que podem

sistemas de informação nas organizações

Sistemas ERP. Profa. Reane Franco Goulart

A Figura... mostra a arquitetura técnica de serviços na Web

Engenharia de Software I

Engenharia de software para desenvolvimento com LabVIEW: Validação

Modelo para Documento de. Especificação de Requisitos de Software

Engenharia de Requisitos

TRABALHO DE DIPLOMAÇÃO Regime Modular ORIENTAÇÕES SOBRE O ROTEIRO DO PROJETO FINAL DE SISTEMAS DE INFORMAÇÕES

FTAD Formação Técnica em Administração Módulo de Gestão de Materiais ACI Atividade Curricular Interdisciplinar Prof. Marcus Fontes

Desenvolvimento de grandes aplicações com a programação orientada a objeto do LabVIEW

Engenharia de Software Processo de Desenvolvimento de Software

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

Administração de CPD Chief Information Office

Engenharia de Software

Padrão Básico de Projeto: Interfaces e Polimorfismo

Ontologia de Domínio da Biodisponibilidade de Ferro: Uma Experiência no Projeto Nutri-Fuzzy-Orixás

Felipe Denis M. de Oliveira. Fonte: Alice e Carlos Rodrigo (Internet)

Identificando a Formação de Ilhas de Conhecimento em Projetos de Software

ESPECIFICAÇÃO E VERIFICAÇÃO DE REGRAS DE DESIGN EM PROGRAMAS JAVA E ASPECTJ

FTAD Formação Técnica em Administração Módulo de Gestão de Materiais ACI Atividade Curricular Interdisciplinar Prof. Gildo Neves Baptista jr

Processos de Software

Programa do Módulo 2. Fundações do Modelo Objeto

! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico. " Crise do Software

Nome: Login: CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA

FUNDAMENTOS DA ORIENTAÇÃO A OBJETOS- REVISÃO

MVC e Camadas - Fragmental Bliki

Eduardo Bezerra. Editora Campus/Elsevier

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Modelos. Comunicação com clientes

UNIP Ciência da Computação / Sistemas de Informação TED I - Orientações Gerais para Elaboração dos Documentos

Transações no Mundo SOA. Luciano Oliveira Solution Consultant

Engenharia de Software II

Programas eram lineares e com poucos módulos (Programação estruturada) Aumento da complexidade dos sistemas e difícil reusabilidade dos mesmos

Rede de Computadores II

Gerenciador de Log. Documento Visão. Projeto Integrador 2015/2. Engenharia de Software. Versão 2.0. Engenharia de Software

Sistemas Distribuídos

Métodos de Construção de Software: Orientação a Objetos. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico. " Crise do Software

Revisão de Banco de Dados

INF 2125 PROJETO DE SISTEMAS DE SOFTWARE Prof. Carlos J. P. de Lucena

Prof.: Clayton Maciel Costa

Iniciando com o OpenEdge Architect. Camila Valentin Sr. Instructor, Consultant Global Field Services

Sistemas de Informação

SISTEMAS DE INFORMAÇÃO GERENCIAIS

PROTÓTIPO TIPO DE UM SOFTWARE AGENTE SNMP PARA REDE WINDOWS

FRAMEWORK PARA GERENCIAMENTO E MONITORAMENTO DE

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br

Transcrição:

O que é modularidade? Sérgio Soares scbs@cin.ufpe.br

AOSD Aspectos tem como objetivo aumentar a modularidade dos sistemas...... mas 2

O que é modularidade??? 3

Parnas, 1972 modularization is a mechanism for improving the flexibility and comprehensibility of a system while allowing the shortening of its development time D.L. Parnas. On the Criteria To Be Used in Decomposing Systems into Modules. Communications of the ACM, Vol. 15, No. 12, pp. 1053 1058, 1972. 4

Modularidade O critério utilizado para dividir o sistema em módulos torna mais ou menos efetiva a modularidade Ainda Parnas... 5

1970 A well-defined segmentation of the project effort ensures system modularity. Each task forms a separate, distinct program module. At implementation time each module and its inputs and outputs are well-defined, there is no confusion in the intended interface with other system modules. At checkout time the integrity of the module is tested independently; there are few scheduling problems in synchronizing the completion of several tasks before checkout can begin. Finally, the system is maintained in modular fashion, system errors and deficiencies can be traced to specific system modules, thus limiting the scope of detailed error searching. Gauthier, Richard; Pont, Stephen. Designing Systems Programs, (C), Prentice-Hall, Englewood Cliffs, 1970. 6

OK, mas, e os critérios? Como separar o sistema em módulos? Avanços em programação modular (na década de 70) eram: 1. allow one module to be written with little knowledge of the code in another module 2. allow modules to be reassembled and replaced without reassembly of the whole system. 7

Não é tão simples assim! Os exemplos de sistemas problemáticos eram exatamente os altamente modulares!!! Que utilizavam as técnicas mencionadas no slide anterior 8

Que benefícios esperar da modularidade? Gerencial Menor tempo de desenvolvimento (grupos separados trabalhando em paralelo com pouca comunicação) Flexibilidade Possibilidade de realizar mudanças drásticas em um módulo sem mudar outros módulos Compreensão Deve ser possível estudar o sistema um módulo por vez 9

Modularização/Decomposição Certas decisões de negócio devem ser tomadas antes de trabalhar nos módulos Avaliar alternativas considerando decisões que impactam no sistema (em mais de um módulo) 10

Critérios para decomposição Passos do processamento / Flow chart Editor de texto entrada, operação 1, operação 2, saída Information hiding Editor de texto armazenamento, interface com o usuário (E/ S), operação 1, operação 2 Quais os impactos de mudanças no meio de armazenamento? 11

Information hiding e um guardanapo O guardanapo da desgraça David L. Parnas. The secret history of information hiding. Software pioneers: contributions to software engineering, p.p 399-409, Springer-Verlag, 2002. 12

Qual o segredo da modularidade? Definir interfaces que sejam sólidas Módulos devem encapsular informações que tendem a variar esconder detalhes e possíveis mudanças Interfaces devem ser duradouras! Não deveriam ser complexas, mas beautiful Information hiding é o segredo! 13

Information hiding é difícil Quanto tempo investir em avaliar o que pode mudar no futuro? Como justificar o investimento? time-to-market Software baseado em versões anteriores mal projetadas Manutenções podem deteriorar o projeto 14

Information hiding É a base para Tipos de dados abstratos Orientação a objetos Desenvolvimento baseado em componentes 15

Como medir modularidade? Coesão Como calcular? Acoplamento Como calcular? Separação de interesses Como calcular? 16

Coesão Chidamber, S.R.; Kemerer, C.F. A metrics suite for object oriented design. IEEE Transactions on Software Engineering, Volume 20, Issue 6, p.p 476 493, 1994. Coesão em métodos Relação entre os atributos utilizados pelos métodos de uma classe Métodos que utilizam diferentes conjuntos de atributos não tem coesão Falta de coesão = MNC MC MNC métodos não coesos MC métodos coesos 17

Acoplamento Considere uma classe A que usa/ acessa uma classe B Se colocarmos uma interface entre as duas classes a métrica aumenta? Acoplamento entre classes Número de classes referenciadas por uma classe Chidamber, S.R.; Kemerer, C.F. A metrics suite for object oriented design. IEEE Transactions on Software Engineering, Volume 20, Issue 6, p.p 476 493, 1994. 18

Separação de interesses Em AspectJ um aspecto pode implementar todo o código referente a um interesse transversal Mas o código do aspecto pode fazer referência a interfaces (OK!) classes (hummmm...) métodos concretos (ops...) atributos (danou-se) membros privados (agora ferrou de vez) 19

Ou seja Aspectos (interesses transversais) diminuem a modularidade de classe Para evoluir classes é necessário olhar para os aspectos que a modificam Deveríamos olhar apenas a própria classe e as interfaces das outras classes que a mesma utiliza Pontos de vistas diferentes sobre quais são os módulos de um sistema. Cada classe é um módulo? 20

Design Structure Matrix (DSM) Visualização de dependências entre parâmetros (classes, casos de uso, aspectos) de uma aplicação Dependência cíclica! 21

Design rules Um tipo de interface que define restrições que classes satisfazem e que limitam/coordenam o efeito dos aspectos sobre essas classes Join points necessários Nomes de membros Pre/pós-condições O objetivo é o mesmo de Parnas: permitir que módulos evoluam sem impactar em outros módulos Márcio Ribeiro et. al. Analyzing Class and Crosscutting Modularity with Design Structure Matrixes. SBES 2007. 22

Design rules Interfaces entre componentes Desacopla componentes 23

DSM Versão OO Márcio Ribeiro et. al. Analyzing Class and Crosscutting Modularity with Design Structure Matrixes. SBES 2007. 24

DSM Versão AO Márcio Ribeiro et. al. Analyzing Class and Crosscutting Modularity with Design Structure Matrixes. SBES 2007. 25

DSM Versão AO + DR Márcio Ribeiro et. al. Analyzing Class and Crosscutting Modularity with Design Structure Matrixes. SBES 2007. 26

Resumindo Aspectos precisam evoluir para atingir seu objetivo: MODULARIDADE DR auxiliam a modularidade de classe e aspecto Desenvolver linguagens que garantam a implementação das DR Isso se aplica a todo e qualquer tipo de sistema? CLARO QUE NÃO! 27

Software Productivity Group http://www.cin.ufpe.br/ 28

Bibliografia Gauthier, Richard; Pont, Stephen. Designing Systems Programs, (C), Prentice-Hall, Englewood Cliffs, 1970. Parnas, David L. On the Criteria To Be Used in Decomposing Systems into Modules. Communications of the ACM, Vol. 15, No. 12, pp. 1053 1058, 1972. Parnas, David L. The secret history of information hiding. Software pioneers: contributions to software engineering, p.p 399-409, Springer-Verlag, 2002. Ribeiro, Márcio et. al. Analyzing Class and Crosscutting Modularity with Design Structure Matrixes, SBES 2007. 29