Você está na página 1de 35

Instituto de Educao Superior de Braslia

Ps-Graduao em Engenharia de Software

Fundamentos de Design de Software


Arquitetura de Software
http://nelson.junior.br.googlepages.com/as-20091 Nelson Alves da Nbrega Jnior
nelson.junior.br@gmail.com

Agenda
y Introduo y Objetivos y O que Design de Software? y Caractersticas de Design de Software y Elementos do processo Design de Software y Nveis de Design de Software y Princpios e Tcnicas de Design de Software y Consideraes finais

Arquitetura de Software

Introduo
y Problema: Crescente complexidade dos sistemas de

softwares aumenta o risco de se construir uma soluo que no alcance os objetivos e necessidades do cliente
y Soluo: Construir sistemas de software complexo baseados

em um plano, ou seja, projetar fazer design o sistema antes.

Arquitetura de Software

Introduo
y Fazer o design essencial no o ciclo de vida de

desenvolvimento de um sistema de software:


y Permite avaliar sua completude com relao aos objetivos a

serem alcanados y Fornece um guia para a implementao do software

Arquitetura de Software

Introduo
y SWEBok (Software Engineering Body of Knowledge) y Guia Padro do IEEE que define o corpo de conhecimento e prticas recomendadas em Engenharia de Software
y Equivalente ao PMBok para Engenharia de Software

y Arquitetura de Software no contexto do SWEBok y Encaixa-se no contexto da rea de Conhecimento de Design de Software (Software Design Knowledge Area) y Principais atividades relacionadas so Design Arquitetural e Design Detalhado

Arquitetura de Software

Objetivos
y Reconhecer os conceitos fundamentais de design de software y Decompor um problema de design em seus elementos y Diferenciar design de baixo nvel do de alto nvel y Identificar principais tcnicas de design

Arquitetura de Software

O que Design de Software?


y Pode ser definido tanto como o processo de

definio da arquitetura, mdulos, interfaces e outras caractersticas de um sistema quanto o produto resultante desse processo

Arquitetura de Software

O que Design de Software?


Design como Produto
y [As a noun, design] indicates the [product] that emerges from the

design process, some physical document or other kind of representation that articulates the intent of the designer. This product results from choices the designer made, choices that form an abstraction of that what is eventually desired in the real world. [Taylor, van der Hoek. Software Design and Architecture. 2007]

Arquitetura de Software

O que Design de Software?


Design como Processo
y [As a verb, design] indicates the process by which a design is

achieved. It is a human-centered process, involving varied stakeholders. It is also understood to be strongly goal-driven and drawing upon established knowledge of the designer and the field at large. [Taylor, van der Hoek. Software Design and Architecture. 2007]

Arquitetura de Software

O que Design de Software?


y Visto como produto, o design de software deve descrever

diversos aspectos do sistema, tais como:


A estrutura esttica do sistema, incluindo a hierarquia de seus subprogramas y Os objetos de dados a serem usados y Os algoritmos a serem usados y O empacotamento do sistema, em termos de como os mdulos esto agrupados em unidades de compilao y As interaes entre mdulos, incluindo as regras de como elas devem acontecer e sua motivao.
y

10

Arquitetura de Software

Caractersticas de Design de Software - Benefcios


y Permite avaliao prvia
y Desempenho, custo, tolerncia a falhas, alinhamento com os objetivos, etc.

y Estimula a modelagem, com foco no domnio do

problema
y Separao entre Complexidade essencial e Complexidade acidental

y Permite planejamento (custo, reuso, diviso de trabalho, etc.)


y Quanto tempo durar todo o desenvolvimento? y Quantos desenvolvedores so necessrios no mdulo A? y Se comprado, quanto custar o mdulo B? y Qual ser o custo total do sistema?

11

Arquitetura de Software

Caractersticas de Design de Software - Benefcios


y Facilita a comunicao y Prov conhecimento sobre o sistema aos interessados
y

Exemplo 1: Ao apresentar o sistema a novos membros da equipe de desenvolvimento, informaes relevantes podem ser mostradas atravs do Design, antes de irem direto para o cdigo-fonte Exemplo 2: Usurios pode verificar no Design algumas informaes de alto nvel de abstrao que possam indicar quais as funes do sistema e o desempenho delas

12

Arquitetura de Software

Caractersticas de Design de Software - Observaes


y O problema a ser resolvido pode mudar durante o

processo de design
O cliente pode mudar de idia y O cliente pode ter descrito o problema de forma errada y O Cliente pode decidir que o problema do negcio mudou ou j foi resolvido
y

13

Arquitetura de Software

Caractersticas de Design de Software - Observaes


