• Nenhum resultado encontrado

Software Engineering: A Practitioner’s Approach, 7e

N/A
N/A
Protected

Academic year: 2019

Share "Software Engineering: A Practitioner’s Approach, 7e"

Copied!
30
0
0

Texto

(1)

Capítulo 8

n

Conceitos de Desenho

Slide Set to accompany

Software Engineering: A Practitioner’s Approach, 7/e

by Roger S. Pressman

Slides copyright © 1996, 2001, 2005, 2009 by Roger S. Pressman

For non-profit educational use only

May be reproduced ONLY for student use at the university level when used in conjunction

with

Software Engineering: A Practitioner's Approach, 7/e.

Any other reproduction or use is

prohibited without the express written permission of the author.

(2)

Desenho

n

Mitch Kapor, o criador do Lotus 1-2-3,

apresentou um “manifesto do desenho do

software” no

Dr. Dobbs Journal.

Ele diz:

n

O bom desenho de software deve apresentar:

n

Firmeza:

Um programa não deve ter qualquer bug

que inibe sua função.

n

Comodidade:

Um programa deve ser adequado para

os propósitos para os quais ele foi pretendido.

n

Encanto:

A experiência de uso do programa deve ser

(3)
(4)

Desenho e Qualidade

n

o desenho precisa implementar todos os

requisitos explícitos contidos no modelo de

análise, e precisa acomodar todos os

requisitos implícitos desejados pelo cliente.

n

o desenho precisa ser um guia legível,

compreensível para quem for gerar Código e e

para aqueles que testam o software.

n

o desenho precisa fornecer uma fotografia

(5)

Diretrizes de Qualidade

n

Um desenho deve exibir uma arquitetura que (1) tenha sido criada utilizando

estilos ou padrões arquiteturais reconhecíveis, (2) é composta de componentes

que apresentem boas características e (3) pode ser implementada de forma

evolutiva

n Para sistemas pequenos, desenho pode algumas vezes ser desenvolvido linearmente.

n

Um desenho deve ser modular, ou seja, o software deve ser logicamente

particionada em elementos ou subsistemas.

n

Um desenho deve conter representações distintas de dados, arquitetura,

interfaces e componentes.

n

Um desenho deve levar a estruturas de dados que são apropriadas para as

classes que serão implementadas e se baseiam em padrões de dados

reconhecidos.

n

Um desenho deve levar a componentes que apresentem características de

independência functional.

n

Um desenho deve levar a interfaces que reduzam a complexidade de

conexões entre componentes e com o ambiente externo.

n

Um desenho deve ser derivado por um método iterativo que é dirigido por

informações obtidas durante a análise de requisitos.

n

Um desenho deve ser representado utilizando uma notação que transmita

(6)

Princípios de Desenho

n

O processo de desenho não deve sofrer da “visão de túnel”.

n

O desenho deve ser rastreável a partir do modelo de análise.

n

O desenho não deve reinventar a roda.

n

O desenho deve “minimizar a distância intelectual” [DAV95] entre o

software e o problema que existe no mundo real.

n

O desenho deve apresentar uniformidade e integração.

n

O desenho deve ser estruturado para acomodar mudanças.

n

O desenho deve ser estrutuados para degradar pouco, mesmo quando

dados, eventos ou condições de operação anormais são encontrados.

n

Desenho não é implementação, implementação não é desenho.

n

O desenho deve ser avaliado quanto a qualidade à medida que está

sendo criado e, não após ser criado.

n

O desenho deve ser revisado para minimizar erros conceituais.

(7)

Conceitos Fundamentais

n

Abstração—dados, procedimentos e controle

n

Arquitetura—a estrutura geral do software

n

Padrões— “transmitem a essência” de uma solução aprovada de

desenho

n

Separação de interesses — qualquer problema complexo pode ser

melhor manipulado se ele é subdividido em pedaços

n

Modularidade—compartimentalização de dados e funções

n

Ocultamento—interfaces controladas

n

Independência funcional—função com papel específico e baixo

acoplamento

n

Refinamento—elaboração de detalhes para todas abstrações

n

Aspectos—um mecanismo para entender como requisitos globais

afetam o desenho

n

Refatoração—uma técnica de reorganização que simplifica o desenho

n

Conceitos de desenho OO —Apêndice II

n

Classes de desenho—apresentam detalhes para o desenho que irão

(8)

Abstração de Dados

door

implemented as a data structure

manufacturer

model number

type

swing direction

inserts

lights

type

number

weight

(9)

Abstração Procedural

open

implemented with a "knowledge" of the

object that is associated with enter

(10)

Arquitetura

“A estrutura global do software e a forma pela qual essa

