Prototipação


Prototipaçãode Software


  • Prototipação é o desenvolvimento rápido de um sistema
  • Protótipo tinha a finalidade exclusiva de avaliar os requisitos, assim o desenvolvimento tradicional era necessário
  • Atualmente , os limites entre a prototipação e o desenvolvimento normal do sistema, muitas vezes, são indefinidos e muitos sistemas são desenvolvidos usando uma abordagem evolucionária




  • A principal função é auxiliar os usuários e desenvolvedores a entender os requisitos do sistema
    • Levantamento de requisitos: Usuários podem experimentar o protótipo para ver como o sistema pode apoiar o seu trabalho
    • Validação de requisitos: O protótipo pode revelar erros e omissões nos requisitos


  • Benefícios da prototipação:
    • Equívocos entre os usuários de software e desenvolvedores são expostos
    • Serviços esquecidos podem ser detectados e serviços confusos podem ser identificados*
    • Um sistema funcionando está disponível nos primeiros estágios no processo de desenvolvimento
    • O protótipo pode servir como uma base para derivar uma especificação do sistema com qualidade de produção
    • O protótipo pode ser usado para treinamento do usuário e teste de sistema.


  • A prototipação pode ser considerada como uma atividade de redução de riscos que diminui a possibilidade de uma fraca implementação dos requisitos.




Prototipação evolucionária


  • Inicia um sistema relativamente simples, implantando os requisitos mais importantes e o sistema é ampliado e alterado a medida que novos requisitos são descobertos
  • Possui algumas vantagens como:
    • rápido fornecimento do sistema
    • compromisso do usuário com o sistema
  • E desvantagens também:
    • problemas de gerenciamento (Custos, Documentação)
    • problemas de manutenção (mudanças de tecnologias).


  • Deve ser usada para sistemas onde a especificação não pode ser desenvolvida à priori, como por exemplo, os sistema de IA e os sistemas de interface com o usuário
  • Baseada em técnicas que permitem interações rápidas para o desenvolvimento de aplicações.
  • Verificação é impossível uma vez que não existe especificação. A validação significa demonstrar a adequação do sistema.


  • O processo de especificação, projeto e implementação são intercalados
  • O sistema é desenvolvido em uma série de estágios que são entregues ao solicitante
  • Técnicas para o desenvolvimento rápido de sistemas, tais como ferramentas CASE e linguagens de 4a. Geração, são utilizadas
  • As interfaces com o usuário do sistema são usualmente desenvolvidas utilizando-se um sistema de desenvolvimento interativo (Lote de ferramentas GUI).


Prototipação descartável


  • Um protótipo o qual é usualmente uma implementação prática do sistema é produzida para ajudar a levantar os problemas com os requisitos e depois descartado. O sistema é então desenvolvido usando algum outro processo de desenvolvimento.


  • Essa abordagem amplia o processo de análise dos requisitos, com intenção de reduzir os custos no ciclo de vida do software, ou seja, esclarece os requisitos e fornece informações para que os riscos de processos sejam avaliados. Então, ela ajuda a desenvolver os requisitos do sistema.


  • Usada para reduzir os riscos com os requisitos
  • O protótipo é desenvolvido de uma especificação inicial, entregue para avaliação e então descartado
  • O protótipo descartável NÃO deve ser considerado como um sistema final:
    • Características importantes podem ter sido excluídas do protótipo
    • Não existe especificação para manutenção futura
    • O sistema será mal estruturado e difícil de manter.


  • Desenvolvedores podem ser pressionados a entregar um protótipo descartável como um produto final
  • Isso não é recomendado:
    • Pode ser impossível ajustar o protótipo para atender os requisitos não funcionais
    • O protótipo é inevitavelmente não documentado e isso é ruim para a manutenção a longo prazo
    • A s mudanças feitas durante o desenvolvimento do protótipo provavelmente terão degradado a estrutura do sistema
    • Os padrões de qualidade organizacional são, normalmente, deixados de lado no desenvolvimento do protótipo.


