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



Documentos relacionados
CONCEITOS DE PROJETOS - 2. Profa. Reane Franco Goulart

SSC Engenharia de Software. Prof. Paulo C. Masiero

CONCEITOS BÁSICOS E MODELO DE PROJETO

PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO. Projeto de Programas PPR0001

Arquitetura de Software visão emergente

Arquitetura de software

Levantamento, Análise e Gestão Requisitos. Aula 03

ENGENHARIA DE SOFTWARE. Introdução

Lista de Exercícios AV1

Desenho de Software. Sumário

PROJETO DE PROGRAMAS. Projeto de Programas PPR0001

ARQUITETURA E DESENHO

Estilos Arquiteturais. Prof. Fellipe Aleixo

Visões Arquiteturais. Visões Arquiteturais

Visões Arquiteturais. Arquitetura de Software Thaís Batista

PROJETO DE PROGRAMAS. Projeto de Programas PPR0001

Unidade II MODELAGEM DE PROCESSOS. Profa. Gislaine Stachissini

Bancos de Dados Distribuídos

INF1404 MODELAGEM DE SISTEMAS

Introdução à Análise e Projeto de Sistemas

Aula 2 POO 1 Introdução. Profa. Elaine Faria UFU

REENGENHARIA E ENGENHARIA REVERSA

Engenharia de Software

Complexidade do Software

6.CONCLUSÕES CONCLUSÕES

Engenharia de Software. Projeto de Software. Projeto: definição. Profa. Dra. Lúcia V. L. Filgueiras Profa. Dra. Selma Shin Shimizu Melnikoff

Design Dirigido ao Domínio - DDD

Objetivo do Curso. Modelagem/Arquitetura de Software. Enfoque do Curso. Conteúdo do Curso

3. Engenharia dos requisitos de software

Visões Arquiteturais. Visões Arquiteturais. Visões Arquiteturais. Visão Conceitual

Aula 10 Arquitetura de Software e Exercício. Alessandro Garcia LES/DI/PUC-Rio Abril de 2017

Requisitos de sistemas

Teste de Software. Prof. Camila. Pedro de Assis Sobreira Jr.

Modelo do Mundo Real. Abstração. Interpretação

Modelagem/Arquitetura de Software

Daniel Wildt

Aula 12: Princípios da Coesão de Pacotes

Programação Orientada a Objetos. Prof. MsC Sílvio Bacalá Júnior

Análise e Projeto de Software

Os princípios do desenho orientado a objetos

Arquitetura de Software

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc.

ARCHITECTURAL DESIGN. Ian Sommerville, 8º edição Capítulo 11 Aula de Luiz Eduardo Guarino de Vasconcelos

Capítulo 2. Orientação a Objetos

Ciência da Computação. Análise e Projeto Orientado a Objetos UML. Anderson Belgamo

Aula 01 Conceito de Banco de Dados e SGBD

Orientação a Objetos e UML

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

Modelos de design arquitetural

Engenharia de Software

Arquitetura de Software

Engenharia de Domínio e Desenvolvimento Baseado em Componentes. Processo DBC-Arch-DE Apoio do Ambiente Odyssey no Processo Considerações Finais

Um Método para o Desenvolvimento de Software Baseado em Componentes e Aspectos

! Introdução. " Motivação para Processos de Software. ! Processo Unificado (USDP) " Definições " RUP x USDP " Características do Processo Unificado

A modelagem é tida como a parte central de todas as atividades para a construção de um bom sistema, com ela podemos:

3ª Aula. Processo de Projeto em SE Exemplo de projeto: Sistema de Mapa GPS. Introdução. PSI3441 Arquitetura de Sistemas Embarcados

UML. Rodrigo Leite Durães.

Introdução a Orientação a Objetos

ARQUITETURA DE SOFTWARE III

LIVRO ENGENHARIA DE SOFTWARE FUNDAMENTOS, MÉTODOS E PADRÕES

Análise de Sistemas. Aula 5

Agenda da Aula. Arquitetura de Software e Padrões Arquiteturais. Elementos de um Padrão. Arquitetura de Software. Arquitetura de Software

Rational Unified Process (RUP)

Estilos Arquiteturais

Como Modelar com UML 2

Engenharia Software. Ení Berbert Camilo Contaiffer

