Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
PROCESSOS DE DESENV. DE SOFTWARE CURSO DE ANÁLISE E DESENVOLVIMENTO DE SISTEMAS Professor: David Falcão, M.Sc. davidfalcaoprof@gmail.com Aula 5 – Projeto de software Processos de Desenvolvimento de Software – Prof. David Falcão Atividades básicas de um PDS Definição / Especificação: (o quê?) • Análise econômica • Análise de requisitos • Especificação de software Desenvolvimento : (como?) • Arquitetura do sistema • Implementação (codificação) Manutenção: • Teste do produto • Documentação, Suporte e Melhoria Contínua Processos de Desenvolvimento de Software – Prof. David Falcão O que é projeto de software? Atividades de definição da arquitetura, componentes, interfaces e demais características de um sistema ou de um componente; Requisitos de software são analisados para produzir a descrição da estrutura interna do software que servirá como base para sua construção; Processos de Desenvolvimento de Software – Prof. David Falcão Princípios do projeto de software Abstração – é o processo de esquecer informações tal que coisas diferentes possam ser tratadas como se fossem iguais; Conceitos: Restaurante Pratos Garçons GARÇOM Entidades Objetos # Matricula: Int; + Nome: String; + Telefone: String; - Comissao: Real; + ServeMesa(Cliente); Clientes Processos de Desenvolvimento de Software – Prof. David Falcão Princípios do projeto de software Abstração – é o processo de esquecer informações tal que coisas diferentes possam ser tratadas como se fossem iguais; Encapsulamento / Ocultamento de Informação - Significa agrupar e empacotar os detalhes internos de uma abstração e tornar estes detalhes inacessíveis; GARÇOM # Matricula: Int; + Nome: String; + Telefone: String; - Comissao: Real; + ServeMesa(Cliente); Detalhes sobre implementação podem (e devem) ser ocultados Deve-se abstrair somente aquilo que é importante no contexto. Processos de Desenvolvimento de Software – Prof. David Falcão Princípios do projeto de software Decomposição e Modularização – A Decomposição e Modularização de software num número de componentes pequenos e independentes, normalmente com o objetivo de colocar diferentes funcionalidades ou responsabilidades em diferentes componentes; Software Programa 1 Programa 1 Programa 1 Mod 1 Mod 2 Mod N Compo nente 1 ... ... Compo nente 2 Processos de Desenvolvimento de Software – Prof. David Falcão Princípios do projeto de software Acoplamento - a força do relacionamento entre módulos. É quanto um elemento (classe, método, função, módulo, componente etc) depende e conhece do outro. Elementos muito acoplados geralmente são muito dependentes; muda informação em um, será necessário mudar no outro. Coesão - quanto as tarefas que um elemento realiza estão relacionadas com um mesmo conceito. Baixa coesão teria uma função/módulo/classe que, por exemplo, imprime um documento e exibe um formulário para o usuário, neste caso provavelmente dever-se-ia dividir este elemento em mais de um. IDEAL: Baixo acoplamento + Alta coesão Processos de Desenvolvimento de Software – Prof. David Falcão Princípios do projeto de software Separação entre interface e implementação - A separação entre interface e implementação envolve a definição de um componente, especificando a interface pública (conhecida para os clientes), separado dos detalhes de como o componente é implementado. Interface Lógica do Software Processos de Desenvolvimento de Software – Prof. David Falcão Estilos de Arquitetura Existem muitas formas de se projetar módulos de software e suas comunicações. Alguns exemplos: Centralizada Processos de Desenvolvimento de Software – Prof. David Falcão Estilos de Arquitetura Existem muitas formas de se projetar módulos de software e suas comunicações. Alguns mais conhecidos: Cliente-Servidor Processos de Desenvolvimento de Software – Prof. David Falcão Estilos de Arquitetura Existem muitas formas de se projetar módulos de software e suas comunicações. Alguns mais conhecidos: Cliente-Servidor Processos de Desenvolvimento de Software – Prof. David Falcão Estilos de Arquitetura Existem muitas formas de se projetar módulos de software e suas comunicações. Alguns mais conhecidos: Cliente-Servidor • Alta Capacidade de Processamento Distribuído • Internet/Intranet/Extranet/VPNs como infraestrutura de rede • Distribuição dos Serviços em várias camadas de servidores de aplicação e dados • Internet Applications de última geração, CRM (Relacionamento com Cliente), Bancos de Dados Distribuídos Processos de Desenvolvimento de Software – Prof. David Falcão Estilos de Arquitetura Existem muitas formas de se projetar módulos de software e suas comunicações. Alguns mais conhecidos: P2P (Peer-to-peer) • permite o compartilhamento de dados e recursos numa larga escala eliminando qualquer requisito por servidores gerenciados separadamente e a sua infraestrutura associada. • constituída por computadores ou outros tipos de unidades de processamento que não possuem um papel fixo de cliente ou servidor, pelo contrário, costumam ser considerados de igual nível • assumem o papel de cliente ou de servidor dependendo da transação sendo iniciada ou recebida de um outro par da mesma rede. Processos de Desenvolvimento de Software – Prof. David Falcão Padrões de Arquitetura de Software É uma solução geral reutilizável para um problema recorrente no desenvolvimento de sistemas de software orientados a objetos. Não é um código final, é uma descrição ou modelo de como resolver o problema do qual trata, que pode ser usada em muitas situações diferentes. Estão num nível de generalidade alto. Padrão MVC dados lógica interface Processos de Desenvolvimento de Software – Prof. David Falcão Frameworks Utilizados amplamente na programação orientada a objetos; É uma aplicação reutilizável e semi-completa que pode ser especializada para produzir novas aplicações; Servem para aumentar a produtividade do processo de desenvolvimento, onde eles servem de alicerce, base para as aplicações; Processos de Desenvolvimento de Software – Prof. David Falcão Padrões de Arquitetura de Software Passos básicos de um projeto de software: 1. Selecionar padrões e frameworks apropriados para o software 2. Particionar o modelo em subsistemas, interfaces e alocar funções (classes) para cada subsistema 3. Projetar a estrutura de dados apropriada e seus atributos 4. Criar um conjunto de classes de projeto 5. Projetar a Interface do Usuário 6. Conduzir o projeto a nível de componente (serão necessários componentes? como será codificado?)