Conceitos.

Slides:



Advertisements
Apresentações semelhantes
Desenvolvimento de aplicativos Orientados a Objetos: Definição e Características THIAGO IDEALI.
Advertisements

Como planejar a equipe e criar casos de testes OO
Qualidade de Software Aula 4
Desenvolvimento de Software Orientado por Aspectos Autores: 4033 – Daniel Grilo 4223 – Nelson Rodgrigues Autores: 4033 – Daniel Grilo 4223 – Nelson Rodgrigues.
Aspect Oriented Software Development - AOSD 1 Elaborado por: Bruno Nunes nº 3202 Pedro Casqueiro nº 2163.
Redes de computadores I
Fundamentos de Engenharia de SW
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO ENGENHARIA DE SOFTWARE Métricas de Software Prof.ª Adriana dos Santos Caparróz Carvalho.
Identificando requisitos
Paradigmas de Programação
Gerenciamento de Projetos
Engenharia de Software
Processos de Software Introdução
Orientação por Objectos > Modelo de Processo OO > Identificação de Classe e Objectos Aula 12.
Centrado na arquitetura
Análise Orientada a Objetos
Faculdade de Ciências Sociais de Aplicadas de Petrolina – FACAPE
Faculdade de Ciências Sociais e Aplicadas de Petrolina – FACAPE
Projeto Arquitetural de Software Orientado a Aspectos
Adélia Barros Requisitos Adélia Barros
Professora: Aline Vasconcelos
Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.
Introdução ao paradigma de programação: Orientado a Objetos
Professor: Rogério Lopes Disciplina: Engenharia de Software II Fortium Sistemas da Informação Engenharia de Software II.
Análise Estruturada O mais amplamente usado dos métodos de modelagem de requisitos Modelos que retratam fluxo e o conteúdo da informação (dados e controle)
Engenharia Reversa É o processo de derivar as especificações lógicas dos componentes do sistema a partir de sua descrição física com auxílio de ferramentas.
Tecnologia da Informação Orientação a Aspectos
Análise e Projeto de Sistemas
TIPOS DE TESTES APLICÁVEIS E NÃO APLICÁVEIS AO PROJETO
Padrões para Atribuições de Responsabilidades
Aspectos Avançados em Engenharia de Software Aula 3 Fernanda Campos
PROGRAMAÇÃO ORIENTADA A ASPECTOS EM JAVA Introdução a conceitos teóricos e práticos Adriano G. do Prado José Eduardo M. Lemos José Fernando da S. Cruz.
Princípios e Conceitos de Software(v2)
Banco de Dados Aplicado ao Desenvolvimento de Software
Definição É um padrão de desenvolvimento utilizado na orientação a objeto quando queremos manter baixo o nível de acoplamento entre diferentes partes.
Uma visão geral Grupo: Alexandre Henrique Vieira Soares
Separation of Concerns (SoC)
Prof.Alfredo Parteli Gomes
Fundamentos de Engenharia de SW
Gerenciamento de Configuração
Arquitetura de software
Desenvolvimento de Sistemas Orientados a Aspectos
Equipe: Fernando Calheiros Flavia Leite Eduardo Wagner
Projeto de Banco de Dados
Aspect Oriented Programming (AOP)
Acoplamento e Coesão Modelagem e Programação Orientada a Objetos
SISTEMAS DISTRIBUIDOS Aula 4
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
O Processo Unificado (UP)
Padrão- MVC Model, View, Controller
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
Engenharia de Software
Modelos de Qualidade para indivíduos e grupos: PSP & TSP
Integração de Ferramentas CASE
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE AULA 5
Métodos Ágeis e Programação Extrema (XP)
Engenharia de Software
Testes de SW Aula 24.
Discussing Aspects of AOP Alunos: Ezequiel Jonacir Mazza João Andrei Cetenareski Curso: Mestrado em Informática Aplicada Disciplina: Orientação a Objetos.
Introdução a Orientação a Objetos
Arquitetura de Software Projetos de Interface
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS Semana /08/2012 Professor Leomir J. Borba-
Introdução à Programação Orientada a Objeto
Orientação a Objetos e Java Alexandre Mota  Centro de Informática, UFPE.
Módulo II Capítulo 1: Orientação a Objetos
©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/38 Análise e Projeto de Sistemas Introdução à Análise e ao Projeto de Software.
IF 718 Análise e Projeto de Sistemas Augusto Sampaio Vitor Braga (Estágio docência) Camila Sá (Monitora) Parte do material cedido pela Qualiti Software.
Introdução a Métricas de Software Tópicos Avançados em Engenharia de Software III Danielle Dias e Cristine Gusmão / UFPE-PE.
Programação orientada a Aspectos Radio Manager System.
Análise Orientada a Objetos Por Patrícia Braga Centro Universitário Jorge Amado.
Transcrição da apresentação:

Conceitos

