Baixe o app para aproveitar ainda mais
Prévia do material em texto
Projeto, Implementação e Teste de Software Aula de Hoje Prof. Esp. Janaína Freitas Aula de Hoje Plano de Estudo: • Projeto de Software • Conceitos Básicos do Projeto de Software • Modelo de Projeto de Software Pré-requisitos: • Unidade: II • Pré-requisitos: • Unidades III e IV do livro. Projeto, Implementação e Teste de Software Projeto de Software Prof. Esp. Janaína Freitas Projeto de Software O Projeto de Software cria um modelo ou uma representação onde é definido o “como fazer”, fornecendo todos os detalhes sobre a arquitetura, a estrutura de dados, a interface e os componentes essenciais para implementar o sistema. O Projeto de Software tem como objetivos: • Definir uma estrutura que possa ser implementada em um produto de software. • Atender os requisitos especificados para ele na análise. Projeto, Implementação e Teste de Software Projeto de Software Projeto, Implementação e Teste de Software Na fase de Projeto é onde decidimos como o sistema se comportará: • Software e Hardware • Infraestrutura de rede • Interface de usuário • Formulários • Relatórios • Outros programas • Bancos de Dados • Arquivos Projeto de Software - Notação Informal Projeto, Implementação e Teste de Software Fonte: Autora Projeto de Software – Notação UML Projeto, Implementação e Teste de Software Fonte: Autora Conceitos básicos de Projeto Software Projeto, Implementação e Teste de Software Principais conceitos relacionados ao Projeto: • Abstração • Refinamento • Modularidade • Padrões • Arquitetura • Hierarquia de Controle • Encapsulamento • Estrutura de Dados • Procedimentos de Software • Ocultação de Informação • Independência Funcional Abstração Projeto, Implementação e Teste de Software Abstração é um dos modos fundamentais pelos quais nós, seres humanos, enfrentamos a complexidade. Consiste em identificar os aspectos essenciais de um contexto qualquer, ignorando características menos importantes. Quando consideramos uma solução modular para qualquer problema, muitos níveis de abstração podem ser levantados: • Nível mais alto: uma solução é enunciada em termos amplos usando a linguagem do ambiente do problema. • Nível mais baixo: é fornecida uma descrição mais detalhada da solução. Imagens: Pixabay Abstração Projeto, Implementação e Teste de Software Exemplo: modelando uma aplicação para uma Biblioteca. Um livro possui várias características: gênero, preço, número de páginas, ISBN, autor, tradutor, editora, cor da capa entre outras. Mas será que todas serão úteis para a aplicação da Biblioteca? • Objeto Livro do “mundo real”: abstraindo aquilo que é importante para a aplicação. • Dependendo do contexto da aplicação o que é importante difere. • Faz diferença para uma biblioteca (que empresta livros) possuir o preço do livro? • Para uma livraria (que vende livros) a necessidade do preço é mais evidente. Refinamento e Abstração Projeto, Implementação e Teste de Software • Refinamento é a incorporação de detalhes ao longo dos níveis de abstração. Abstração e refinamento são conceitos complementares: • A abstração permite ao projetista especificar procedimentos e dados e ainda suprimir detalhes de baixo nível. • O refinamento ajuda o projetista a revelar os detalhes de baixo nível à proporção que o projeto progride. níveis de abstração Imagem: Pixabay Modularidade Projeto, Implementação e Teste de Software • Dividir o software em elementos independentes, a serem integrados. • Permite criar aplicações em que suas partes funcionais sejam independentes e reutilizáveis. Podem: • Reduzir a complexidade; • Facilitar a mudança; • Reduzir o custo; • Resultar numa implementação mais fácil ao estimular o desenvolvimento paralelo de diversas partes de um sistema; • Facilitar os testes; • Facilitar a manutenção. Modularidade Projeto, Implementação e Teste de Software Um sistema complexo pode ser dividido em unidades ou partes menores e mais simples. Módulos Imagem: Pixabay Imagem: Pixabay Encapsulamento Projeto, Implementação e Teste de Software Define e impõe restrições de acesso tanto a detalhes procedurais em um módulo quanto em qualquer estrutura de dados local usada pelo módulo. Encapsulamento é um mecanismo utilizado para lidar com o aumento de complexidade. • Consiste em exibir “o que” pode ser feito sem informar “como” é feito. • Os detalhes não precisam ser conhecidos por usuários do módulo. Ocultação de Informação Projeto, Implementação e Teste de Software • Os módulos devem ser especificados e projetados de tal forma que as informações (procedimentos e dados) contidas num módulo sejam inacessíveis a outros módulos que não tenham necessidade de tais informações. • A ocultação de informação implica em uma modularidade tal que um conjunto de módulos independentes comunicam entre si somente aquelas informações que são necessárias para se obter a função do software. Independência Funcional Projeto, Implementação e Teste de Software Produto direto da modularidade e do conceito de ocultação da informação. • Ela é alcançada desenvolvendo-se módulos com função "com um só propósito" e "aversão" a interações excessivas com outros módulos. A Independência Funcional é medida usando-se dois critérios qualitativos: • Coesão: é uma indicação qualitativa do grau com o qual um módulo se concentra em fazer apenas uma coisa. • Acoplamento : é uma indicação qualitativa do grau com o qual um módulo está conectado a outros módulos e com o mundo externo. Coesão Projeto, Implementação e Teste de Software Como estão relacionadas as atividades dentro de um único componente ou entre um grupo de componentes? Componentes altamente coesos = relacionados a apenas UMA funcionalidade Relatório Impressão Cliente Impressão Relatório Cliente Alta Coesão Baixa Coesão Fonte: Autora Acoplamento Projeto, Implementação e Teste de Software Exemplo: a classe GerenciadorDeNotaFiscal, depende de outras 3 classes: um DAO, uma classe que envia e-mail e uma classe que se comunica com um serviço externo da empresa. Problema: caso elas mudem, a classe principal pode sofrer mudanças também. Fonte: Autora Modelo do Projeto de Software Prof. Esp. Janaína Freitas Dimensões do Modelo de Projeto de Software Projeto, Implementação e Teste de Software Fonte: Pressman (2011, p. 221) Modelo de Projeto de Software Projeto, Implementação e Teste de Software O modelo de projeto possui quatro elementos principais: Análise Projeto Construção Arquitetura Interfaces Dados Componentes Fonte: Autora Próxima aula: Unidade II • Projeto de Arquitetura • Projeto de Dados Projeto, Implementação e Teste de Software
Compartilhar