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 o usuário é 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 bando 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


  1. Pencil Project
  2. Visual FoxPro
  3. Gliffy
  4. Jumpchart
  5. Mockflow
  6. Axure
  7. IBM VisualAge Generator
  8. iPlotz
  9. Mocklinkr
  10. Mindman Personal
  11. Lumzy
  12. Mockingbird
  13. Visual Studio .NET
  14. FluidIA
  15. Balsamiq Mockups
  16. Eclipse (IDE)
  17. FreeMind
  18. Microsoft Visio


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 .