Unidade 3
Desenvolvimento do
Software
Projeto do Software
Codificação
Desenvolvimento do Software
Projeto do Software: traduz os requisitos do software
num conjunto de representações (algumas gráficas, outras tabulares ou baseadas em linguagem) que descrevem a estrutura de dados, a arquitetura do software, os procedimentos algorítmicos e as características de interface;
Codificação: as representações do projeto devem ser
convertidas numa linguagem artificial que resulte em instruções que possam ser executadas pelo computador
Realização de Testes do Software: logo que o software
é implementado, ele deve ser testado para que se possa descobrir defeitos de função, lógica e implementação
Projeto
de
Projeto de Software
“O projeto é o primeiro passo da fase de
desenvolvimento de qualquer produto ou sistema
de engenharia. Ele pode ser definido como o
processo de se aplicar várias técnicas e princípios
ao propósito de se definir um dispositivo, um
processo ou um sistema com detalhes suficientes
para permitir sua realização física.”
O projeto é considerado a terceira etapa do
desenvolvimento de um software: levantamento de
requisitos, análise de requisitos(análise de sistemas) e
projeto;
É a primeira das atividades consideradas técnicas:
projeto, codificação e testes.
Utiliza as especificações produzidas durante a análise
e estabelece como organizar as especificações de uma
forma apropriada para execução em computador.
Projeto de Software
Projeto Código Teste Modelo de Informação Modelo funcional Modelo comportamental Outros requisitos Projeto de dados Projeto Arquitetural Projeto Procedimental Módulos de Programa Software Projeto de
Os requisitos de software, levantados e analisados
anteriormente, transformados em modelos
funcionais, comportamentais e de informação são
utilizados pela fase de projeto.
Usando um método de projeto (que serão vistos
posteriormente), serão produzidos um projeto de
dados, um projeto arquitetural e um projeto
procedimental.
Projeto de Dados: transforma o modelo do
domínio de informação, criado durante a fase de
análise dos requisitos, em estruturas de dados que
serão exigidas para implementar o software.
Projeto Arquitetural: define as funções e o
relacionamento entre as mesmas.
Projeto Procedimental: transforma os
componentes estruturais (funções) em uma
descrição procedimental do software;
Projeto de Interfaces: constrói a “embalagem”
do software; as janelas de comunicação entre
sistema e usuário.
À partir do projeto, o código-fonte é gerado.
Logo após a codificação, a atividade de testes é
realizada para integrar e validar o software
IMPORTÂNCIA
QUALIDADE
Através do projeto podemos avaliar todos os requisitos especificados pelo cliente e verificar sua validade, na
forma de um produto ou software acabado.
Sem um projeto, , a construção de um sistema torna-se instável, podendo apresentar falhas quando algumas
modificações forem feitas.
Projeto de Software
Projeto Implementação Teste Manutenção Implementação Teste Manutenção
O projeto de software é o processo pelo qual os
requisitos são traduzidos em uma representação do
software.
Pode ser visto sob duas perspectivas:
Técnica: composta de quatro atividades: projeto de dados, projeto arquitetural, projeto procedimental e projeto de interfaces;
Perspectivas:
Administrativa (técnica): que se desenvolve a partir de:
Projeto preliminar: transforma os requisitos em uma arquitetura de dados e de software;
Projeto detalhado: concentra-se no
aprimoramento estrutural dos algoritmos e da estrutura dos dados.
Diretrizes para um projeto de boa qualidade:
ser modular, ou seja, o software deve ser logicamente dividido em componentes que executem funções específicas;
exibir uma organização hierárquica que faça uso inteligente destes componentes e da comunicação entre os mesmos;
Diretrizes para um projeto de boa qualidade:
levar a módulos independentes (reuso);
Levar a interfaces simples, que reduzam a
complexidade de conexões entre os módulos e com o ambiente externo;
Utilizar metodologias sistemáticas de projeto e cuidadosa revisão.
A evolução do projeto de software é um processo
contínuo que se estende há três décadas;
Inicialmente, a preocupação era com o
desenvolvimento de programas modulares;
Os aspectos procedimentais resultaram na
metodologia denominada programação estruturada
(projeto estruturado);
Mais recentemente: projeto orientado a objetos
O que estes métodos têm em comum:
mecanismos para a tradução do domínio de
informação em uma representação de projeto;
uma notação para representar os componentes
funcionais e suas interfaces;
mecanismos para refinamento e divisão em
partições; e
diretrizes para avaliação da qualidade.
A atividade primordial durante o projeto de dados é
selecionar as representações lógicas de objetos de
dados (estruturas de dados) identificadas durante a
fase de especificação e definição dos requisitos;
Definição do conteúdo dos arquivos (banco de
dados), das características físicas de armazenamento
dos dados e dos acessos aos mesmos;
Um dicionário de dados deve ser estabelecido e
utilizado para definir tanto o projeto de programas
como o projeto de dados.
Objetivo: desenvolver uma organização modular
lógica e definir controles para os módulos;
Mostra como será a união da estrutura de dados
com a estrutura do programa;
Representar o software como “um todo”, para
depois se preocupar com detalhes procedimentais
e de código;
Nesta etapa só é relevante definir a função do
módulo, sem detalhes.
Achar Valor Total Obter Montantes Tamanho da tabela Tabela contas clientes Valor Total Num Conta Cliente Débito Crédito
Ocorre depois que o projeto de dados e
arquitetural estão prontos;
Objetivo: especificação de pseudocódigos
(linguagem algorítmica) que implementam as
funções identificadas na organização modular;
Detalhamento para para cada função identificada
no projeto de dados;
Construção de fluxogramas para especificar as
funções.
Módulo Achar_Valor_Total
/* obtém o montante líquido de um grupo de clientes do banco que são determinados por uma tabela com seus números de conta */
usa tabela de contas de clientes /* contém os números de conta
tamanho da tabela /* número de clientes */
fixe valortotal em 0
repita variando numero de clientes de 1 até o tamanho da tabela inicio do repita
fixe numero de conta do cliente em tabela de contas de cliente
execute obter montantes usando numero de conta do cliente retornando crédito e débito
some valortotal = valortotal + (crédito-débito) obtendo valor total
fim do repita
Projeto de Software – Projeto de Interfaces
“Frustração e ansiedade fazem parte da vida diária de
muitos usuários de sistemas de informação
computadorizados. Eles lutam para aprender a
linguagem de comandos ou sistemas de seleção por
menu, os quais, presume-se, devem ajudá-los.
Algumas pessoas enfrentam casos tão sérios de
estado de choque diante de computadores, pavor de
terminais ou neurose de redes de computador que
evitam usar sistemas computadorizados”
Projeto de Software – Projeto de Interfaces
Provável causa disso ???
Projeto de Software – Projeto de Interfaces
A interface pode ser considerada a “embalagem” do
software. Se ela for fácil de aprender, simples de
usar, direta e amigável, os usuário estará inclinado a
fazer bom uso daquilo que está dentro.
Ao contrário dos projetos internos do software, se o
projeto de interfaces for inadequado, o usuário o
saberá imediatamente e não ficará satisfeito com o
modo de interação não-amigável.
O projeto de interfaces, além de se preocupar com
as questões tecnológicas, deve se preocupar com
um estudo das pessoas diretamente ligadas ao
software em desenvolvimento:
Quem é o usuário?
Quem faz o usuário aprender a interagir com o novo sistema?
Como o usuário interpreta as informações produzidas pelo sistema?
O que o usuário espera do sistema?
Fatores Humanos:
Memória humana;
Raciocínio dedutivo e indutivo; Percepção visual;
Habilidade individual de cada usuário do sistema; Diferença de personalidade entre os usuários do
sistema.
Projeto de Interface Homem-Máquina (IHM)
Criação de modelos de função do sistema;
Detalhamento cada tarefa(função do sistema);
Construção de protótipos para encaminhar ao
usuário;
Avaliação cliente;
Refinamento dos protótipos de acordo com
solicitações do cliente;
Finalização e avaliação final.
Projeto de Software – Projeto de Interfaces
Projeto preliminar Prototipar Interface 1 Avaliação do Usuário Modificações na interface Projetista estuda avaliação Prototipar Interface n O projeto de interfaces
Diretrizes de projeto de Interfaces : três categorias
Interação Geral;
Exibição de Informações; e
Entrada de Dados
Diretrizes de Interação Geral
Seja consistente: use um formato consistente para a escolha do menu, entrada de comandos, exibição de dados, entre outras.
Ofereça mensagens de verificação: para qualquer
ação “destrutiva”, emitir mensagens de
confirmação; mensagens de erro, entre outras.
Reduza a quantidade de informações que deve ser
memorizada no intervalo entre ações.
Diretrizes de Interação Geral
Divida as atividades em categorias por função e organize a geografia da tela de acordo (menus).
Use verbos de ação simples para nomear os
comandos.
Use representações gráficas coerentes para expressar um determinado comando.
Ofereça facilidades de ajuda.
Diretrizes de Exibição de Informações
Mostre somente informações que sejam relevantes
ao contexto atual.
Não “enterre” o usuário com dados: sempre que
possível substitua por gráficos.
Use rótulos (labels, nomes de campos) consistentes, com abreviações apenas se padronizadas.
Diretrizes de Exibição de Informações
Permita que o usuário mantenha o contexto visual: se uma imagem ultrapassar uma tela, fazendo com que o usuário precise se movimentar, mostrar a
figura toda em um canto, reduzida.
Atenção com o layout e a forma de apresentação das
informações textuais.
Use janelas (guias, paletas) para dividir em
compartimentos diferentes tipos de informação.
Diretrizes de Entrada de Dados
Minimize o número de ações de entrada exigidas do
usuário.
Reduza a quantidade de digitação: quando possível utilizar o mouse para selecionar opções.
Mantenha a consistência entre a exibição das
informações e a entrada de dados: ex: tamanho do texto e cor iguais na exibição do nome do campo e da entrada do dado referente.
Diretrizes de Entrada de Dados
A interação deve ser flexível, mas também
sintonizada com o modo de entrada preferido do usuário.
Desative opções que não devam ser acessadas em
determinado momento da função que está sendo executada.
Ofereça ajuda que dê assistência em todas as ações
de entrada.
Trabalho em Grupo
Descrição : desenvolvimento de, no mínimo, 3 interfaces - de
acesso geral ao sistema, de entrada de dados e de exibição de dados (um relatório ou gráfico) - para o sistema do estudo de caso. Podem ser desenvolvidas interfaces de ajuda, janelas de confirmação, avisos, entre outras que desejarem.
Grupo : de 4 a 5 alunos.
Mecanismos : avaliação das diretrizes básicas de projeto de
interface para cada uma das 3 categorias. A linguagem de desenvolvimento das interfaces é de escolha do grupo
Avaliação : apresentação de 10 minutos, em data a ser
definida, expondo as interfaces, com uma descrição de todas as diretrizes que foram utilizadas em cada ponto das mesmas.
Projeto
Orientado ao
Vem em complemento a Análise Estruturada;
Define uma série de diferentes funções que
transformam o fluxo de informações em estrutura
de programa;
Mais conhecido como "projeto estruturado”;
Tem suas origens em antigos conceitos de projeto
que salientavam a modularidade, projeto top-down
e programação estruturada.
Possui uma extensão, denominada DARTS, que
aborda aplicações de tempo real;
Utiliza o diagrama de fluxo de dados (DFD) como
uma ferramenta gráfica para descrever o fluxo de
informações e o diagrama de estrutura;
Etapas genéricas de projeto estruturado:
estabelecer o tipo de fluxo de informações; refinar o DFD;
definir as fronteiras do sistema: entradas e saídas;
mapear o DFD em uma estrutura de programa;
desenvolver os pseudocódigos;
aprimorar a estrutura resultante, se necessário.
Tipos de Fluxo
Fluxo de Transformações: faz com uma entrada do
usuário, seja transformada e uma saída seja apresentada - isto leva a uma análise de
transformações;
Fluxo de Transações: uma única entrada do usuário pode disparar várias ações (transações) ao mesmo tempo - isto leva a uma análise de transações;
Refinar o DFD
refinar, quantas vezes forem necessárias, o DFD desenvolvido na etapa de análise, de forma a
produzir detalhes mais amplos;
Identificar fronteiras do sistema
para cada transformação (bolha do DFD), indicar as
entradas e as saídas;
Mapear o DFD - Fatoração
transformar o DFD refinado em estruturas de
programa, que mostra todos os módulos do sistema, de forma top-down (hierarquicamente distribuídos)
utiliza o diagrama de estrutura, que mostra:
o particionamento de um sistema em módulos;
a hierarquia e organização dos módulos;
as fronteiras de comunicação entre módulos;
nomes e funções dos módulos;
Obter detalhes do Cliente Encontrar nome do cliente Num. Conta do Cliente Num. Conta correto Nome do Cliente Módulo Nome do Módulo Módulo Chamador Módulo Chamado Conexão entre os módulos Comunicação entre os módulos Ligação de dados
Ligação de controle (flag)
Desenvolver os pseudocódigos
Um diagrama de estrutura não mostra:
os procedimentos internos de cada módulo; e
os dados internos do módulo.
Sendo assim, é necessário que uma descrição
completa de cada módulo acompanhe o diagrama de estrutura.
Módulo Achar_Valor_Total
/* obtém o montante líquido de um grupo de clientes do banco que são determinados por uma tabela com seus números de conta */
usa tabela de contas de clientes /* contém os números de conta
tamanho da tabela /* número de clientes */
fixe valortotal em 0
repita variando numero de clientes de 1 até o tamanho da tabela inicio do repita
fixe numero de conta do cliente em tabela de contas de cliente
execute obter montantes usando numero de conta do cliente retornando crédito e débito
some valortotal = valortotal + (crédito-débito) obtendo valor total
fim do repita
Projeto
Orientado a
Objetos
Cria uma representação do domínio do problema do
mundo real, conduzindo a uma solução que é o
sistema desenvolvido;
Baseada em três conceitos:
abstração; ocultação; e
modularidade.
Etapas genéricas de projeto OO:
refinar o diagrama de classes;
detalhar características dos atributos de cada classe;
identificar as operações pertencentes a cada classe;
especificação de todos os módulos do sistema - comunicação entre os objetos (pacotes);
revisar o projeto desenvolvido.
Refinar o diagrama de classes
revisar o diagrama de classes, desenvolvido na etapa de análise, de forma a verificar se novas classes são necessárias ou precisam ser retiradas do sistema;
aplicar herança onde for apropriado, caso não tenha sido utilizada na fase de análise;
Detalhar características dos atributos
especificar o dicionário de dados para os atributos
de cada classe;
Identificar Operações
identificar todos os métodos de cada classe, bem como sua funcionalidade, sem detalhes de como implementá-lo;
Especificar módulos
definir as mensagens que os objetos enviam uns aos
outros - comunicação ou interface entre os objetos;
definir aspectos de modularidade do sistema;