Design para Inclusão na Web: o Estado da Arte
Princípio 4: Robusto – O conteúdo deve ser “robusto” o suficiente para ser
3.2 Engenharia de Software para Web
Há uma demanda crescente por sistemas computacionais de qualidade e de baixo custo para apoiar atividades diversificadas do cotidiano que promovam a construção de novos conhecimentos, a satisfação e o bem-estar, a produtividade e a eficiência, de maneira segura, flexível e cada vez mais ubíqua. Como conseqüência tem sido apresentada de forma recorrente na literatura a necessidade de teorias, processos, métodos e ferramentas que
apóiem a construção desses sistemas de maneira sistemática, controlada e eficiente (PRESSMAN, 2005; ACM e IEEE-CS, 2004; SOMMERVILLE, 2003; KAPPEL et al, 2006).
Uma das preocupações da Engenharia de Software é abordar essa demanda e, a despeito das diferentes definições atribuídas a ela (Tabela 3.3), sua evolução deixa bastante clara que a produção de software vai além da codificação de programas, mas também envolve a preocupação com qualidade, cronograma e economia, o conhecimento e a aplicação de princípios, e disciplina (ACM e IEEE-CS, 2004).
Tabela 3.3. Algumas definições para a disciplina de Engenharia de Software, traduzidas de ACM e IEEE-CS (2004, p. 6)
“O estabelecimento e uso de princípios (métodos) consistentes com o objetivo de se obter economicamente software que é confiável e funciona em máquinas reais.” (BAUER, 1972) “Engenharia de software é uma forma de engenharia que aplica princípios da ciência da computação e da matemática para alcançar soluções custo-efetivas para problemas de
software.” (BAGERT et al, 1999)
“A aplicação de uma abordagem sistemática, disciplinada, quantificável para o desenvolvimento, operação e manutenção de software.” (IEEE, 1990)
Segundo ACM e IEEE-CS (2004, p. 6), “There are an important emphases on
analysis and evaluation, specification, design, and evolution of software”. Ainda, embora a
Engenharia de Software se ampare em disciplinas como computação e matemática, é uma área bastante interdisciplinar, que se preocupa não somente com os aspectos técnicos envolvidos na produção de software, mas também com questões essenciais como gerenciamento e qualidade, novidade e criatividade, padrões, habilidades individuais, trabalho em equipe e prática profissional. Na área de Engenharia, em particular, a atividade de projeto se refere à definição de um novo artefato pela busca de soluções técnicas para questões práticas específicas, levando em conta considerações econômicas, legais e sociais. Um desafio central da Engenharia de Software é lidar com a atividade de projeto em múltiplos níveis de abstração (ACM e IEEE-CS, 2004, p. 8).
Nesta linha, Sommerville (2003, p. 5) define Engenharia de Software como “uma disciplina que se ocupa de todos os aspectos da produção de software, desde os estágios iniciais de especificação do sistema até a manutenção desse sistema, depois que ele entrou em operação”. Segundo esse mesmo autor, a expressão engenharia remete ao papel dos engenheiros que fazem os produtos funcionarem, pela aplicação seletiva de teorias, métodos e ferramentas em situações apropriadas, procurando soluções para os problemas mesmo quando não existem teorias aplicáveis e métodos de apoio. Ainda, para Sommerville (2003, p. 6) “os engenheiros também reconhecem que precisam trabalhar de acordo com as restrições organizacionais e financeiras e, assim, procuram soluções que estejam dentro dessas restrições”.
Segundo Kappel et al (2006), sob o ponto de vista de Engenharia de Software, as aplicações para a web fazem parte de um novo domínio de aplicações. Definem aplicação
web como um sistema de software baseado em tecnologias e padrões do World Wide Web Consortium, que oferece recursos específicos da web como conteúdo e serviços por
intermédio de uma interface de usuário, o navegador web. Como um domínio de aplicações, é preciso entender o problema que o define, as abordagens comumente utilizadas, incluindo (caso existam) componentes padrões usados na produção de software para resolver problemas no domínio em questão (ACM e IEEE-CS, 2004, p. 9). A prática atual no desenvolvimento de aplicações web, e a crescente complexidade e importância dessas aplicações para diversas áreas da sociedade, incluindo o comércio eletrônico, acentuaram a preocupação com o desenvolvimento de aplicações para essa mídia, que tenham compromisso de longo prazo com sua qualidade (DESHPANDE e HANSEN, 2001).
A Engenharia Web é apresentada, portanto, como uma nova disciplina (KAPPEL et
al, 2006; DESHPANDE e HANSEN, 2001), pois, embora guardem similaridades com as
aplicações convencionais, as aplicações para a web exigem adaptações das várias abordagens da Engenharia de Software ou mesmo o desenvolvimento de abordagens completamente novas (DESHPANDE et al, 1999; MURUGESAN et al, 1999), o que tem sido reforçado pelo amplo número de publicações e currículos. Assim, segundo Kappel et
al (2006, p. 3), (1) a Engenharia Web é a aplicação de abordagens (conceitos, métodos,
técnicas, ferramentas) sistemáticas e quantificáveis para análise de requisitos, projeto, implementação, teste, operação e manutenção custo-efetiva de aplicações web de alta qualidade; (2) a Engenharia Web é também uma disciplina científica preocupada com o estudo dessas abordagens.
Ao contrário da Engenharia de Software, a Engenharia Web ainda não tem seus próprios modelos de processo para desenvolvimento (CARVALHO e CHIOSSI, 2001; PRESSMAN, 2005; SOMMERVILLE, 2003). Como conseqüência, é bastante comum a adaptação dos modelos de processo existentes para o desenvolvimento convencional de
software (ENGELS et al, 2006). Para propor soluções voltadas ao desenvolvimento de
sistemas web, pesquisas procuram entender as características que diferenciam esses sistemas dos sistemas de software convencionais.
Lowe e Henderson-Sellers (2001), separam essas diferenças em técnicas e organizacionais. Entre as diferenças técnicas estão:
• A relação entre o modelo de negócio de uma organização e a estrutura técnica da web tende a ser muito mais forte e mais sofisticada do que nos sistemas de
software convencionais;
• O uso de arquiteturas abertas e modulares geralmente é mais pronunciado em sistemas web – freqüentemente construídas a partir de componentes existentes, que são adaptados e integrados;
• As tecnologias web mudam com freqüência, exigindo soluções flexíveis, compatíveis com tecnologias emergentes, trazendo a necessidade de formatos de dados reusáveis como a XML, além de ampliar os riscos do projeto pelo pouco domínio dos desenvolvedores sobre as novas tecnologias;
• O conteúdo tende a assumir um papel significativo na web, independentemente da sofisticação da funcionalidade, exigindo design efetivo da informação e gerenciamento de conteúdo adequado;
• Há uma ênfase crescente na interface do usuário web e na funcionalidade associada, devido à facilidade de os usuários procurarem por alternativas que atendam mais satisfatoriamente às suas necessidades;
• A importância de atributos de qualidade como usabilidade, desempenho e compatibilidade são mais evidentes na web, uma vez que falhas nas aplicações têm mais visibilidade.
Entre as diferenças organizacionais, Lowe e Henderson-Sellers (2001) destacam ainda:
• A incerteza do cliente, que freqüentemente tem dificuldade em articular suas necessidades em relação a web e entender se uma determinada proposta irá satisfazer suas necessidades, aumentando a importância de abordagens incrementais e baseadas em prototipação;
• As mudanças nos requisitos, influenciadas pela evolução do entendimento dos clientes sobre as possibilidades técnicas da web e sobre o impacto potencial em seus negócios;
• Tempo reduzido para a primeira entrega, em parte como conseqüência da evolução constante da tecnologia web e urgência na adoção desses sistemas; • Alta competitividade, devido à percepção errônea de que desenvolver sistemas
web é uma atividade simples, que pode ser realizada por qualquer um que tenha
uma ferramenta de autoria simples;
• Evolução e manutenção cuidadosa, pois, diferentemente das aplicações convencionais, há um processo contínuo de atualização, mudanças editoriais e ajustes na interface, entre outros.
A partir dessa caracterização das aplicações web, Lowe e Henderson-Sellers (2001) propõem um processo denominado Web OPEN, baseado em uma família de processos, definida em termos de um meta-modelo, denominado OPEN Process Framework, cujos elementos principais são: unidades de trabalho (ex. atividades e tarefas), produtos de trabalho e produtores. Especialmente no que se refere ao conteúdo da web, esses autores mencionam a necessidade de estratégias para personalização e gerenciamento de conteúdo,
visando garantir que este seja acessível e efetivamente mantido. A autoria de conteúdo é tratada como uma atividade que faz parte do processo de desenvolvimento, e que deve se apoiar no reuso de componentes (ex. modelos ou templates). Sobre o design da interface de usuário, explicitam a necessidade de integração com o conteúdo, com base no design criativo e no desenvolvimento técnico, e sugerem a abordagem do Design Centrado no Uso (CONSTANTINE e LOCKWOOD, 1999), que segundo os autores dá mais ênfase ao trabalho do usuário e em como o software irá apoiá-lo. A definição de padrões adequados é apresentada como uma forma de garantir a consistência tanto sob o ponto de vista da usabilidade quanto sob o ponto de vista do desenvolvimento, e é nesse momento que os autores mencionam a atenção considerável que tem sido dada a padrões de usabilidade, em particular, a padrões de acessibilidade da Iniciativa de Acessibilidade Web do W3C (2006b).
Kappel et al (2006, p. 5) categorizam as aplicações web, embora muitas delas se enquadrem em mais de uma categoria, em: centradas no conteúdo, interativas, transacionais, baseadas em workflow, orientadas a portais, colaborativas, web social, ubíquas e web semântica. Esses mesmos autores, baseados na ISO/IEC 9126-1, apresentam as características das aplicações web organizadas em três dimensões: produto, uso e desenvolvimento (Tabela 3.4). Cada uma das características atribuídas a essas dimensões influencia na qualidade das aplicações web, constituindo um ponto de partida para a definição de requisitos em Engenharia Web.
Tabela 3.4. Características das aplicações web (Continua)
Dimensões Características
Caráter do documento/uso de multimídia Conteúdo Aspectos de qualidade Não-linearidade Hipertexto Desorientação/Sobrecarga cognitiva Estética Produto Apresentação Auto-explicação Espontaneidade Contexto Social Multiculturalismo Qualidade de Serviços Contexto Técnico Entrega Multiplataforma Globalidade Uso Contexto Natural Disponibilidade
Tabela 3.4. Características das aplicações web (Conclusão) Multidisciplinaridade
Jovialidade Equipe
Comunidade de desenvolvimento Diferenças entre os navegadores Infra-estrutura Falta de maturidade Flexibilidade Processo Paralelismo Integração interna Desenvolvimento Integração Integração externa Mudança contínua Pressão competitiva Evolução
Curto tempo de vida
O design de sistemas de informação na web, portanto, exige uma série de conhecimentos e de habilidades, que precisam ser organizados de maneira que equipes de desenvolvimento possam criar suas próprias estratégias para abordá-los. Entretanto, nenhum processo é adequado para qualquer que seja o tipo de projeto, sendo necessária a definição de um processo que possa se adaptar dinamicamente a diferentes níveis de complexidade (ENGELS et al, 2006, p. 2000).
Engels et al (2006) investigam a adequação do Processo Unificado da Rational (RUP – Rational Unified Process) e da Programação Extrema (XP – Extreme
Programming) ao desenvolvimento de aplicações web, com base em 6 (seis) requisitos que
consideram os mais importantes para o desenvolvimento dessas aplicações: tratamento de ciclos curtos de desenvolvimento; tratamento das mudanças nos requisitos; entregas com prazos fixos e conteúdo flexível; desenvolvimento em paralelo de diferentes entregas; reuso e integração; adaptação ao nível de complexidade de uma aplicação web. Esses autores identificam problemas em ambas as abordagens para o desenvolvimento de sistemas web. Sugerem a necessidade de um meta-processo flexível, que permita transitar de uma abordagem mais empírica e “leve” como a do XP para uma abordagem de processo de produção mais rigorosa e “pesada” como a do RUP.
Em diferentes abordagens ao desenvolvimento de sistemas de web – “leves” ou “pesadas” – métodos e técnicas de design e de avaliação de interface de usuário têm sido integrados em seu repertório de práticas e orientações, dado o papel fundamental dessas interfaces à aceitação e ao uso efetivo do produto resultante. Além da prototipação, é cada vez mais presente a definição e o uso de recomendações e padrões de design de interface de usuário, a aplicação de técnicas de avaliação, a exemplo da avaliação heurística e dos testes de usabilidade, entre outras práticas da Engenharia de Usabilidade (HITZ et al, 2006; LOWE e HENDERSON-SELLERS, 2001; SAMPAIO, 2004).
Embora façam referência ao Design Centrado no Usuário (DECEMBER, 2006), ao Design Centrado no Uso (CONSTANTINE e LOCKWOOD, 2002; HAIRE et al, 2001; LOWE e HENDERSON-SELLERS, 2001) ou mesmo sugiram o envolvimento do usuário (LOWE e HENDERSON-SELLERS, 2001; HAIRE et al, 2001; ESCALONA et al, 2004) ou do cliente (SAMPAIO, 2004; SAMPAIO et al, 2004), essas propostas de modelos de processo para o desenvolvimento de sistemas web não oferecem orientação sobre como promover a acessibilidade e sobre como considerar a inclusão de pessoas com deficiência entre os usuários de aplicações web. Dentre as referências citadas, nenhuma faz menção às recomendações do World Wide Web Consortium para o design de páginas web-acessíveis (W3C, 1999; W3C, 2006a), sendo que apenas Lowe e Henderson-Sellers (2001) remetem à Iniciativa de Acessibilidade Web do W3C (W3C, 2006b).
Trabalhos apresentados em Harper et al (2005) abordam a “Engenharia do Design Acessível” relacionada a aplicações web: em aplicações clientes (ex. a evolução da navegação não visual, a necessidade de apoio à interatividade em meios alternativos ao visual, a apresentação do mesmo conteúdo de formas variadas); na engenharia de recomendações (ex. a interdependência entre as diferentes recomendações de acessibilidade, a necessidade de recomendações que sejam mais fáceis de serem testadas, a necessidade de tornar as recomendações de acessibilidade mais inteligíveis aos designers); na engenharia do design (ex. a necessidade de apoio à acessibilidade sem sacrificar o design visual, a necessidade de as tecnologias assistivas serem também independentes de plataforma, a crescente importância da semântica no design das aplicações interativas, a necessidade de se trabalhar estilos para apresentação auditiva); e na avaliação de acessibilidade (ex. a necessidade relatórios de avaliação de acessibilidade que explorem adequadamente a semântica dos resultados, de maneira que estes possam ser mais bem aproveitados).
Plessers et al (2005) apresentam uma “abordagem de Engenharia Web” para automatizar a criação de anotações semânticas sobre elementos estruturais de páginas web, visando melhorar o acesso à estrutura de um site web com leitores de telas. Elementos estruturais como cabeçalhos, rodapés e menus geralmente são apresentados de maneira visual e a anotação semântica é um mecanismo que pode ser explorado para apresentar esses elementos de maneira alternativa aos leitores de telas. A abordagem proposta por Plessers et al (2005) envolve integrar a anotação semântica ao método de design de sites
web denominado WSDM (Web Site Design Method).
Savids e Stephanidis (2004) propõem uma abordagem à Engenharia de Software para interações universalmente acessíveis. Em contraposição aos processos de desenvolvimento convencionais voltados ao “caso médio”, que consideram inapropriados para lidar com a diversidade de usuários e contextos de uso e para garantir acessibilidade e interação de alta qualidade, introduzem o conceito de interfaces de usuário unificadas como plataforma teórica para a interação universalmente acessível. Essa plataforma é
caracterizada pela capacidade de se auto-adaptar em tempo de execução, de acordo com os requisitos de um usuário específico e seu contexto de uso. Savidis e Stephanidis (2004) apresentam uma proposta ao processo de desenvolvimento para construção de interfaces unificadas com ênfase na estratégia de auto-adaptação em tempo de execução.
A abordagem à acessibilidade web em Engenharia de Software para a web é relativamente recente e tem sido tratada principalmente como aderência aos padrões do W3C (HITZ et al, 2006, p. 243; LOWE e HENDERSON-SELLERS, 2001). Entretanto, cada vez mais a acessibilidade tem sido percebida como um aspecto que precisa ser considerado desde o início do desenvolvimento de aplicações web e abordado de forma multidisciplinar, com a colaboração de diferentes partes interessadas, incluindo usuários (HARPER et al, 2005).