Prototipação de Software
Prototipação de Software
Prototipação de Software
Agenda
Introdução
Prototipação no processo de software Técnicas de prototipação rápida
Prototipação de interface com o sistema Bibliografia
Prototipação de Software
Introdução
Objetivos
Explicar o papel da prototipação em diferentes tipos de projetos de
desenvolvimento
Explicar a diferença entre a prototipação evolucionária e a prototipação
descartável
Apresentar os três diferentes técnicas de prototipação, que são: o
desenvolvimento de linguagem de nível muito elevado, a programação de banco de dados e o reuso de componentes e aplicações
Explicar por que a prototipação é a única técnica viável para o projeto e o
Prototipação de Software
Introdução
Prototipação de Software é o desenvolvimento rápido de software para validar os requisitos
Antigamente, o limite entre prototipação e o desenvolvimento normal do sistema era claramente identificado, mas, atualmente, muitos sistemas são desenvolvidos usando a técnica de desenvolvimento evolucionário O principal uso é ajudar aos clientes e desenvolvedores a entenderem os
requisitos do sistema
Levantamento de requisitos: Os usuários podem experimentar o
protótipo para ver como sistema apóia ao seu negócio
Validação de requisitos: O protótipo pode revelar erros e omissões nos
requisitos
Prototipação pode ser considerada como uma atividade de redução de risco que reduz risco de requisitos
Prototipação de Software
Introdução
Benefícios da Prototipação
Possíveis equívocos entre os desenvolvedores de software e usuários
podem ser identificados à medida que as funções do sistema são apresentadas
A equipe de desenvolvimento de software pode encontrar requisitos
incompletos e/ou inconsistentes quando o protótipo é desenvolvimento
Um sistema operante, embora limitado, se torna rapidamente disponível,
a fim de mostrar a viabilidade e a utilidade da aplicação para a gerência
O protótipo pode ser utilizado como uma base para escrever a
especificação para um sistema com qualidade de produção
Um protótipo pode dar suporte ao treinamento dos usuários e ao teste do
Prototipação de Software
Introdução
Processo de desenvolvimento de protótipo
Establish prototype objectives Define prototype functionality Develop prototype Evaluate prototype Prototyping plan Outline
definition Executableprototype Evaluationreport
Plano de prototipação Definição geral Protótipo executável Relatório de avaliação Estabelecer objetivos do protótipo Definir a funcionalidade do protótipo Desenvolver o protótipo Avaliar o protótipo
Prototipação de Software
Introdução
Benefícios da prototipagem no processo de software
Melhoria na facilidade de uso do sistema
Maior aproximação do sistema com as necessidades dos usuários Melhoria da qualidade do projeto
Melhoria na facilidade de manutenção Esforço de desenvolvimento reduzido
Prototipação de Software
Prototipação no Processo de Software
Duas abordagens
Prototipação evolucionária
Uma técnica para o desenvolvimento de sistemas onde um protótipo inicial é produzido e refinado através de um número de estágios até o sistema final
O objetivo é entregar um sistema operacional para os usuários finais. O desenvolvimento inicia-se com os requisitos que são mais bem
compreendidos
Prototipação descartável
Um protótipo, que é uma implementação prática do sistema, é produzido para ajudar a descobrir problemas nos requisitos e então descartado. O sistema é então desenvolvido usando alguma outro processo de desenvolvimento
O objetivo é validar ou descobrir requisitos do sistema. O processo de
prototipação inicia-se com os requisitos que NÂO são bem compreendidos. Os requisitos compreendidos podem nunca ser prototipados
Prototipação de Software
Prototipação no Processo de Software
Evolutionary
prototyping
Throw
-aw
ay
Prototyping
D
elivered
system
Executable Prototype +
System
Specification
O
utline
Requirem
requisitosEsboçarents
Sistema entregue Protótipo executável + especificação do sistema Prototipação descartável Prototipação evolucionária
Prototipação de Software
Prototipação no Processo de Software – Prototipação Evolucionária
Deve ser usada quando a especificação não pode ser desenvolvida de uma única vez
Baseada nas técnicas que permitem as iterações rápidas do sistema Verificação é impossível quando não existe especificação. Validação
significa demonstrar a adequação do sistema Vantagens:
Entrega rápida do sistema
A entrega e a implantação rápidas são as vezes mais importantes que as funcionalidades e manutenibilidade dos software
Compromisso do usuário com o sistema
Não é somente atender os requisitos dos usuários, mas obter o compromisso dos usuários em ajudar a alcançar os requisitos
Prototipação de Software
Prototipação no Processo de Software – Prototipação Evolucionária
Build prototype
system
Develop abstract
specification
Use prototype
system
Deliver
system
System
adequate?
YES
N
Desenvolverespecificação abstrata sistema protótipoConstruir sistema protótipoUtilizar
Entregar sistema Adequado?Sistema
SIM
Prototipação de Software
Prototipação no Processo de Software – Prototipação Evolucionária
Características comuns dos processos de rápidos de desenvolvimento:
Especificação, projeto e implementação são intercalados. Não há
especificação detalhada
O sistema é desenvolvido como uma série de incrementos que são
entregues ao consumidor
Técnicas para o desenvolvimento rápido do sistemas são auxiliadas por
ferramentas CASE e linguagens de quarta geração (4GL).
Interfaces com o usuários são geralmente desenvolvidas utilizando-se
Prototipação de Software
Prototipação no Processo de Software – Prototipação Evolucionária
Problemas:
Problemas de gerenciamento
Os processos de gerenciamento existentes assumem um modelo em cascata de desenvolvimento
Problemas de manutenção
Mudanças contínuas tendem a corromper a estrutura do sistema
Problemas contratuais
Os modelos de contratos existentes são baseado em especificação. Novos modelos de contratos são necessários
Problemas de se usar protótipos como especificação
Alguns partes dos requisitos podem ser impossíveis de prototipar e não apareceriam na especificação
Uma implementação não é considerada objeto legal em um contrato Requisitos não funcionais não podem ser testados em um protótipo
Prototipação de Software
Prototipação no Processo de Software – Prototipação Evolucionária
Desenvolvimento Incremental
O sistema é desenvolvido e entregue em incrementos depois que se
estabelece uma visão geral da arquitetura
Requisitos e especificações para cada incremento podem ser
desenvolvimentos
Usuários podem experimentar incrementos entregues enquanto outros
estão sendo desenvolvidos, portanto estas versões servem como protótipos
Pretende-se combinar algumas vantagens de prototipação, mas com um
Prototipação de Software
Prototipação no Processo de Software – Prototipação Evolucionária
Desenvolvimento Incremental Validate increment Build system increment Specify system increment Design system architecture Define system deliverables System
complete? Validatesystem incrementIntegrate Deliver final system YES NO Definir entregas do sistema Projetar arquitetura de sistema Especificar aumento de sistema Construir
aumento de sistema Validar aumento
Integrar aumento Validar sistema Entregar sistema final SIM NÃO Sistema completo
Prototipação de Software
Prototipação no Processo de Software – Prototipação Descartável
Usado para reduzir risco
O protótipo é desenvolvido a partir de uma especificação inicial, entregue para experimento e então descartado
O protótipo descartável não deveria ser considerado como um sistema final
Algumas características do sistema podem não ser implementadas Não existe especificação para manutenção a longo prazo
Prototipação de Software
Prototipação no Processo de Software – Prototipação Descartável
Outline requirements Develop prototype Evaluate prototype Specify system Develop software Validate system Delivered software system Reusable components Esboçar requisitos Desenvolver protótipo Avaliar protótipo Especificar sistema Validar Sistema Desenvolver o software Sistema de software entregue Componentes Reusáveis
Prototipação de Software
Prototipação no Processo de Software – Prototipação Descartável
Problemas
Desenvolvedores podem ser pressionados a entregar o protótipo
descartável como sistema final, isto não é recomendado pelos seguintes motivos:
Pode ser impossível ajustar o protótipo para atender os requisitos não funcionais
O protótipo é inevitavelmente não documentado
A estrutura do sistema será degrada através das mudanças feitas durante o desenvolvimento
Prototipação de Software
Técnicas de Prototipação Rápidas
Várias técnicas podem ser usadas para o desenvolvimento rápido
Desenvolvimento com linguagens de alto nível Programação de banco de dados
Montagem de componentes e aplicações
Estas técnicas são normalmente usadas em conjunto
Programação visual é uma parte inerente de muitas ferramentas de desenvolvimento de protótipos
Prototipação de Software
Técnicas de Prototipação Rápidas – Linguagens Dinâmicas de Alto Nível Linguagens que incluem poderosas facilidades de gerenciamento de
dados
Necessitam de ferramentas que dêem forte suporte a execução de protótipos.
Algumas linguagens freqüentemente oferecem excelentes facilidades de desenvolvimento de interfaces com usuário
Algumas linguagens têm ambiente de suporte integrado, auxiliando no usado dos protótipos
Critérios para escolha das Linguagens Dinâmicas de Alto Nível
Qual é o domínio de negócio do problema? Que interação com usuário é necessária?
Que ambiente de suporte vem com a linguagem?
Prototipação de Software
Técnicas de Prototipação Rápidas – Linguagens de Programação de
Banco de Dados
Normalmente possuem as facilidades de consulta de banco de dados, geração de telas, relatórios e planilhas
Podem ser integradas com ferramentas CASE
A linguagem e o ambiente são normalmente conhecidos com uma linguagem de 4 geração (4GL)
Prototipação de Software
Técnicas de Prototipação Rápidas – Linguagens de Programação de
Banco de Dados
DB programming language Interface generator Spreadsheet Report generatorDatabase management system
Fourth-generation language
Gerador
de interface de cálculoPlanilha
Gerador de relatório BD de
linguagem de programação
Sistema de gerenciamento de dados
Prototipação de Software
Técnicas de Prototipação Rápidas – Montagem de Componentes e
Aplicações
Protótipos podem ser criados rapidamente a partir de componentes reusáveis mais algum mecanismo para juntar estes componentes
O mecanismo de composição devem incluir facilidade de controle e um mecanismo para a comunicação de componentes
A especificação do sistema deve considerar a disponibilidade e as funcionalidades dos componentes existentes
Prototipação de Software
Técnicas de Prototipação Rápidas – Montagem de Componentes e
Aplicações
2 Níveis de prototipação que empregam reuso
Desenvolvimento em nível de Aplicação
Sistemas inteiros são integrados com os protótipos, de forma que suas funcionalidades podem ser compartilhadas
Por exemplo, se a preparação de um texto é necessária, um processador de texto padrão pode ser usado
Desenvolvimento em nível de Componente
Componentes individuais são integrados dentro de um framework padrão para implementar sistemas
Framework pode ser uma linguagem de script ou uma framework de integração tal como CORBA
Prototipação de Software
Técnicas de Prototipação Rápidas – Montagem de Componentes e
Aplicações
Component
composition
framework
Executable
prototype
Reusable
software
components
Control and
integration code
Componentes de software reutilizáveis Framework de composição de componentes Protótipo executável Código de controle e integraçãoPrototipação de Software
Técnicas de Prototipação Rápidas – Montagem de Componentes e
Aplicações
Documentos Compostos
Para algumas aplicações, um protótipo pode ser criado pelo desenvolvimento
de um documento composto
Podem ser vistos como um contêiner de vários objetos diferentes: tabelas,
diagramas e formulários
Cada elemento tem uma aplicação associada que é acionada quando o
elemento é selecionado
Prototipação de Software
Técnicas de Prototipação Rápidas – Montagem de Componentes e
Aplicações
Documentos Compostos – Vinculação de aplicativos
C
om
pound docum
ent
W
ord processor
Spreadsheet
A
udio player
T
ext 1
T
ext 2
T
ext 3
T
ext 4
T
ext 5
T
able 1
T
able 2
Sound 1
Sound 2
Texto 1 Texto 2 Texto 3
Texto 4 Texto 5 Tabela 1 Tabela 2 Som 1 Som 2 Processador de texto Planilha de cálculo Reprodutor de áudio Documento composto
Prototipação de Software
Técnicas de Prototipação Rápidas – Montagem de Componentes e
Aplicações
Programação Visual
Linguagem de script tais como Visual Basic suportam a programação
visual,onde o protótipo pe desenvolvimento pela criação de uma interface de usuário a partir de itens padrões e de componentes associados aos itens
Uma vasta biblioteca de componentes existe para suportar este tipo de
desenvolvimento e também pode ser customizada para atender requisitos de específicos da aplicação
Problemas com a Programação Visual
Dificuldade de coordenar o desenvolvimento baseado em times
Não há uma arquitetura de sistema explícita (Por exemplo: Oracle Forms) Dependências complexas entre as partes do programa podem causar
Prototipação de Software
Técnicas de Prototipação Rápidas – Montagem de Componentes e
Aplicações
Programação Visual com Reuso
File Edit Views Layout Options Help General Index Hypertext display component Date component Range checking script Tree display 12th January 2000 3.876 Draw canvas component User prompt component + script
Prototipação de Software
Prototipação de Interface com o Usuário
É impossível especificar o padrão visual de uma interface de usuário de modo efetivo
O desenvolvimento de uma interface com o usuário consome uma parte grande dos custos do desenvolvimento de software
Geradores de interface visual podem ser usados para desenhar a
interface e simular suas funcionalidades com componentes associados às entidades de interface
Prototipação de Software
Bibliografia
Sommerville, Ian. Engenharia de Software, 6a. edição. Addison Wesley, 2004