y H diferenas entre o design e o sistema a ser

construdo a partir dele


Nveis de detalhes podem no ser adequados para certas avaliaes y Por mais eficaz que seja o design, a implementao pode no ser
y y

Exemplo: Com base em um certo Design, pode-se atestar que o sistema capaz de suportar 10 mil usurios simultneos, no entanto no foi especificado a quantidade de recursos por usurio

14

Arquitetura de Software

Elementos do processo de Design de Software


y

O processo de design pode ser descrito como um processo de escolha da representao de uma soluo a partir de vrias alternativas, dadas as restries que um conjunto de objetivos envolve O processo pode ser dividido em duas fases
1. Divergncia (ou diversificao) 2. Convergncia

15

Arquitetura de Software

Elementos do processo de Design de Software

16

Arquitetura de Software

Elementos do processo de Design de Software - OBJETIVOS


y OBJETIVO DE DESIGN: Aquilo que se pretende alcanar

para resolver as necessidades do cliente


Gerenciar os produtos de uma locadora y Gerenciar as compras no site de e-commerce y ...
y

y Em Design de Software os objetivos so traduzidos em y REQUISITOS FUNCIONAIS


y O que o sistema faz para alcanar os objetivos do cliente

REQUISITOS NO-FUNCIONAIS
y Tambm chamado de atributo de qualidade

17

Arquitetura de Software

Elementos do processo de Design de Software - RESTRIES


y RESTRIES DE DESIGN: regras, requisitos, relaes,

convenes ou princpios que definem o texto do processo de design de forma que o produto seja vivel y Esto diretamente ligadas aos objetivos, porm so diferentes
y

Um sistema pode ter objetivos claros, porm algumas alternativas de design podem ser inviveis devido s restries

18

Arquitetura de Software

Elementos do processo de Design de Software - RESTRIES


y EXEMPLO: y Requisito especificado: o sistema deve ser capaz de ler dados de um leitor de cartes de um modelo especfico y Restrio: O fabricante do leitor no fornece driver para um SO onde o sistema deve executar y Alternativas?
y Emular um dos S.O.s suportados pelo driver? y Projetar um driver especfico para o leitor?

19

Arquitetura de Software

Elementos do processo de Design de Software - ALTERNATIVAS


y ALTERNATIVA DE DESIGN: uma possibilidade de soluo

representada em nvel de conhecimento dos designers y Um problema de design geralmente tem mltiplas alternativas
Ex.1: Ordenar nmeros: vrias alternativas de algoritmos y Ex.2: Gerenciar produtos de locadora: single-user, multi-user, web, etc.
y

y Designer precisam gerar alternativas y Conceitos sobre princpios de design e a experincia ajudam y Tambm precisa saber quando parar (freezing point)

20

Arquitetura de Software

Elementos do processo de Design de Software - REPRESENTAES


y REPRESENTAO DO DESIGN: linguagem do processo

de design que representa o produto de design para sua construo e tambm d suporte ao processo de design como um todo
y

Ex.: Diagramas, modelos, cdigo

y A representao do sistema o real produto do processo de

design (prov formas vises do sistema) y Ajuda na comunicao dos envolvidos, e serve de registro de tomada de decises

21

Arquitetura de Software

Elementos do processo de Design de Software - REPRESENTAES


y Exemplos
UC01 - Manter operaes do mercado primrio de cambio If Dealer UC03 - Enviar planilha com operaes

Operador Depin Leiles (via BcDealer)

UC05 - Consultar outras operaes

22

Arquitetura de Software

Elementos do processo de Design de Software - SOLUES


y SOLUO DO DESIGN: descrio do design que permite a

construo do sistema de software que alcana os objetivos do design y Solues do design refletem a complexidade do problema y difcil validar solues de design
y

Objetivos precisam estar bem descritos

y Um problema aceita diversas solues de design y Podem ser obtidas atravs das diversas alternativas geradas

23

Arquitetura de Software

Nveis de Design de Software


De acordo com o SWEBok h dois nveis conceituais: 1. Design de alto nvel (ou arquitetural)
y
y y

Descreve com o software decomposto e organizado em mdulos e suas relaes Objetiva atributos de qualidade

2.
y y

Design de baixo nvel (ou detalhado)


Descreve o comportamento especfico em e detalhes dos mdulos que compem o design arquitetural Descrio para construo (implementao) do sistema

24

Arquitetura de Software

Princpios e tcnicas de Design de Software


y Consiste num conjunto de diretrizes, abordagens e tcnicas

que resultam em bons produtos de design


y

Ex.: Obtidos atravs do GRASP, padres de projeto, etc.

