PROGRAMAÇÃO ORIENTADA A OBJETOS SEMANA 2
Projeto de Software Orientado a Objetos Paradigma Orientado a Objetos x Paradigma Estruturado
10/02/2014
Prof. Geovani Sajorato [email protected]
Prof. Geovani Sajorato [email protected]
10/02/2014
Definição de Sistema
Sistema:
Na ciência da computação, conjunto de pessoas, máquinas e métodos organizados de modo a cumprir um certo número de funções específicas.
Os softwares que costumeiramente utilizamos, é um exemplo de sistema menor que esta introduzido dentro de um sistema maior que compreende outros softwares, hardware, dados, seres humanos e vários procedimentos. O sistema define o ambiente e o software existe dentro deste sistema.
Análise e Projeto de Sistema
Qualquer atividade que envolva componentes numerosos, sejam eles homens, máquinas ou métodos requer coordenação cuidadosa; embora possa não ter ficado claro, pela definição, os componentes devem trabalhar juntos para que a função específica venha a ser exercida.
A coordenação pressupõe planejamento.
Quem planeja o sistema?
De que maneira?
Prof. Geovani Sajorato [email protected]
10/02/2014
Análise e Projeto de Sistema
O sistema começa com o usuário – possui a necessidade de apoio técnico e é apto conhecer dos processos que realiza e domina as regras de negócio da atividade.
Em outro ponto da organização fica o programador – possui preparo técnico e aptidão para resolver problemas através do desenvolvimento de sistemas, se compreende as regras de negocio e domina se o processo seria capaz de resolver sozinho o problema.
Usuário Programador Intervalo de comunicação
Um intervalo de comunicação separa o usuário do programador:
Prof. Geovani Sajorato [email protected]
10/02/2014
Gap semântico Distância entre o problema no mundo real e
o modelo abstrato construído;
Quanto menor, mais rápida será a
construção da solução;
Portanto, diminuir o gap semântico tornou-
se um dos objetivos da Engenharia de
Software;
O paradigma orientado a objetos busca
meios de diminuir este gap.
Prof. Geovani Sajorato [email protected]
10/02/2014
Análise e Projeto de Sistema
Usuário Programador
O analista de sistemas traduz as necessidades do usuário em especificações técnicas necessárias ao programador.
Analista de Sistemas
Prof. Geovani Sajorato [email protected]
10/02/2014
Análise e Projeto de Sistema
conceito do domínio Livro
titulo
visualização de conceito de domínio
Representação em uma Linguagem de programação Orientada a objetos
publica class Livro
{
private String titulo;
publica Capitulo obterCapitulo(int) {...}
}
Prof. Geovani Sajorato [email protected]
10/02/2014
Ciclo de vida do sistema
Na análise e projeto de sistema está vinculado um ciclo de desenvolvimento. Este ciclo são o que podemos definir como o ciclo de vida do sistema.
Definição do problema
Estudo de viabilidade
Análise
Projeto de sistema
Projeto detalhado
Implementação
Manutenção
Prof. Geovani Sajorato [email protected]
10/02/2014
• Um sistema para um terminal de ponto de venda (POST)
• Usado para registrar vendas e processar pagamentos de clientes em lojas de varejo
• Inclui componentes de hardware (computador, leitora de código de barras) e o software para rodar o sistema
• Tarefa: criar o software para um POST
Estudo de Caso: Ponto de Venda
Prof. Geovani Sajorato [email protected]
10/02/2014
Ênfase do Estudo de Caso: Camada de Lógica da Aplicação
Apresentação
Lógica da Aplicação
Armazenamento SGBD
Object Store
Enter Item End Sale
UPC
Make Payment
Total
Quantity
Tendered Balance
Venda Pagamento
BD Segurança
Foco principal
Foco secundário
-objetos de domínio
-objetos de serviço
Foco menor
Prof. Geovani Sajorato [email protected]
10/02/2014
Estratégia de resolução • APOO aplicada ao sistema POST em dois
ciclos de desenvolvimento: • Ciclo 1 Funcionalidades básicas
• Introdução das habilidades de análise e projeto pertinentes para o primeiro ciclo
• Ciclo 2 Funcionalidades expandidas • Introdução de habilidades adicionais de análise e projeto
Prof. Geovani Sajorato [email protected]
10/02/2014
Definição de Requisitos
2. Criar Rel. Prel. de Investigação
3. Definir Requisitos
9. Refinar Plano 7. Definir Mod. Conc. Inicial
c
4. Reg. Termos no Glossário a
6. Definir Casos de Uso
1. Definir Plano Inicial
5. Implementar Protótipo
b, d
a. contínua
b. opcional
c. adiável
d. ordem variada
8. Definir Arquit. Inicial
a, c, d
Notas
Construção Plan. & Elaboração
Implantação
Prof. Geovani Sajorato [email protected]
10/02/2014
Definição de Requisitos
• Requisitos mal-entendidos ou incorretamente especificados representam um grande risco para o desenvolvimento de software
• Especificações bem-feitas requerem uma gama de habilidades e técnicas, cujo estudo detalhado está fora do escopo do curso
• Foco: introdução à especificação de requisitos, usando o sistema POST como exemplo
Prof. Geovani Sajorato [email protected]
10/02/2014
O que são Requisitos? • Descrições das necessidades ou desejos para um produto
• Usados para identificar e documentar o que é realmente necessário, de uma forma que fique claro para clientes e desenvolvedores
• Desafio: • Evitar ambiguidades
• Identificar riscos
• Coletar e “digerir” dados de fontes variadas de informação (documentos, entrevistas, reuniões, etc.)
Prof. Geovani Sajorato [email protected]
10/02/2014
O termo requisito não é utilizado pela indústria de software de modo consistente.
Em alguns casos, um requisito é visto como uma declaração abstrata, de alto nível, de uma função que o sistema deve fornecer ou de uma restrição de sistema.
No outro extremo é uma definição detalhada, matematicamente formal, de uma função do sistema.
Prof. Geovani Sajorato [email protected]
10/02/2014
1. Definição de Requisitos
1. O software deve oferecer um meio de representar e acessar arquivos
externos criados por outras ferramentas.
Definição dos requisitos do usuário
Especificação dos requisitos de sistema
1.1 O usuário deve dispor de recursos para definir o tipo dos arquivos
externos.
1.2 Cada tipo de arquivo externo pode ter uma ferramenta associada
que pode ser aplicada a ele.
1.3 Cada tipo de arquivo externo pode ser representado como um ícone
específico na tela do usuário.
1.4 Devem ser forncecidos recursos para o ícone que representa um
arquivo externo, a ser definido pelo usuário.
1.5 Quando um usuário seleciona um ícone que representa um arquivo
externo,o efeito dessa seleção é aplicar a ferramenta associada com o
tipo de arquivo externo ao arquivo representado pelo ícone selecionado.
Prof. Geovani Sajorato [email protected]
10/02/2014
O requisitos de sistema de software são , freqüentemente, classificados como:
2. Tipos de Requisitos
1. Requisitos funcionais
2. Requisitos não funcionais
3. Requisitos de domínio
Prof. Geovani Sajorato [email protected]
10/02/2014
PARADIGMA ORIENTADO A OBJETOS X PARADIGMA ESTRUTURADO
Paradigma de desenvolvimento O que é um paradigma?
Um exemplo, um modelo, um padrão;
Um conjunto de idéias, uma base filosófica.
Um paradigma de desenvolvimento agrupa
métodos e técnicas que seguem um mesmo
conjunto de princípios;
Os dois mais conhecidos são:
Desenvolvimento Estruturado;
Orientação a Objetos (OO).
Prof. Geovani Sajorato [email protected]
10/02/2014
Paradigma de desenvolvimento Estruturado:
Modelo entrada – processamento – saída;
Dados separados das funções.
Orientado a Objetos (OO):
O mundo é composto por objetos;
Objetos combinam dados e funções;
Conceitos do problema são modelados como
objetos que são associados e interagem entre si.
Prof. Geovani Sajorato [email protected]
10/02/2014
Desvantagens do paradigma estruturado O gap semântico é maior;
Freqüentemente gera sistemas difíceis de
serem mantidos:
As funções tem que conhecer a estrutura dos
dados;
Mudanças na estrutura dos dados acarreta
alteração em todas as funções relacionadas.
Por estes motivos, o paradigma orientado a objetos
vem tomando o espaço que antes era dominado pelo paradigma estruturado.
Prof. Geovani Sajorato [email protected]
10/02/2014
Benefícios esperados da OO Capacidade de enfrentar novos domínios;
Melhoria da interação analistas x especialistas;
Aumento da consistência interna da análise;
Uso de uma representação básica consistente para análise e projeto;
Prof. Geovani Sajorato [email protected]
10/02/2014
Benefícios esperados da OO
Alterabilidade, legibilidade e extensibilidade;
Orientação a objetos não é mágica e nem a “tábua
de salvação” do desenvolvimento. É preciso
aplica-lá com disciplina e em conjunto com outras
técnicas da Engenharia de Software.
Possibilidade de ciclos de vida variados;
Apoio à reutilização.
Prof. Geovani Sajorato [email protected]
10/02/2014