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
- Pencil Project: Lucas Narciso
- Visual FoxPro: Fabricio
- Gliffy: Natalia
- Jumpchart: Natalie
- Mockflow: Angelica
- Axure: Marcus
- IBM VisualAge Generator: Gabriel
- iPlotz: Rodrigo
- Mocklinkr: Rafel
- Mindman Personal: Gabriel Avila
- Lumzy: Bruno
- Mockingbird: Lucas Prado
- Visual Studio .NET: Matheus
- FluidIA: Maicon
- Balsamiq Mockups: Otavio
- Eclipse (IDE): Joao
- FreeMind: Michelly
- Microsoft Visio: Willian
Carlos
Diogo
Vinicius
Rafael
Joáo Paulo
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 .