INF1013 MODELAGEM DE SOFTWARE

Projeto de Sistemas I

Prof. Esp. Fabiano Taguchi

PROJETO DE ARQUITETURA

MODELAGEM DE SISTEMAS. Introdução a Computação e Engenharia de Software. Profa. Cynthia Pinheiro

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos

Conceitos de Programação Orientada a Objetos

Introdução INTRODUÇÃO AO SWEBOK. Origens do corpo de conhecimentos da Engenharia de Software: Introdução a Computação e Engenharia de Software

Bancos de Dados Distribuídos. Gabriel Resende Gonçalves 4 de fevereiro de 2014

Visão Geral Parte 2. Jair C Leite DIMAp/UFRN

Introdução 2014/1 Prof. Luís Fernando Garcia

- Engenharia Reversa - Evolução de Sofware. Desenvolvimento como. Requisitos o que. Sistema porque. Profa. Dra. Sandra Fabbri. operacional.

Engenharia de Software. Projeto de Arquitetura

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

Programação Orientada a Objetos

Instituto Federal da Bahia Análise e Desenvolvimento de Sistemas INF022 Tópicos Avançados. Medição de Sofware

Engenharia de Software II

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

Designing Data Intensive Applications

RUP RATIONAL UNIFIED PROCESS PRÁTICAS RECOMENDADAS. Prof. Fabiano Papaiz IFRN

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

O Processo Unificado: Workflow de Análise. Graduação em Informática Profa. Dra. Itana Maria de Souza Gimenes 2009

PCS3413 Engenharia de Software e Banco de Dados

Comunicação; Planejamento; Modelagem; Análise; Projeto; Construção; Teste; e Implantação.

Arquitetura e organização de computadores Uma visão geral

Atividades de Desenvolvimento. Desenvolvimento de Software. Especificação de Requisitos. Atividades de Desenvolvimento. Especificação de Requisitos

MODELAGEM DE SISTEMAS DE INFORMAÇÃO

Qualidade de Software QUALIDADE DE SOFTWARE PRODUTO

Arquitectura de Sistemas de Software Mestrado em Engenharia Informática Licenciatura em Engenharia Informática e Computação

Especificação de Sistemas de Software e a UML

02/10/2012. Referências. Processo visando a Usabilidade. Introdução. Engenharia de Usabilidade. Prof.: Clarindo Isaías Pereira da Silva e Pádua

INF1013 MODELAGEM DE SOFTWARE

Transcrição:

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

Revisando... Processo Unificado PRAXIS Processo unificado: Dividido em fases e fluxos Fases Concepção, elaboração, construção e transição Enfoque na visão gerencial do processo. Fluxos Requisitos, análise, desenho, implementação e testes Enfoque na visão técnica

Revisando...

Revisando... Em análise de sistemas... Foco Coleta de requisitos Casos de uso ERSw Modelagem inicial do problema Desenho Diagrama de classes inicial MASw Define uma estrutura implementável do software Porquê? Um bom desenho implica em qualidade

Desenho de Software Basicamente o desenho pode ser divido em: Arquitetural Implementavel Desenho e qualidade O desenho deve... Levar em conta todos os requisitos Explícitos e implícitos. Deve ser compreensível para implementação E para manutenção, suporte, evolução... Mas como saber se o desenho está adequado?

Desenho de Software Existem alguns principios: Desenho nao deve ser bitolado. Considerar alternativas com base nos requisitos. Relacao com o modelo de analise Rastreabilidade Desenho nao deve reinventar a roda Uso de padroes de projeto e de arquitetura Desenho deve diminuir o semantical gap Na medida do possivel...

Desenho de Software Mais principios... O desenho deve ser uniforme e integravel Parece que uma so pessoa implementou? Regras de estilo Interfaces consistentes entre componentes Desenho nao e codificacao... Qualidade deve ser avaliada... durante o processo de elaboracao do desenho. Aplicacao destes principios leva a... Qualidade externa. Qualidade interna.

Desenho de Software Para obter qualidade interna, voce deve... Entender alguns conceitos de Desenho! Principais conceitos de desenho Abstracao Refinamento Modularidade Arquitetura Hierarquia de controle Particionamento estrutural Estruturas de dados Encapsulamento

