Please enable JavaScript.
Coggle requires JavaScript to display documents.
Projeto (Design) de Software (Projeto Orientado a Objetos (Principais…
Projeto (Design) de Software
Definição
É a parte da Engenharia de Software que se encarrega de fazer todo o planejamento anterior ao desenvolvimento, incluindo a definição da arquitetura do software, e transformar tudo em um documento ou conjunto de documentos capazes de serem interpretados diretamente pelo programador.
Para atingir esse objetivo, o projetista deve mapear as estruturas e funcionalidades identificadas na análise de requerimentos dentro do contexto e das restrições da arquitetura, de forma a tornar possível a construção do software. Ao longo do tempo e nos diversos processos de software existentes, várias ferramentas foram idealizadas para facilitar e atingir esse objetivo.
Projeto Orientado a Objetos
Objetivo:
Projetar sistemas usando objetos auto-contidos e classes de objetos.
Características:
É uma estratégia de projeto em que os projetistas pensam em termos de coisas, em vez de funções.
A funcionalidade do sistema é expressa em termos de serviços oferecidos pelos objetos.
Objetos são abstrações do mundo real ou entidades do sistema que se auto gerenciam.
Objetos são independentes e encapsulam representações de informação e estado.
Áreas de dados compartilhadas são eliminadas. Objetos se comunicam por passagem de mensagem.
Projeto Orientado a Objetos é parte do Desenvolvimento Orientado a Objeto:
-- Análise OO: Desenvolve um modelo orientado a objeto do domínio da aplicação. Os objetos identificados refletem entidades e operações associadas com o problema a ser resolvido.
-- Projeto OO: Desenvolve um modelo orientado a objeto de um sistema de software para implementar os requisitos. Os objetos em um projeto OO estão relacionados à solução do problema que está sendo resolvido.
Programação OO: Realiza um projeto de software em uma linguagem de programação OO, que aceita a implementação direta de objetos e fornece recursos para definir as classes de objeto.
A transição entre esses estágios de desenvolvimento deve ser contínua e direta, com a mesma notação utilizada em cada estágio.
Mover para o próximo estágio envolve aprimorar o estágio anterior.
Vantagens:
Facilidade de manutenção. Objetos podem ser entendidos como entidades independentes.
Os objetos são componentes potencialmente reutilizáveis.
Para vários sistemas, existe um nítido mapeamento entre as entidades do mundo real para objetos no sistema.
Objetos e Classes:
Objetos são entidades no sistema de software que representam instâncias de entidades do mundo real e do sistema.
Classes de Objetos são templates utilizados para criar objetos.
Classes de Objetos podem herdar atributos e serviços de outras classes de objetos.
Processo:
Projetar a arquitetura do sistema.
Desenvolver os Diagramas de Colaboração e/ou refinar os modelos de sequência produzidos na etapa anterior.
Desenvolver o modelo de classes de projeto > refinamento do modelo conceitual, incluindo objetos e classes para a solução do problema.
Especificar as interfaces dos objetos.
Evolução de Projeto:
A abordagem OO facilita as mudanças no projeto.
O ocultamento da informação dentro dos objetos permite que alterações feitas em um objeto não afetem outros objetos de forma imprevisível.
Objetos fracamente acoplados podem sofrer modificações internas sem afetar outros objetos do sistema.
Principais Modelos UML
Modelos de Máquina de Estados:
Mostram as mudanças de estado de objetos individuais, em resposta a eventos. (Modelo Dinâmico)
Modelos de Sequência:
Mostram a sequência das interações entre objetos. (Modelo Dinâmico)
Modelos de Colaboração:
Mostram as interações entre os objetos para implementar uma dada operação (funcionalidade do sistema). (Modelo Dinâmico)
Modelos de Subsistema (ou Modelo de Pacotes):
Mostram agrupamentos lógicos de objetos em subsistemas coerentes. (Modelo Estático)
Métodos de Projeto de Software
Combinam elementos de três categorias de projeto:
* Projeto de Dados:
Ao identificar classes e objetos, abstrações de dados são criadas.
* Projeto de Arquitetura:
Ao acoplar operações a dados, módulos são especificados e uma estrutura para o software é estabelecida.
* Projeto Procedimental:
Ao desenvolver um mecanismo para usa objetos, interfaces são descritas.
As primeiras abordagens ao Projeto Orientado a Objetos são caracterizadas pelos seguintes passos:
Defina o problema.
Desenvolva uma estratégia informal (narrativa de processamento) para a concepção de software do domínio de problema do mundo real.
Formalize a estratégia usando os seguintes passos secundários:
a. Identifique objetos e seus atributos.
b. Identifique operações que podem ser aplicadas aos objetos.
c. Estabeleça interfaces ao mostrar a relação entre objetos e operações.
d. Decida-se sobre questões de projeto detalhado que ofereçam uma descrição de implementação para os objetos.
Reaplique recursivamente os passos 2, 3 e 4. Deve-se notar que todos os quatro passos (com a possível exceção do passo 3) são executados durante a análise de requisitos de software. Entendendo-se essas atividades para o projeto, os seguintes passos são acrescidos:
Aprimore o trabalho feito durante a Análise Orientada a Objetos, procurando subclasses, características de mensagens e outras elaborações de detalhes.
Represente a(s) estrutura(s) de dados associada(s) aos atributos do objeto.
Represente os detalhes procedimentais associados a cada operação.
Padrões de Projeto
Padrões Arquiteturais
Reutilização
Métricas de Projeto de Software