estrutura fornece integridade conceitual para um

sistema” [SHA95a]

Propriedades estruturais.

Esse aspecto da representação do desenho

arquitetural define os componentes de um sistema (e.g., módulos,

objetos, filtros) e a maneira pela qual estes componentes são

empacotados e interagem uns com os outros. Por exemplo, objetos são

empacotados para encapsular dados e o processo que manipula os dados

e interagem pela chamada de métodos

Propriedades extra funcionais.

A descrição do desenho arquitetural

deve tratar como a arquitetura alcança requisitos para desempenho,

capacidade, confiabilidade, segurança, adaptabilidade e outras

características do sistema.

Famílias de sistemas relacionados.

O desenho arquitetural deve

basear-se em padrões repetíveis que são frequentemente encontrados no

(11)

Padrões

Gabarito para Padrões de Projeto

Nome do Padrão—descreve a essência do padrão em um nome curto, porém

significativo

Propósito—descreve o padrão e o que ele faz

Também-conhecido-como—lista quaisquer sinônimos para o padrão

Motivação—fornece um exemplo para o problema

Aplicabilidade—destaca situações específicas de desenho nas quais o padrão se

aplica

Estrutura—descreve as classes que são necessárias para a implementação do padrão

Participantes—descreve as responsabilidades das classes que são necessárias para a

implementação do padrão

Colaborações—descreve como os participantes colaboram para realizar suas

responsabilidades

Consequências—descreve os potenciais compromissos que precisam ser

considerados quando o padrão é implementado

(12)

Separação de Interesses

n

Qualquer problema complexo pode ser melhor

tratado se ele for subdividido em partes que

possam ser resolvidas/otimizadas de forma

independente

n

Um

interesse

é uma característica ou

comportamento que é especificado como parte

do modelo de requisitos para o software

n

Pela separação de interesses em partes menores

(13)

Modularidade

n

“modularidade é o único atributo do software que

permite

que

um

programa

seja

intelectualmente

gerenciável” [Mye78].

n

Software monolítico (um programa extenso composto de

um

único

modulo)

não

pode

ser

facilmente

compreendido por um engenheiro de software.

n

O número de caminhos de controle, alcance de referências,

número de variáveis e complexidade geral tornariam o

entendimento quase impossível.

(14)

Modularidade: Compromissos

Qual é o número de módulos “correto”

para um desenho de software específico?

optimal number

of modules

cost of

software

number of modules

module

integration

(15)

Ocultamento de Informação

module

controlled

interface

"secret"

• algorithm

• data structure

• details of external interface

• resource allocation policy

clients

(16)

Por que ocultar informações?

n

reduz a probabilidade de “efeitos

colaterais”

n

limita o impacto global de decisões de

desenho locais

n

enfatiza a comunicação através de

interfaces controladas

n

desestimula o uso de dados globais

n

leva ao encapsulamento – um atributo do

desenho de alta qualidade

n

resulta em software de qualidade mais

(17)

Refinamentos sucessivos

open

walk to door;

reach for knob;

open door;

walk through;

close door.

repeat until door opens

turn knob clockwise;

if knob doesn't turn, then

take key out;

find correct key;

insert in lock;

endif

(18)
(19)

Independência Funcional

n

Independência

funcional

é

alcançada

pelo

desenvolvimento de módulos com “papéis únicos” e

uma “aversão” à interação excessiva com outros

módulos.

n

Coesão

é uma indicação da força funcional de um

modulo.

n

Um módulo coesivo realiza uma única tarefa, realizando

pouca interação com outros componentes em outras partes

de um programa. De forma simples, um módulo coesivo

deve (idealmente) fazer uma única coisa.

n

Acoplamento

é uma indicação da interdependência

relativa entre módulos.

n

Acoplamento depende da complexidade de interface entre

(20)

Aspectos

n

Considere dois requisitos, A e B. O Requisito A

atravessa (crosscuts) o Requisito B “se, em uma

decomposição de software [refinamento]

escolhida, B não pode ser satisfeito sem levar

em consideração A. [Ros04]

n

Um aspecto

é uma representação de uma

(21)

Aspectos—Um Exemplo

n

Considere dois requisitos para a WebApp

SafeHomeAssured.com

. O

Requisito

A

é descrito pelo caso de uso

Access camera surveillance

via the Internet.

Um refinamento de desenho focaria em módulos que

permitissem a usuários registrados acessar o vídeo de camêras

diversas. O Requisito

B

é um requisito genérico de segurança que

estabelece que

um usuário registrado precisa ser validado antes de utilizar

SafeHomeAssured.com.

Este requisito é válido para todas as funções

disponíveis para usuários registrados no

SafeHome