Abstracao Uso gradual de modelos para uma solucao Modelos de nivel elevado com poucos detalhes Casos de uso Ate modelos proximos da solucao Diagramas UML Tipos de abstracao Abstracao procedimental Abstracao de dados Abstracao de controle

Refinamento Estrategia de desenho top down Detalhamento gradual de uma funcionalidade Ex. operacao de saque em cx. Eletronico Relacao com a abstracao Refinamento e abstracao sao complementares Abstracao: Elaborar desenho sem pensar nos detalhes Refinamento: revela detalhes gradualmente

Modularidade Decomposicao de um programa em modulos Objetivo: facilitar a compreensao e gerenciamento Para entender considere: C(x): complexidade do problema x E(x): esforco, em tempo, para o problema x. Sejam p1 e p2 dois problemas E evidente que se C(p1) > C(p2)... Entao E(p1) > E(p2). Intuitivamente obvio, nao? : )

Continuando... Mas e se p1 e p2 forem partes de p3? Isto e: p3 = p1 + p2 A operacao de + indica que p3 e formado por p1 e p2. O que podemos dizer sobre C(p3)? C(p3) = C(p1 + p2). Mas... C(p1 + p2) = C(p1) + C(p2) ou C(p1 + p2) > C(p1) + C(p2)?

Resolver problemas isolados e... Mais facil que resolve los e combinar! Portanto: C(p1 + p2) > C(p1) + C(p2). O que nos faz concluir que... E(p1 + p2) > E(p1) + E(p2). Conclusao: Dividir para conquistar e bom, mas possui um custo para integrar!

Modularidade Modulos de tamanho pequenho Muitos modulos => ruim Modulos de maior tamanho Codigo dificil de compreender e manter Como resolver isso? Escolhendo um bom metodo de desenho! Mas como escolher? Existem alguns criterios para ajudar...

Avaliando metodologias de desenho Criterios: Decomponibilidade modular Reducao da complexidade do problema como um todo Componibilidade modular Facilidade em compor modulos ou componentes Inteligibilidade modular O modulo pode ser entendido de maneira autonoma? Continuidade modular Modificacao de um modulo nao se alastra. Protecao modular Excecoes ou efeitos colaterais sao locais.

E possivel realizar o desenho modular... E o codigo ser monolitico? Sim! Sistemas de tempo real ou embutidos Procedimentos causam overhead Velocidade e memoria Isso pode ser inaceitavel para algumas aplicacoes.

Arquitetura Estrutura global do software e aos modos pelos quais essa estrutura fornece integridade conceitual para um sistema. Retirado de Software Architecture Shaw e Garlan Simplificando Estrutura hierarquica de modulos e componentes que compoe o programa.

Arquitetura de software e Desenho Desenho arquitetural Objetivo: Construir uma arquitetura para o software Desenho implementavel Objetivo: A partir da arquitetura, detalhar o modelo do sofware para que este seja implementado.

Hierarquia de Controle Mostra a dependencia entre modulos. Relacionamento Um modulo A controla um modulo B se O fluxo de execucao do programa alcanca B a partir de A. Como representar a hierarquia de controle? Grafos In degree : quantos modulos controlam? Out degree: quantos modulos controlados?

Particionamento Estrutural Basicamente de dois tipos Particionamento Horizontal Tres particoes entrada, processamento, saida Beneficios Facilidade de teste Facilidade de manutencao Menos propagacao de efeitos colaterais Facilidade de extensao Pontos negativos Ocasiona mais dados sejam passados entre procedimentos. Pode causar overhead

Particionamento Estrutural Particionamento Vertical Modulos superiores Tomadores de decisao Folhas realizam processamento real Beneficios Modulos que realizam trabalho podem ser modificados Nao ha efeitos colaterais

Estruturas de dados Tema da disciplina de AEDS. Encapsulamento Tema da disciplina POO. Tudo isso ajuda a ter desenho modular... Mas como saber se um desenho e bom? Conceito de independencia funcional.

Independencia Funcional Um bom desenho faz com que modulos... Possuam uma finalidade unica e bem definida Aversao a interacao excessiva com o resto do software. Isso leva a duas medidas qualitativas... Coesao Acoplamento

Coesao Um modulo e coeso se: Realiza uma unica tarefa dentro de um software. Acoplamento Medida entre a interconexao entre modulos. Qual a relacao entre estas duas medidas?