INSTITUTO DE BIOCINCIAS, LETRAS E CINCIAS EXATAS DEPARTAMENTO DE CINCIAS DE COMPUTAO E ESTATSTICA Prototipao de Software Engenharia de Software 2o. Semestre de 2005 Slide 2 Prototipao de Software Desenvolvimento rpido de software para validar os requisitos. Slide 3 Objetivos Compreender o papel da prototipao em diferentes tipos de projetos de desenvolvimento. Discutir a prototipao evolucionria e a prototipao descartvel. Introduzir trs diferentes tcnicas de prototipao. Explicar a tcnica de prototipao no desenvolvimento de interface com o usurio Slide 4 Tpicos abordados Prototipao no processo de software Tcnicas de prototipao rpida Prototipao de interface com o usurio Slide 5 Prototipao de sistema Prototipao o desenvolvimento rpido de um sistema. No passado, prottipo tinha a finalidade exclusiva de avaliar os requisitos, assim o desenvolvimento tradicional era necessrio. Atualmente , os limites entre a prototipao e o desenvolvimento normal do sistema, muitas vezes, so indefinidos e muitos sistemas so desenvolvidos usando uma abordagem evolucionria. Slide 6 Usos de prottipos de sistemas O principal uso ajudar os clientes e desenvolvedores entender os requisitos para o sistema. Levantamento de requisitos. Usurios podem experimentar o prottipo para ver como o sistema pode apoiar o seu trabalho Validao de requisitos. O prottipo pode revelar erros e omisses nos requisitos. A prototipao pode ser considerada como uma atividade de reduo de riscos que reduz os riscos nos requisitos. Slide 7 Benefcios da prototipao Equvocos entre os usurios de software e desenvolvedores so expostos. Servios esquecidos podem ser detectados e servios confusos podem ser identificados. Um sistema funcionando est disponvel nos primeiros estgios no processo de desenvolvimento. O prottipo pode servir como uma base para derivar uma especificao do sistema com qualidade de produo. O prottipo pode ser usado para treinamento do usurio e teste de sistema. Slide 8 Processo de desenvolvimento de prottipo Estabelecer objetivos do prottipo Estabelecer objetivos do prottipo Definir a funcionalidade do prottipo Definir a funcionalidade do prottipo Desenvolver o prottipo Desenvolver o prottipo Avaliar o prottipo Avaliar o prottipo Definio geral Definio geral Plano de prototipao Plano de prototipao Prottipo executvel Prottipo executvel Relatrio de avaliao Relatrio de avaliao Slide 9 Benefcios da prototipao Melhoria na facilidade de uso do sistema; Maior aproximao do sistema com as necessidades dos usurios; Melhoria da qualidade do projeto; Melhoria na facilidade de manuteno, e Reduo no esforo de desenvolvimento Slide 10 Prototipao no processo de software Prototipao evolucionria Uma abordagem para o desenvolvimento do sistema onde um prottipo inicial produzido e refinado atravs de vrios estgios at atingir o sistema final. Prototipao descartvel Um prottipo o qual usualmente uma implementao prtica do sistema produzida para ajudar a levantar os problemas com os requisitos e depois descartado. O sistema ento desenvolvido usando algum outro processo de desenvolvimento. Slide 11 Objetivos da prototipao O objetivo da prototipao evolucionria fornecer aos usurios finais um sistema funcinando. O desenvolvimento comea com aqueles requisitos que so melhores compreendidos. O objetivo da prototipao descartvel validar ou derivar os requisitos do sistema. O processo de prototipao comea com aqueles requisitos que no so bem compreendidos. Slide 12 Abordagens de prototipao Prototipao evolucionria Prototipao evolucionria Sistema entregue Sistema entregue Esboar requisitos Esboar requisitos Prototipao descartvel Prototipao descartvel Prottipo executvel + especificao do sistema Prottipo executvel + especificao do sistema Slide 13 Prototipao evolucionria Deve ser usada para sistemas onde a especificao no pode ser desenvolvida priori, como por exemplo, os sistema de IA e os sistemas de interface com o usurio Baseada em tcnicas que permitem interaes rpidas para o desenvolvimento de aplicaes. Verificao impossvel uma vez que no exise especificao. A validao significa demonstrar a adequao do sistema. Slide 14 Prototipao evolucionria Desenvolver especificao abstrata Desenvolver especificao abstrata Construir sistema prottipo Construir sistema prottipo Utilizar sistema prottipo Utilizar sistema prottipo Entregar sistema Entregar sistema Sisema adequado NO SIM Slide 15 Vantagens da prototipao evolucionria Rpido fornecimento do sistema Em alguns casos, o rpido fornecimento e a facilidade de uso so mais importantes do que os detalhes de funcionalidade ou a facilidade de manuteno de software a longo prazo. Compromisso do usurio com o sistema O envolvimento do usurio com o sistema significa maior possibilidade de atender aos seus requisitos e um maior empenho para que o sistema funcione de acordo. Slide 16 Prototipao Evolucionria O processo de especificao, projeto e implementao so intercalados. O sistema desenvolvido em uma srie de estgios que so entregues ao cliente. Tcnicas para o desenvolvimento rpido de sistemas, tais como ferramentas CASE e linguagens de 4a. Gerao, so utilizadas. As interfaces com o usurio do sistema so usualmente desenvolvidas utilizando-se um sistema de desenvolvimento interativo (Lote de ferramentas GUI) Slide 17 Problemas com prototipao evolucionria Problemas de gerenciamento Processos de gerenciamento existentes assumem o modelo de desenvolvimento cascata. Habilidades especialistas so necessrias e podem no estar disponvel na equipe de desenvolvimento Problemas de manuteno A continuidade de mudanas tende a corromper a estrutura do prottipo do sistema, assim a manuteno a longo prazo pode ser cara. Problemas contratuais Os contratos so, geralmente, estabelecidos baseados em uma especificao completa do software. Slide 18 Prottipos como especificaes Algumas partes dos requisitos (por ex. funes crticas com relao segurana) so difceis de aparecerem em prottipos, assim acabam no aparecendo na especificao. Uma implementao no tem valor legal de contrato. Requisitos no funcionais no podem ser testados adequadamente em um prottipo do sistema. Slide 19 Desenvolvimento incremental O sistema desenvolvido e liberado em incrementos aps estabelecer uma arquitetura global. Requisitos e especificaes para cada incremento podem ser desenvolvidos. Usurios podem avaliar os incrementos liberados enquanto outros esto sendo desenvolvidos. Portanto, esse serve como uma forma de sistema prottipo. O desenvolvimento incremental combina as vantagens da prototipao evolucionria com um processo de desenvolvimento mais fcil de ser gerenciado e uma melhor estruturao do sistema. Slide 20 Um processo de desenvolvimento incremental Definir entregas de sistema Definir entregas de sistema Projetar arquitetura de sistema Projetar arquitetura de sistema Sistema completo Entregar sistema final Entregar sistema final Especificar aumento do sistema Especificar aumento do sistema Construir aumento do sistema Construir aumento do sistema Validar aumento Validar aumento NO Integrar aumento Integrar aumento Validar sistema Validar sistema SIM Slide 21 Prototipao descartvel Usada para reduzir os riscos com os requisitos. O prottipo desenvolvido de uma especificao inicial, entregue para avaliao e ento descartado. O prottipo descartvel NO deve ser considerado como um sistema final. Caractersticas importantes podem ter sido excludas do prottipo. No existe especificao para manuteno futura O sistema ser mal estruturado e difcil de manter. Slide 22 Processo de software com prototipao descartvel Esboar requisitos Esboar requisitos Desenvolver software Desenvolver software Desenvolver prottipo Desenvolver prottipo Avaliar prottipo Avaliar prottipo Especificar sistema Especificar sistema Validar sistema Validar sistema Sistema de software entregue Sistema de software entregue Componentes reutilizveis Slide 23 Prottipos descartveis liberveis Desenvolvedores podem ser pressionados a entregar um prottipo descartvel como um produto final Isso no recomendado Pode ser impossvel ajustar o prottipo para atender os requisitos no funcionais. O prottipo inevitavelmente no documentado e isso ruim para a manuteno a longo prazo. A s mudanas feitas durante o desenvolvimento do prottipo provavelmente tero degradado a estrutura do sistema. Os padres de qualidade organizacional so, normalmente, deixados de lado no desenvolvimento do prottipo. Slide 24 Tcnicas de prototipao rpida Vrias tcnicas podem ser usadas para o desenvolvimento de prottipos Desenvolvimento com linguagem dinmica de alto nvel Programao de banco de dados Montagem de componentes e aplicaes Essas tcnicas no so exclusivas - so muitas vezes utilizadas em conjunto. Programao visual uma parte inerente da maioria dos sistemas de desenvolvimento de prottipos. Slide 25 Linguagens dinmicas de alto- nvel So linguagens que incluem poderosos recursos de gerenciamento de dados em run-time. Necessitam de um grande sistema de suporte de run-time. Assim, no eram largamente usadas para o desenvolvimento de grandes sistemas. Algumas linguagens oferecem excelentes facilidades de desenvolvimento de interface com o usurio Algumas linguagens tem um ambiente de suporte integrado cujas faciliades podem ser usadas no prottipo. Slide 26 Linguagens de alto nvel para prototipao Linguagem Tipo Domnio de aplicao Smaltalk Orientada a objetos Sistemas interativos Java Orientada a objetos Sistemas interativos Prolog Lgica Processamento simblico LISP Com base em listas Processamento simblico Slide 27 Escolha da linguagem de prototipao Qual o domnio de aplicao do problema? Que tipo de interao com o usurio necessrio? Qual ambiente de suporte vem com a linguagem? Diferentes partes do sistema podem ser programados em diferentes linguagens. Contudo, pode haver problemas com a comunicao entre as linguagens. Slide 28 Linguagens de programao de banco de dados Linguagens especficas ao domnio de sistemas de negcios que envolve a manipulao 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 relatrios e uma planilha de clculos. A linguagem + ambiente conhecido como uma linguagem de quarta gerao (4GL) So adequadas para sistemas de negcios de tamanho pequeno ou mdio. Slide 29 Componentes de linguagens de quarta gerao Gerador de interface Gerador de interface Planilha de clculo Planilha de clculo Linguagem de programao de BD Linguagem de programao de BD Sistema de gerenciamento de dados Sistema de gerenciamento de dados Gerador de relatrio Gerador de relatrio Linguagem de quarta gerao Slide 30 Montagem de componentes e aplicaes Prottipos podem ser construdos rapidamente atravs de um conjunto de componentes reutilizveis e um mecanismo para compor esses componentes. O mecanismo de composio deve incluir facilidades de controle e um mecanismo para comunicao de componentes. A prototipao com componentes reutilizveis envolve desenvolver uma especificao que leva em conta a disponibilidade e funcionalidade de componentes existentes. Slide 31 Prototipao com reuso Desenvolvimento a nvel de aplicaes Sistemas inteiros so integrados com o prottipo , de modo que sua funcionalidade pode ser compartilhada. Por exemplo, se a capacidade de edio de texto necessria, um sistema padro de edio de texto pode ser integrado. Desenvolvimento a nvel de componentes Componentes individuais so integrados dentro de um framework-padro a fim de implementar o sistema Framework pode ser uma linguagem de scripting (Visual Basic ou Perl) ou um framework de integrao (CORBA ou JavaBeans) Slide 32 Composio de componentes reutilizveis Componentes de software reutilizveis Componentes de software reutilizveis Framework de composio de componentes Framework de composio de componentes Prottipo Executvel Prottipo Executvel Cdigo de controle e integrao Cdigo de controle e integrao Slide 33 Documentos compostos Para algumas aplicaes, um prottipo pode ser criado por desenvolver um documento composto. Isso um documento com elementos ativos (tal como uma planilha de clculo) que permite funcionalidade ao usurio. Cada elemento ativo est associado a um aplicativo, que chamado quando aquele elemento selecionado. O prprio documento o integrador para diferentes aplicaes. Slide 34 Vinculao de aplicativos. Compound document Word processor Spreadsheet Audio player Text 1 Text 2 Text 3 Text 4 Text 5 Table 1 Table 2 Sound 1 Sound 2 Planilha de clculo Processador de texto Reprodutor de udio Slide 35 Programao Visual com Reuso Linguagens de scripting como o visual basic apoiam a programao visual, onde o prottipo desenvolvido atravs da criao de interface com o usurio a partir de itens padres (telas, campos, botes e menus) e a associao de componentes esses itens. Uma grande biblioteca de componentes existe para suportar esse tipo de desenvolvimento. Slide 36 Programao visual com reuso File Edit Views Layout Options Help General Index Hypertext display component Date component Range checking script Tree display component 12th January 2000 3.876 Draw canvas component User prompt component + script Slide 37 Problemas com o desenvolvimento visual Dificuldade de coordenar desenvolvimento em equipe. No existe uma arquitetura explcita do sistema. Dependncias complexas entre partes do programa podem causar problemas com a manuteno do sistema. Slide 38 Prototipao de interface com o usurio Os projetistas no devem opinar a respeito de uma interface com o usurio que seja aceitvel. A prototipao essencial nesse caso. O desenvolvimento de IU consome uma parte substancial dos custos de desenvolvimento de aplicaes. Os geradores de interface podem ser utilizados para projetar a interface e sua funcionalidade pode ser obtida atravs de componentes associados com as entidades da interface. (menus, campos, botes, etc.) Interfaces web podem ser prototipadas atravs do uso de um editor de pginas web. Slide 39 Pontos-chave Um prottipo de sistema pode ser usado para dar aos usurios finais uma impresso concreta das capacidades desse sistema. A prototipao est se tornando cada vez mais comum para o desenvolvimento de sistema onde o desenvolvimento rpido essencial. Prottipos descartveis so usados para a compreenso dos requisitos do sistema. Na prototipao evolucionria, o sistema desenvolvido pela evoluo de uma verso inicial em uma verso final do sistema. Slide 40 Pontos-chave O desenvolvimento rpido importante na prototipao de sistemas. Isso pode levar excluso de algumas funcionalidades do sistema ou na diminuio dos requisitos no funcionais. Entre as tcnicas de prototipao esto o uso de linguagens de nvel muito elevado, a programao de bando de dados e a construo de prottipos a partir de componentes reutilizveis. A prototipao essencial para o desenvolvimento de interfaces com o usurio, as quais so difceis de serem especificadas usando um modelo esttico. Os usurios deveriam estar envolvidos na avaliao e na evoluo do prottipo. Slide 41