Escolar Documentos
Profissional Documentos
Cultura Documentos
Aula01 Designdesoftware
Aula01 Designdesoftware
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
Arquitetura de Software
Introduo
y Fazer o design essencial no o ciclo de vida de
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
definio da arquitetura, mdulos, interfaces e outras caractersticas de um sistema quanto o produto resultante desse processo
Arquitetura de Software
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
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
10
Arquitetura de Software
problema
y Separao entre Complexidade essencial e Complexidade acidental
11
Arquitetura de Software
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
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
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
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
16
Arquitetura de Software
REQUISITOS NO-FUNCIONAIS
y Tambm chamado de atributo de qualidade
17
Arquitetura de Software
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
19
Arquitetura de Software
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
de design que representa o produto de design para sua construo e tambm d suporte ao processo de design como um todo
y
design (prov formas vises do sistema) y Ajuda na comunicao dos envolvidos, e serve de registro de tomada de decises
21
Arquitetura de Software
22
Arquitetura de Software
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
y Um problema aceita diversas solues de design y Podem ser obtidas atravs das diversas alternativas geradas
23
Arquitetura de Software
Descreve com o software decomposto e organizado em mdulos e suas relaes Objetiva atributos de qualidade
2.
y y
24
Arquitetura de Software
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
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
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
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
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