. À medida que o

refinamento do desenho ocorre,

A*

é uma representação de desenho

para o requisito

A

e

B*

é uma representação de desenho para o

requisito

B

. Portanto,

A*

e

B*

são representações de assuntos, e B*

atravessa

A*.

n

Um

aspecto

é uma representação de um conceito transversal. Portanto,a

representação de desenho,

B*

, do requisito

um usuário registrado precisa

ser validado para utilizar

SafeHomeAssured.com,

é um aspecto da

(22)

Refatoração

n

Fowler [FOW99] define refatoração da seguinte maneira:

n

”Refatoração é o processo de mudar um software de uma

maneira que isso não altere o comportamento externo do código

[desenho] e ainda melhore sua estrutura externa.”

n

Quando o software é refatorado, o desenho existente é

examinado em busca de

n

redundância

n

elementos de desenho não utilizados

n

algoritmos ineficientes ou desnecessários

n

estruturas de dados mal construídas ou inapropriadas

n

qualquer outra falha de desenho que possa ser corrigida para

(23)

Conceitos de Desenho OO

n

Classes de desenho

n

Classes de Entidade

n

Classes de Fronteira

n

Classes Controladoras

n

Herança

—todas responsabilidades de uma superclasse é

herdada por todas subclasses

n

Mensagens

—estimulam que algum comportamento ocorra

no objeto receptor

n

Polimorfismo

—uma característica que reduz drasticamente o

(24)

Classes de Desenho

n

Classes de análise são refinadas durante o desenho para se

tornarem classes de entidades

n

Classes de fronteira são desenvolvidas durante o desenho para

criar a interface (e.g., telas ou relatórios impressos) que o

usuário vê e com os quais pode interagir quando o software é

utilizado.

n

Classes de fronteira são desenhadas com a responsabilidade de

gerenciar a maneira como os objetos de entidade são representados

para os usuários.

n

Classes controladoras são desenhadas para gerenciar

n

a criação ou atualização dos objetos de entidade;

n

a instanciação de objetos de fronteira à medida que obtem

informações dos objetos de entidade;

n

comunicação complexa entre conjuntos de objetos;

n

validação de dados comunicados entre objetos ou entre o usuário e

(25)
(26)

Elementos do Modelo de Desenho

n

Elementos de dados

n

Modelo de dados --> estruturas de dados

n

Modelo de dados --> arquitetura do banco de dados

n

Elementos arquiteturais

n

Domínio da aplicação

n

Classes de análise, suas realizações, colaborações e comportamentos

são transformados em realizações do desenho

n

Padrões e “estilos” (Capítulos 9 e 12)

n

Elementos de interface

n

a interface com o usuário (UI)

n

interfaces externas para outros sistemas, dispositivos, redes ou outros

produtores ou consumidores de informação

n

interfaces internas entre vários componentes do desenho

.

(27)

Elementos Arquiteturais

n

O modelo arquitetural [Sha96] é derivado de

três fontes:

n

informação sobre o domínio da aplicação para o

software ser construído;

n

elementos específicos do modelo de requisitos tais

como diagramas de fluxo de dados ou classes de

análise, seus relacionamentos e colaborações para o

problema

;

n

a disponibilidade de padrões arquiteturais (Capítulo

(28)
(29)
(30)

Referências

Documentos relacionados

Colhi e elaborei autonomamente a história clínica de uma das doentes internadas no serviço, o que constituiu uma atividade de importância ímpar na minha formação, uma vez

Como forma de operacionalizar a organização e o trabalho da rede de atenção aos usuários de drogas, a PAIUAD pressupõe o tratamento e reinserção social dos usuários/dependentes

Os resultados mostram que tanto o Grau de Intangibilidade quanto o Retorno sobre Investimentos das empresas do setor de Consumo Cíclico são superiores aos do de

A incidência de FO no estado de Sergipe obtida através dos dados do SINASC, no mesmo período da pesquisa, foi de 0,54 novos casos de fissura para cada 1000 nascidos vivos..

Entretanto, encontramos evidências neste trabalho de que estas variáveis não satisfazem as condições para serem utilizadas como instrumentos (Cap.2, seção 3.1.).

Assim como a Natureza, a leitura de folhetos de cordel constituiu uma fonte de inspiração para fazer poesia.. Na comunidade em que vivia Patativa, a leitura dos folhetos de

 A alocação dinâmica é muito utilizada em problemas de estrutura de dados como por exemplo, listas encadeadas, pilhas, filas, arvores binárias e grafos ...  O interessante

A baixa taxa de desconto ao longo dos anos de produção do campo, para o cálculo da função objetivo, aliada a baixa produção de água que a locação de