Buscar

Slide 2ª aula ao vivo - Projeto, Implementação e Teste de Software

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

Continue navegando