Conceitos e Princípios de Modelagem e Projeto de Software Conhecimento geral Independente de linguagens de programação, técnicas, banco de dados, plataforma de desenvolvimento

Modelo Modelo: abstração de algo com a finalidade de entendê-lo antes de construí-lo Para desenvolver sistemas complexos, é necessário abstrair diversas visões do sistema Para isso, desenvolve-se modelos para as visões

Por que modelar? Testar algo antes de construir (simulação, provas formais, execução) Comunicação com stakeholders Gerenciamento da complexidade Separação de partes a serem tratadas de cada vez

Princípios de Projeto e Desenvolvimento de Software Dividir para Conquistar (divide and conquer) Separação de interesses (separation of concerns) Representar o problema e a solução em diferentes perspectivas Lembrar que alguém irá manter o software.

Princípios de modelagem de software O objetivo principal de uma equipe de desenvolvimento é produzir software, não modelos Criar modelos úteis, que auxiliem o processo, e aumentem a produtividade da equipe Não criar mais modelos que o necessário Criar modelos que possam ser alterados Construa modelos úteis; não tente construir modelos perfeitos O esforço de melhora do modelo trará benefícios?

Princípios de projeto de software Componentes devem ser fortemente coesos Cada componente deve ter funcionalidade única Componentes devem ser fracamente acoplados entre si e com o ambiente Maior acoplamento -> maior propagação de erros e gastos com manutenção

Coesão vs. Acoplamento Coesão Acoplamento Módulos executam uma tarefa simples Pouca interação entre módulos Acoplamento Grau de interconexão entre módulos Conexão simples entre módulos resulta em módulos que são mais fáceis de entender Baixa propagação de erros.

Separação de Interesses Todo problema complexo pode ser mais facilmente tratado se ele puder ser dividido em partes Cada parte refere-se a interesses diferentes Não subestimar o esforço de integrar as partes

Modularidade Software monolítico não pode ser entendido Muitas variáveis Grande quantidade de caminhos de execução Alta complexidade Não modularizar demais ... nem de menos (overmodularity e undermodularity) Encontrar um balanceamento pode ser difícil

Refinamento Refinamento top-down é o desenvolvimento baseado em refinar os graus de detalhe do software Detalhes de baixo-nível são descobertos durante o processo de desenvolvimento

Um problema de manutenção Suponha que você é responsável por manter um grande sistema que gerencia funcionários e a folha de pagamento de uma organização. E se a organização decide que você implemente um novo requisito: criar um log de todas as mudanças de dados dos funcionários? A mudança inclui: deduções, aumentos, horas extra, ... Dados pessoais, cargo Como implementar esse requisito?

Um problema de manutenção Procurar no código e inserir chamadas para um método de log nos locais necessários Caso o sistema tenha sido bem projetado e construído, o código pode precisar de alterações em poucos locais. Entretanto, na maioria dos sistemas, as inserções seriam feitas em muitos locais. Dificuldade de garantir que a mudança tenha efeito em todos os locais necessários

Crosscutting concerns O tipo de log do exemplo é um cross-cutting concern. Ele não pode ser isolado ou encapsulado em uma ou mais classes específicas cross-cutting concerns são relativos a todo o sistema, não apenas a partes deste O log envolve mudanças em vários locais, em todo o software

Por que AOP? AOP é projetada para tratar esses cross-cutting concerns através de um mecanismo - o aspecto. Aspectos são usados para expressar cross-cutting concerns e automaticamente incorporá-los no sistema. AOP não é uma mudança radical de paradigmas e linguagens AOP trabalha em conjunto com OO

Por que AOP? Em um software, existem requisitos funcionais que são difíceis de serem mapeados em uma única unidade do código Ex. um log pode ser responsabilidade de uma classe, mas todas as demais classes são afetadas por chamadas a ela Este é um exemplo de requisito transversal ou aspecto Aspectos promovem a separação de concerns

Problemas sem AOP Algumas tarefas de programação não podem ser facilmente encapsuladas em objetos, e sim precisam ser espalhadas (scattered) no código Logging (tracking program behavior to a file) Profiling (determining where a program spends its time) Tracing (determining what methods are called when) Session tracking, session expiration Special security management O resultado é crosscuting code – o código necessário “cuts across” várias classes e métodos diferentes

Consequências de crosscutting code Código redundante Mesmo fragmento de código em várias partes Difícil de entender (Estrutura não explícita) Difícil de alterar Deve-se achar todo o código envolvido Deve-se ter certeza de fazer as mudanças de forma consistente Deve-se ter certeza de não inserir erros Ineficiente quando crosscuting code não é necessário

Refatoração Técnica de reorganização que simplifica o projeto ou o código de um componente sem alterar sua funcionalidade ou comportamento Altera a estrutura interna sem alterar o comportamento externo

O que é refatorar? Eliminar redundâncias Melhorar algoritmos Melhorar as estruturas de dados Ver livro: Refactoring em http://www.refactoring.com/sources.html