Interface Com o Usuário Técnicas de Projeto Técnicas de Projeto de Software Técnicas de projeto O projeto de software tenta relacionar: A forma e função de um sistema de software à estrutura do processo que produz esse sistema. A tradição herdada de princípios da engenharia apresenta uma abordagem à problemática da crise de software da década de 60, que se baseia na crença de que um processo rigoroso de transformação de requisitos em sistemas é a chave para um projeto confiável. Interface com o Usuário 2 O processo de projeto O processo de projeto em Engenharia de Software (ES) parte de três pressupostos básicos: O resultado do projeto é um produto, seja ele um artefato, máquina ou sistema; O produto é derivado de especificações fornecidas pelo cliente; e Uma vez que o cliente e o projetista concordaram com as especificações, há pouca necessidade de contato entre eles até a entrega do produto.. Interface com o Usuário 3 Modelos de ciclo de vida Em um processo de desenvolvimento de software, o ponto de partida para a arquitetura de um sistema é a escolha de um modelo de ciclo de vida; Existem vários modelos em utilização atualmente Interface com o Usuário 4 Ciclo “codifica-remenda O ciclo de vida mais caótico. Partindo apenas de uma especificação (ou nem isso), os desenvolvedores começam imediatamente a codificar, remendando à medida que os erros vão sendo descobertos. Nenhum processo definido é seguido. Interface com o Usuário 5 Deficiências O modelo de ciclo “codifica-remenda” é provavelmente o ciclo de vida mais usado. Para alguns desenvolvedores, esse modelo é atraente porque não exige nenhuma sofisticação técnica ou gerencial. É um modelo de alto risco; Impossível de gerir ; e Não permite assumir compromissos confiáveis. Interface com o Usuário 6 Modelo em cascata Os principais subprocessos são executados numa seqüência estrita, o que permite demarca-las com pontos de controle bem definidos. Esses pontos de controle facilitam a gestão dos projetos. Esse processo é, em princípio, confiável e utilizável em projetos de qualquer escala. Interface com o Usuário 7 Deficiências do modelo Se interpretado literalmente, é um processo rígido e burocrático, em que as atividades de requisitos, análise e projeto têm de ser muito bem dominadas. Não são permitidos erros. O modelo de cascata puro é de baixa visibilidade para o cliente, que só recebe o resultado final do projeto. É impossível entender completamente e expressar os requisitos do usuário antes que algum projeto tenha sido feito. As possibilidades de mudanças no software a partir da etapa de manutenção são mínimas, em função dos comprometimentos e custos envolvidos ao longo da cadeia. Interface com o Usuário 8 Modelo sashimi É sempre melhor permitir que, em fases posteriores, haja revisão e alteração de resultados das fases anteriores. Por exemplo: Os modelos e documentos de especificação e projeto podem ser alterados durante a implementação, na medida em que problemas vão sendo descobertos. Interface com o Usuário 9 Vantagens e desvantagens do modelo Vantagem: Permite superposição entre fases e a realimentação de correções. Entretanto essa vantagem leva a uma desvantagem:: A superposição das fases torna difícil gerenciar projetos baseados nesse modelo de ciclo de vida. Interface com o Usuário 10 Modelo em espiral Esse modelo é completamente diferente dos anteriores. O produto é desenvolvido em uma série de iterações. Cada nova iteração corresponde a uma volta na espiral. Permite construir produtos em prazos curtos, com novas características e recursos que são agregados na medida em que a experiência descobre sua necessidade. As atividades de manutenção são usadas para identificar problemas; seus registros fornecem dados para definir os requisitos das próximas liberações. Interface com o Usuário 11 Desvantagens Embora ainda use os mesmos processos do modelo sashimi: Análise, Projeto; e Implementação E seja orientado ao produto, o modelo espiral já mostra que várias interações são necessárias e introduz a idéia de prototipagem para maior entendimento dos requisitos. Interface com o Usuário 12 Modelo de prototipagem evolutiva Corresponde a uma variação do modelo em espiral. Neste modelo, a espiral é usada não para desenvolver o produto completo, mas para construir uma série de versões provisórias que (os protótipos). Os protótipos cobrem cada vez mais requisitos, até que atinja o produto desejado. Os requisitos são definidos progressivamente. Alta flexibilidade. Alta visibilidade para os clientes. Interface com o Usuário 13 Desvantagens do modelo A prototipagem evolutiva também requer gestão sofisticada. O projeto deve ser de excelente qualidade, para que a estrutura do produto não se degenere ao longo dos protótipos. Interface com o Usuário 14 Modelo de entrega por estágios Difere do modelo de cascata, pela entrega ao cliente de liberações parciais do produto. Aumenta a visibilidade do projeto, o que geralmente é um fator muito importante no relacionamento com o cliente. Entretanto, apresenta os demais defeitos do modelo em cascata. Interface com o Usuário 15 Modelo de entrega evolutiva Corresponde a uma combinação dos modelos de cascata e de prototipagem evolutiva Permite que os usuários possam avaliar partes do produto e fornecer realimentação quanto às decisões tomadas. Facilita também o acompanhamento do progresso de cada projeto, tanto por parte de seus gerentes como dos clientes. Interface com o Usuário 16 Desvantagem do modelo A principal dificuldade continua a ser: A realização do projeto inicial: O projeto inicial deve produzir uma arquitetura de produto robusta; Esta arquitetura deve se manter íntegra ao longo dos ciclos de liberações parciais Interface com o Usuário 17 O que leva a um bom projeto de SW? Esta é uma pergunta freqüente na área de desenvolvimento de sistemas de software. No sentido de achar uma resposta, alguns pesquisadores entrevistaram projetistas de bons sistemas e observaram que suas respostas estavam longe da cultura da ES convencional. O processo de projeto em engenharia oferece pouca relação entre ações do projetista e as necessidades dos usuários, produzindo uma “cegueira” no domínio de ações na qual os usuários vivem e trabalham. Interface com o Usuário 18 O modelo baseado em pessoas Outros modelos de ciclo de vida foram desenvolvidos como forma de reação ao problema do projeto centrado no produto. Projeto Centrado no Humano (PCH), do inglês Human Centered Design - HCD, foi um modelo desenvolvido na década de 80, que se fundamenta no entendimento do domínio de trabalho no qual as pessoas estão engajadas e no qual interagem com computadores. Pressupostos do PCH: O resultado de um bom projeto é a satisfação do cliente; O processo de projeto envolve uma colaboração entre projetistas e clientes – o projeto evolui e se adapta aos seus interesses (que também mudam); Esse processo é que produz uma especificação como subproduto. Fundamentalmente o cliente e o projetista estão em constante comunicação durante todo o processo. Interface com o Usuário 19 Objetivos do PCH Produzir sistemas fáceis de aprender e usar; Seguros e efetivos em facilitar as atividades do usuário. Testes freqüentes com o usuário usando representações informais e prototipagem. O aspecto central do PCH é o envolvimento efetivo de usuários ao longo do processo de projeto, não apenas para “comentar” decisões do projetista. Interface com o Usuário 20 O modelo de Eason É um outro modelo de processo que se destaca, pelo fato do processo de projeto ser representado como um processo de natureza cíclica centrado em pessoas, trabalho e tecnologia sendo um processo ordenado. Interface com o Usuário 21 O modelo em estrela Esse modelo apresenta uma abordagem ao desenvolvimento como “ondas alternantes”. As atividades são similares às do modelo cascata, mas a avaliação é central e o início do processo pode acontecer em qualquer uma das demais atividades. Interface com o Usuário 22 O modelo de Shneiderman As abordagens da ES e da IHC possuem forças e fraquezas complementares; juntas formam uma nova disciplina: arquitetura de software. Alguns pesquisadores propuseram um modelo para projeto baseado metaforicamente em 3 “pilares”: 1. 2. 3. No início do processo o projetista deve gerar (ou requerer) um conjunto de especificações; O segundo pilar é composto de ferramentas de prototipagem; e O terceiro pilar é dedicado a testes de usabilidade – avaliação por especialistas e testes com usuários. Interface com o Usuário 23 O modelo de Shneiderman Interface com o Usuário 24 O modelo LUCID Pode-se dizer que parece já haver um consenso de que qualquer metodologia de DCH deve mesclar-se à metodologia da ES. O modelo LUCID (Logic User-Centered Interface Design), antigamente chamado QUE (Quality Usability Engineering) representa um esforço para esse consenso. O modelo é representado por uma seqüência de 6 fases: 1. Desenvolver o conceito do produto; 2. Realizar pesquisa e análise das necessidades – usando construção de cenários, projeto participativo, fluxo e seqüência de tarefas; 3. Criar conceitos e protótipos de telas – usando especificações, guias de estilo e metáforas para o projeto; 4. Projeto iterativo e refinamento – expandindo o protótipo para sistema completo; inclui a avaliação por especialistas e testes de usabilidade; 5. Implementação do software; e 6. Suporte. Interface com o Usuário 25 Escolha de um modelo Vários aspectos influenciam e devem ser considerados na escolha do modelo de projeto de IHC: O tipo do sistema a ser desenvolvido, em termos do tamanho, complexidade e propósito. Considerar também se está sendo tratado: 1. 2. O projeto de sistema completamente novo, nesse caso há o problema de selecionar entre um grande conjunto de opções e diferentes implicações no projeto. Ou de re-projeto de sistema já existente, aqui a liberdade do projetista é severamente restringida por decisões anteriores de projeto original, linha do produto etc. Considerar, ainda as restrições inerentes ao sistema, suas condições de contorno, sistemas críticos em relação à segurança, por exemplo. Interface com o Usuário 26 O que leva a um bom projeto? Das respostas de uma entrevista feita com projetistas bem sucedidos à questão de “o que leva a um bom projeto”, foram sintetizadas as seguintes sugestões: 1. 2. 3. 4. 5. Escolha um domínio no qual muitas pessoas estão envolvidas; Estude a natureza das ações dessas pessoas naquele domínio, especialmente em ações repetitivas; o que eles reclamam mais? Que ações gostariam de realizar? Defina software que imite padrões de ação incluindo funções que não poderiam ser feitas manualmente; Crie protótipos o mais cedo possível e observe como as pessoas reagem, o que “quebra” a experiência delas; e Mantenha comunicação com eles. Interface com o Usuário 27