y Os principais so: y ABSTRAO y ENCAPSULAMENTO y MODULARIZAO y SEPARAO DE PREOCUPAES y COESO E ACOPLAMENTO y SEPARAO ENTRE POLTICAS E ALGORTIMOS y SEPARAO ENTRE INTERFACE E IMPLEMENTAO
25 Arquitetura de Software

ABSTRAO
y Forma de representar elemento por suas caractersticas

essenciais, que diferencia de outros elementos y Principal forma de lidar com complexidade y Beneficia representao, comunicao, entendimento
y Exemplos
y Interfaces y Criando camada de abstrao ( pilha de um protocolo de rede,

camadas de o S.O.)
26 Arquitetura de Software

ENCAPSULAMENTO
y Ocultao de detalhes de implementao aos clientes de uma

entidade do design y Minimiza acoplamento e complexidade y Para se obter encapsulamento pode-se:


Modularizar o sistema y Separar preocupaes y Separar interfaces de implementao y Separar polticas da execuo de algoritmos
y

27

Arquitetura de Software

MODULARIZAO
y Decomposio do sistema em mdulos y Facilita entendimento, onde cada mdulo pode ser estudado

em separado y Facilita desenvolvimento, onde cada mdulo pode ser projetado, implementado e testado em separado y Promove a flexibilidade, com fcil substituio de um mdulo
y Exemplo
y Como dividiramos um sistema de e-commerce?
28 Arquitetura de Software

SEPARAO DE PREOCUPAES
y Uma forma para modularizar: diferentes preocupaes devem

se restringir a diferentes mdulos


y Benefcios semelhantes ao da modularizao y E logging numa aplicao, como fica?

29

Arquitetura de Software

COESO E ACOPLAMENTO
y Princpios para medir diviso em mdulos
y Intermdulo: Acoplamento a dependncia entre mdulos y Num sistema 3 camadas (apresentao, lgica de negcio, e dados), qual camada est acoplada a quem? y Intramdulo: Coeso a relao entre as tarefas executadas por

um mdulo
y Math.sin(double) coesa? y Uma funo que recebe dados do usurio (nome e data de nascimento),

checa sua validade, imprime em tela se os dados so invlidos e os pede novamente at serem vlidos, e, por fim, grava os dados em disco coesa?
30 Arquitetura de Software

COESO E ACOPLAMENTO
y Tipos de Coeso y Funcional: similaridade das tarefas y Seqencial: tarefas pertencem mesma seqncia de operaes e compartilham dados y Comunicativa: tarefas compartilham dados y Temporal: tarefas ocorrem ao mesmo tempo y Procedural: tarefas que ocorrem numa certa ordem y Lgica: agrupadas por uma flag de controle y Coincidente: sem critrio

31

Arquitetura de Software

SEPARAO ENTRE POLTICAS E ALGORITMOS


y Separa as decises sensveis ao contexto da execuo dos

algoritmos y Mdulos que executam algoritmos devem ser livres de contexto y O contexto deve ser ditados por mdulos de poltica, que passam o contexto via parmetros para os mdulos de algoritmos y Facilita reuso e manuteno, principalmente nos algoritmos

32

Arquitetura de Software

SEPARAO ENTRE INTERFACE E IMPLEMENTAO


y Mdulos implementam funcionalidades cujas descries so

definidas em contratos (interfaces)


y Beneficia a separao dos mdulos y Diminui o acoplamento entre mdulos y Facilita reuso e manuteno, uma vez que os mdulos estaro

ligados apenas via interfaces

33

Arquitetura de Software

Consideraes finais
y O sucesso de desenvolvimento de um software est

diretamente ligado a qualidade de seu design y O design pode ser o processo ou o produto y Bons designs no devem reinventar a roda, mas sim fazer bom uso da tcnica de reuso atravs de outros padres e design existentes y Um bom design deve suportar situaes adversas de utilizao do sistema y Um bom design deve ser de fcil manuteno
34 Arquitetura de Software

Referncias
y R. S. Presman. Engenharia de Software captulos 9 e 10,

6 edio, McGraw-Hill, 2006. y Als, A. and Greenidge, C. Design - Concepts and Principles, 2004. http://scitec.uwichill.edu.bb/cmp/online/cs22l/design__concepts_and_principles.htm y E. Gamma, R. Helm, R. Johnson e J. Vlissides, Padres de Projeto, Bookman, 2000. y A. Abran, J. W. Moore, P. Bourque, R. Dupuis, and L. L. Tripp. Guide to the Software Engineering Body of Knowledge (SWEBOK). IEEE, 2004.
35 Arquitetura de Software

Você também pode gostar