Técnicas de prototipação


  • Várias técnicas podem ser usadas para o desenvolvimento de protótipos:
    • Desenvolvimento com linguagem dinâmica de alto nível
    • Programação de banco de dados
    • Montagem de componentes e aplicações
  • Essas técnicas não são exclusivas, são muitas vezes utilizadas em conjunto
  • Programação visual é uma parte inerente da maioria dos sistemas de desenvolvimento de protótipos.


  • Linguagens dinâmicas de alto-nível:
    • São linguagens que incluem poderosos recursos de gerenciamento de dados em run-time
    • Necessitam de um grande sistema de suporte de run-time. Assim, não eram largamente usadas para o desenvolvimento de grandes sistemas
    • Algumas linguagens oferecem excelentes facilidades de desenvolvimento de interface com o usuário
    • Algumas linguagens tem um ambiente de suporte integrado cujas faciliades podem ser usadas no protótipo.


  • Exemplos:
    • Smaltalk, Java, Prolog, LISP, etc


  • Escolha da linguagem de prototipação:
    • Qual é o domínio de aplicação do problema?
    • Que tipo de interação com pessoas/dispositivos/sistemas é necessário?
    • Qual ambiente de suporte vem com a linguagem?
    • Diferentes partes do sistema podem ser programados em diferentes linguagens. Contudo, pode haver problemas com a comunicação entre as linguagens.


  • Linguagens de programação de banco de dados:
    • Linguagens específicas ao domínio de sistemas de negócios que envolve a manipulação de dados a partir de um banco de dados
    • Normalmente inclui uma linguagem de consulta de banco de dados, um gerador de interface, um gerador de relatórios e uma planilha de cálculos
    • A linguagem + ambiente é conhecido como uma linguagem de quarta geração (4GL)
    • São adequadas para sistemas de negócios de tamanho pequeno ou médio.

Interface com o usuário


  • Os projetistas não devem opinar a respeito de uma interface com o usuário que seja aceitável. A prototipação é essencial nesse caso
  • O desenvolvimento de IU consome uma parte substancial dos custos de desenvolvimento de aplicações
  • Os geradores de interface podem ser utilizados para projetar a interface e sua funcionalidade pode ser obtida através de componentes associados com as entidades da interface. (menus, campos, botões, etc.)
  • Interfaces web podem ser prototipadas através do uso de um editor de páginas web.


Pontos-chave


  • Um protótipo de sistema pode ser usado para dar aos usuários finais uma impressão concreta das capacidades desse sistema
  • A prototipação está se tornando cada vez mais comum para o desenvolvimento de sistema onde o desenvolvimento rápido é essencial
  • Protótipos descartáveis são usados para a compreensão dos requisitos do sistema
  • Na prototipação evolucionária, o sistema é desenvolvido pela evolução de uma versão inicial em uma versão final do sistema.
  • O desenvolvimento rápido é importante na prototipaçãode sistemas. Isso pode levar à exclusão de algumas funcionalidades do sistema ou na diminuição dos requisitos não funcionais
  • Entre as técnicas de prototipação estão o uso de linguagens de nível muito elevado, a programação de banco de dados e a construção de protótipos a partir de componentes reutilizáveis
  • A prototipação é essencial para o desenvolvimento de interfaces com o usuário, as quais são difíceis de serem especificadas usando um modelo estático. Os usuários deveriam estar envolvidos na avaliação e na evolução do protótipo.




Ferramentas



  • SketchFlow: Carlos
  • LightSwitch: Diogo
  • Framer: Vinicius
  • impresso: Rafael
  • Cacoo: Joáo Paulo
  • HotGloo: Felipe

Referências


  • PRESSMAN, Roger S. Engenharia de Software. São Paulo : Makron Books, 1995
  • SOMMERVILLE, Ian. Software Engineering, 4th ed. - Wokingham : Addison-Wesley, 1992
  • UNESP. Departamento de Ciências de Computação e Estatística. Prototipação de Software. 2005
  • SOARES, Bruno C. Requisitos para utilização de prototipagem evolutiva nos processos de desenvolvimento de software baseado na Web. UFMG. Belo Horizonte. Brasil .