Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Projeto de Software 2013-2sem Material IES - Prof. Dr. José OSCAR F. de Carvalho 1 Introdução à Engenharia de Software (IES) AULA 09 Ciclos de Vida de Software Modelo Clássico (Cascata) Projeto de Software Projetar é o processo de aplicar várias técnicas e princípios com o propósito de se definir um dispositivo, processo ou sistema, com detalhes suficientes para permitir sua realização física. (Taylor-59). O Projeto de software é o núcleo técnico da EngenhariaO Projeto de software é o núcleo técnico da Engenharia de Software. É a única maneira de se traduzir "com precisão", os requisitos do usuário para um produto ou sistema acabado. Meta: Traduzir requisitos numa representação de software. Projeto de Software Projeto de Software �� ProjetoProjeto ProcedimentalProcedimental: descrição da funcionalidade do software => (algoritmos). �� ProjetoProjeto dede DadosDados: definição das estruturas de dados => (BD). ProjetoProjeto ArquiteturalArquitetural: associação entre os principais�� ProjetoProjeto ArquiteturalArquitetural: associação entre os principais elementos estruturais do software (árvore dos módulos, mensagens entre objetos, Nivelamento em Camadas). �� ProjetoProjeto dasdas InterfacesInterfaces: Layouts e mecanismos de interface humano-computador. Projeto de Software Projeto de Software: Fundamentos do Projeto de Software FundamentosFundamentos:: 1.1. AbstraçãoAbstração: Concentrar-se no problema com um certo nível de generalização. Abstração procedimental (entre numa porta) Abstração de dados (recibo de pagamento) � Alto nível de abstração = Especificação de requisitos � Baixo nível de abstração = Código fonte equivalente Abstração do Projeto e de seu ambiente Fundamentos do Projeto de Software FundamentosFundamentos:: 2.2. RefinamentoRefinamento sucessivosucessivo: É um processo de elaboração que parte de uma declaração de função (ou descrição de informação), que é definida em um nível de abstração elevado, e vai em direção a um nível mais baixo de abstração, passando por sucessivos refinamentos, cada um incorporando mais detalhes. Fundamentos do Projeto de Software FundamentosFundamentos:: 33.. ModularidadeModularidade: O software é dividido em componentes separadamente nomeados e endereçáveis, denominados módulos, que são integrados para atender aos requisitos ditados pelo problema. Fundamentos do Projeto de Software 3.3. ModularidadeModularidade: componente Fundamentos do Projeto de Software ComponenteComponente:: “Bloco construtivo modular para software de computador” Pressman, 2006 p.239 REUSOREUSO “Parte modular possível de ser implantada e substituívelsubstituível de um sistema, que encapsula implementação e exibe conjunto de interfaces” Unified Modeling Specification OMG-Object Management Group, V.1.4, setembro de 2001 Fundamentos do Projeto de Software Projeto de Software Projeto Arquitetural de Software Arquitetura do Produto de Software Arquitetura de Software é: � a organização fundamental do sistema � o empacotamento de seus componentes � o relacionamento de cada um com o ambiente� o relacionamento de cada um com o ambiente � os princípios que governarão o projeto e sua evolução IEEE 1471-2000 Arquitetura do Produto de Software Arquitetura do Produto de Software � Arquitetura estabelece o contexto para a implementação do produto de software arquitetura Decisões sobre arquitetura são fundamentais. Mudanças na arquitetura provocam efeitos Códigoimplementação projeto arquitetura provocam efeitos de grande monta no projeto. Decisão: o módulo abaixo pode ou não receber o controle (decisão). Chamada repetida (iterativa) Projeto Arquitetural de Software Hierarquia dos Módulos (iterativa) Passagem de dados entre módulos Passagem de controle entre módulos DFD - Nível 0 (Contexto) Projeto Arquitetural de Software Do DFD para o Projeto Arquitetural DFD - Nível 1 (Geral – todos os processos) Projeto Arquitetural de Software Do DFD para o Projeto Arquitetural DFD - Nível 2 ( detalhamento de “6 - Monitorar sensores”) Projeto Arquitetural de Software Do DFD para o Projeto Arquitetural Estrutura do módulo “Monitorar Sensores” Projeto Arquitetural de Software Do DFD para o Projeto Arquitetural Projeto de Dados Projeto de Dados Projeto de Dados � Representação do relacionamento lógico entre elementos de dados individuais. Determina a organização, métodos de acesso, associações e alternativas de processamento. � Parte dos dados levantados e representados na fase de análise: � Dicionário de Dados � Fluxo � Conteúdo � Estrutura Projeto de Dados Atividades do Projeto de Dados: � Selecionar representações de dados � Estudar e escolher estruturas de dados que permitam a implementação mais adequada � Caracterizar a Abrangência (escopo) dos Dados� Caracterizar a Abrangência (escopo) dos Dados � Local (componente), Partes do software ou Global � Caracterizar a Persistência dos Dados � Persistentes (B.Dados) � Não Persistentes (Dados em memória, estruturas de manipulação/intermediária) Projeto de Dados Estruturas/Elementos de Dados � Itens Elementar (Tipos Primitivos) � Listas Lineares � Gerais � Pilhas � Filas � Lista não lineares � Árvores � Grafo � etc. Projeto de Dados Persistentes Modelo Entidade-Relacionamento (MER) Entidades Relacionamentos Atributos Projeto de Software Heurísticas de Projetos Heurísticas de Projeto Heurísticas de Projeto: Modularidade desejável: Independência funcional e Módulos com um só propósito. Avalie a estrutura do programa para reduzir acoplamentos e melhorar a coesão Relação desejável entre componentes: • Forte coesão (interna) • Fraco acoplamento (externo) Heurísticas de Projeto Heurísticas de Projeto: Ligação entre módulos (FAN-IN e FAN-OUT) Número de módulos diretamente controlados por outro módulo Número de módulos que Número de módulos que controlam diretamente determinado módulo Heurísticas de Projeto Heurísticas de Projeto: 2. Tente minimizar estruturas com elevado FAN-OUT. Esforce-se para ter FAN-IN à medida que a profundidade do projeto aumentar. Fan-out Fan-out Fan-in Heurísticas de Projeto Heurísticas de Projeto: 3. Mantenha o alcance dos efeitos de um módulo dentro do alcance de controle desse módulo; Heurísticas de Projeto Heurísticas de Projeto: 4. Avalie as interfaces modulares para reduzir a complexidade e a redundância e melhorar a consistência; 5. Defina módulos cujas funções sejam previsíveis mas não crie módulos exageradamente restritos; 6. Lute por módulos com uma única entrada e uma única saída (sem acoplamentos patológicos); 7. Empacote o software tendo como base os requisitos de portabilidade e as restrições de projeto (por exemplo a plataforma do ambiente de operação). Transição da Análise para o Projeto Análise � Especificação de Requisitos � Modelos Lógicos Projeto Arquitetura Dados e e Revisão Interface Procedimental Lógicos � Dicionário de Dados (REVISADOS) Interface Procedimental Projeto orientado a Fluxo de Dados ou Orientado a Objetos Projeto de Software Projeto Orientado a Fluxo de Dados Projeto Orientado a Fluxo de Dados Análise � Especificação de Requisitos Diagrama de Projeto � Diagrama de Fluxo de Dados (DFD) � Dicionário de Dados Arquitetura Dados e e Revisão Interface Procedimental Projeto Orientado a Fluxo de Dados Seqüência: 1. Revisar os modelos de Análise (DFDs, Diag.Dados). 2. Identificar Funções que agrupadas formam subsistemas ou partes do sistema maior. 3. Identificar as Funções que podem ser decompostas,3. Identificar as Funções que podem ser decompostas, fatoradas (ou explodidas). 3. Efetuar as Fatorações das Funções. 4. Obter da fatoração a primeira versão do Diagrama Hierárquico de Estrutura, contendo os dados que são passados de um módulo para outro. Projeto Orientado a Fluxo de Dados Fatoração das Funções: Projeto Orientado a Fluxo de Dados Projeto Orientado a Fluxo de Dados Seqüência (cont): 5. Obter a primeira versão do modelo de Dados do Sistema 6. Refinar o projeto 7. Especificar e Documentar cada Módulo (PDL, Tabelas de Decisão) e cada estrutura de dados (Listas, tabelas doDecisão) e cada estrutura de dados (Listas, tabelas do bancos dados) 8. Projetar Interface para cada módulo de E/S 9. Revisar Projetos de Dados e Procedimental Projeto de Software Projeto Orientado a Objetos Projeto Orientado a Objetos Análise � Especificação de Requisitos � Diagrama de Casos de Uso Projeto Arquitetura Dados Casos de Uso � Descrição dos Casos de Uso � Dicionário de Dados Arquitetura Dados e e Revisão Interface Procedimental Projeto Orientado a Objetos Análise � Especificação de Requisitos � Diagrama de Casos de Uso Projeto Arquitetura Dados ObjetoObjeto Casos de Uso � Descrição dos Casos de Uso � Dicionário de Dados Arquitetura Dados e e Revisão Interface Procedimental Projeto Orientado a Objetos Seqüência: 1. Revisar os modelos de Análise: Casos de uso c/ descrição (funcionalidades) e Dicionário Dados 2. Obter Diagrama de Classes Conceitual - Classes do Domínio do Problema, seus atributos, operações, associações, especializações e generalizações (herança)associações, especializações e generalizações (herança) 3. Obter a Percepção de como cada Caso de Uso será implementado no sistema, através dos Diagrama de Interação 4. Obter os Modelos de Comportamento do Sistema - Estados dos Objetos Projeto Orientado a Objetos Seqüência (cont.): 5. Identificar e projetar as classes de Interface (E/S) obtendo Diagrama de Classes Detalhado 6. Refinar os modelos de classes, interação e Estados (Projetar aspectos de reutilização) 7. Especificar e Documentar cada Classe: Operações, Atributos, Domínio, Persistência, etc. 8. Projetar Diagramas de Componentes e Implementação 9. Revisar o Projeto Orientado a Objetos Bibliografia � Material de Engenharia de Software do Prof. Dr. José OSCAR F. de Carvalho. 2013-2sem Material IES - Prof. Dr. José OSCAR F. de Carvalho 45
Compartilhar