Posts Tagged Engenharia de Software para a Web

Engenharia de Software para a Web

Senhores segue uma matéria que estudei hoje no meu MBA achei interessante onde informa as principais características da Engenharia de Sofware para Web , É parte do material do meu tutor CARLOS ALBERTO VALENTE ANDRADE que é Doutor em Eng. da Cumputação

Sistemas e aplicações baseados na Web, também chamados de WebApps, englobam desde uma simples página Web com recursos de interação com o usuário, até um abrangente site fornecedor de serviços completos para toda uma comunidade específica de internautas.

Atualmente as WebApps evoluíram tanto com ferramentas computacionais sofisticas que não fornecem somente funções isoladas para o usuário final, mas também são integradas com banco de dados coorporativos e aplicações de negócio (Pressman, 2006).

As aplicações na Internet, em sua grande maioria, possuem os seguintes atributos:

CONCENTRAÇÃO em REDES:

Necessariamente uma WebApp reside numa rede para atender uma comunidade diversificada de usuários. Existe a possibilidade dessa aplicação rodar tanto na própria Internet, que é o mais comum, até numa Intranet e nas Extranets. No caso da Intranet essas aplicações facilitam o processo de integração e comunicação dentro das organizações, e no caso da Extranet para aprimorar o relacionamento com os seus parceiros (fornecedores, clientes, distribuidores, etc.).

CONCORRÊNCIA:

Qualquer WebApp que tenha muitos usuários terá o problema de ser acessada simultaneamente ao mesmo tempo. Inclusive com a possibilidade de ataques do tipo denial-of-service (DoS) por hackers, com o intuito de impedir que um usuário legítimo utilize um determinado serviço.

CARGA IMPREVISÍVEL:

Embora seja bastante difícil, em certas aplicações, de dimensionar a quantidade de usuários que acessarão os serviços, existe a necessidade de controlar constantemente a carga dos servidores. Se a aplicação não for bem dimensionada e proporcional à demanda dos usuários, pode ocorrer inclusive travamento do servidor. Novamente um ataque por hackers pode camuflar todas as estatísticas de acesso.

DESEMPENHO:

O tempo de resposta da aplicação Web tem que ser muito bem avaliada. Se os usuários são clientes de um serviço que facilmente encontrará em outro site, ocorrerá uma grande evasão se os tempos de resposta forem muito longos e decorrerão reclamações em quantidade.

DISPONIBILIDADE:

A grande maioria dos provedores trabalha com a metodologia 6 sigma, tentando atingir a disponibilidade de 4 dígitos depois da vírgula, pois dificilmente chegaremos a 100% de disponibilidade. Veja na tabela a seguir que cada vez que avançamos numa casa decimal, o impacto das horas fora do ar (“off-line”), em um ano, decresce significativamente.

O uso da Internet está tão disseminado que o sonho dos usuários é a base de “24 / 7 / 365” (24 horas por dia, 7 dias na semana, 365 dias no ano !!).

ORIENTADA a DADOS:

Embora a função principal de muitas WebApps sejam de usar os recursos de hipermídia (texto, gráficos, áudio, vídeo) ao usuário final, atualmente é muito comum elas acessarem grandes Bancos de Dados. Um exemplo típico é o e-commerce e as aplicações financeiras.

SENSÍVEL ao CONTEÚDO:

Um bom exemplo desse aspecto é o próprio Google. Se as várias ferramentas desse mecanismo de busca não fossem tão significativas em termo de conteúdo para os usuários, essa empresa não teria a projeção que tem hoje.

EVOLUÇÃO CONTINUADA:

Uma das premissas da atual Web 2.0 é o “beta teste eterno”, ou seja, a primeira versão do aplicativo é liberada aos usuários e mesmo assim continuará recebendo melhorias constantes ao longo do projeto.  As aplicações Web evoluem continuamente.

IMEDIATISMO:

É freqüente que as aplicações da Internet tenham que estar disponibilizadas para os usuários em questões de semanas ou mesmo em dias. Portanto os engenheiros Web precisam usar métodos de planejamento, análise, projeto, implementação e teste especiais conforme as exigências do desenvolvimento de WebApp.

SEGURANÇA:

A fim de proteger conteúdo reservado e fornecer modos seguros de transmissão de dados, fortes medidas de segurança precisam ser implementadas em toda a infra-estrutura que apóia uma WebApp e na aplicação propriamente dita. A nossa unidade intitulada “Engenharia de Proteção” trata desse assunto com maiores detalhes.

ESTÉTICA:

Interessante como esse atributo é especial para a Web. Existem aplicações que com seu aspecto específico atraem grande número de usuários. Podemos citar novamente o mecanismo de busca do Google como exemplo. Através de sua interface minimalista essa aplicação ganhou praticamente todos os internautas. Por outro lado, a Amazon impressiona pela riqueza de detalhes que fornece aos seus usuários.

A engenharia  de  software  para  WebApps  pode ser definida segundo Graef e Gaedke  como: “Aplicação  de  um  enfoque  sistemático,  disciplinado e quantificável  para  o desenvolvimento e evolução de aplicações Web, com alta qualidade e a um custo efetivo”.

METODOLOGIA:

O processo WebE (Engenharia Web) adota a filosofia de desenvolvimento ágil que enfatiza uma abordagem de engenharia “simples” que leva à entrega incremental do sistema a ser construído. O modelo de processo da WebE está fixado em três pontos:

ENTREGA INCREMENTAL: as atividades vão ocorrer repetidamente à medida que cada incremento é submetido à engenharia e entregue;

  • MODIFICAÇÕES CONTÍNUAS: as modificações ocorrem devido aos resultados da avaliação de um incremento entregue, ou como conseqüência de condições de negócios mutáveis;
  • CRONOGRAMAS CURTOS: com prazos curtos exige a necessidade de criar estratégias especiais para a documentação de engenharia. No entanto, a análise, projeto e teste crítico devem ser registrados de algum modo.

Susan Weinshenk, em seu livro “Psychology and the Web: Designing for People”, sugere um conjunto de questões que devem ser consideradas à medida que à análise e o projeto progridem. Um pequeno subconjunto é aqui citado:

  • Quão importante é uma página principal de um site Web? Ela deve conter informação útil ou uma simples lista de links que levam um usuário a ter mais detalhes em níveis mais baixos?
  • Qual é o layout de página mais efetivo (por exemplo, menu no topo, à direita ou à esquerda?) e ele varia dependendo de tipo da WebApp que está sendo desenvolvido ?
  • Que opções de mídia têm maior impacto? Os gráficos são mais efetivos do que o texto? O vídeo (ou áudio) é uma opção eficaz? Quando as várias opções de mídia devem ser escolhidas?
  • Quanto de trabalho pode-se esperar que um usuário faça quando ele ou ela está procurando a informação? Quantos cliques as pessoas estão dispostas a fazer?
  • Quão importantes são os apoios navegacionais quando as WebApps são complexas ?
  • Quão complexo pode ser o formulário de entrada antes que ele se torne irritante para o usuário? Como os formulários de entrada podem ser manipulados?
  • Quão importantes são os recursos de busca?  Que porcentagem de usuários navega, e que porcentagem usa buscas específicas? Quão importante é estrturar cada página de um modo que aceite um link de alguma fonte externa?
  • A WebApp será projetada para que seja acessível àqueles que têm deficiências físicas ou outras ?

Veja a importância do planejamento em tudo isso através das palavras de Constantine e Lockwood (“User-Centered Engineering for Web Apllications”, 2002):

“Apesar das declarações sem fôlego de que a Web representa um novo paradigma definido por novas regras, os desenvolvedores profissionais estão percebendo que as lições aprendidas nos dias do desenvolvimento de software antes da Internet ainda se aplicam. Páginas Web são interfaces com o usuário. Programação HTML é programação, e aplicações implantadas por navegador são sistemas de software que podem se beneficiar dos princípios básicos e engenharia de software.”

OOHDM:

As WebApps estão tornando-se cada vez mais complexas devido aos vários aspectos e tecnologias adicionais e específicas, além da complexidade natural do negócio. No entanto, os métodos e as técnicas tradicionais da Engenharia de Software não são adequados para o domínio Web, que tem requisitos próprios

Segundo Rossi, Schwabe e Lyardet (1999), as principais diferenças entre WebApp e aplicações tradicionais (cliente-servidor) referem-se a questões de navegação, de interface e de implementação.

Tendo em vista que WebApp pode ser considerada um tipo de produto de software, vários métodos específicos para o seu desenvolvimento têm sido propostos e sistematizam as  fases de análise, de projeto e de implementação, com foco na modelagem do domínio e da organização estrutural e navegacional.

Dentre os diversos métodos e modelos para a especificação de aplicações hipermídia encontrados atualmente, o método OOHDM tem se mostrado o método mais maduro, devido a sua ampla utilização pela comunidade hipermídia para projetos de diversas aplicações Web em diversos países.

OBS.: Na literatura técnica iremos encontrar o termo de desenvolvimento de uma aplicação hipermídia com o mesmo significado do desenvolvimento de software para a Web.

O desenvolvimento de uma aplicação hipermídia, ou seja, desenvolvimento de software para a Internet, compreende duas etapas principais:

  1. a especificação da aplicação através de um método de projeto (por exemplo, o Object Oriented Hypermedia Design Method – OOHDM)  e;
  2. a devida implementação em alguma linguagem (através de um ambiente de suporte).

OOHDM

O Object Oriented Hipermidia Design Method (OOHDM) permite o projeto de aplicações que seguem o paradigma de hipermídia, como as aplicações na Web.

Ele é uma evolução da experiência acumulada com o Hypermedia Design Model (HDM), trabalho realizado em 1990 por Daniel Schwabe, Franca Garzotto e Paolo Paolini, no Politecnico di Milano, que foi o primeiro modelo proposto para aplicações hipermídia.

No desenvolvimento de aplicações hipermídia, há a necessidade de se utilizar de um modelo de base, que possa nortear as etapas de construção do projeto e o uso da tecnologia relacionada. Schwabe propõe o uso do método OOHDM (Object-Oriented Hypermidia Design Method), que é composto por quatro atividades diferentes:

  1. Modelo conceitual: modela a semântica do domínio da aplicação.
  2. Projeto da Navegação: leva em consideração o perfil do usuário e a tarefa a ser executada, dando ênfase nos aspectos cognitivos.
  3. Projeto da interface abstrata: modela objetos perceptíveis, implementa as metáforas escolhidas e descreve a interface para os objetos navegacionais.
  4. Implementação: A implementação de uma aplicação hipermídia é complexa. Muitas questões técnicas e não-técnicas devem ser resolvidas. Uma vez que o ambiente de implementação tenha sido escolhido, o projeto deve ser mapeado para artefatos de implementação e todos os componentes hipermídia têm de ser instanciados.
Atividades Produtos Mecanismos Interesses do Projeto
Classes, sub-sistemas, relacionamentos, perspectivas de atributos. Classificação, composição, generalização e especialização. Modelagem da semântica do domínio de aplicação.
Nós, elos, estruturas de acesso, contextos de navegação, transformações navegacionais. Mapeamento entre objetos conceituais e de navegação. Padrões de navegação para a descrição da estrutura geral da aplicação. Leva em conta o perfil do usuário e a tarefa; ênfase em aspetos cognitivos e arquiteturais.
Objetos de interface abstrata, reações a eventos externos, transformações de interface. Mapeamento entre objetos de navegação e objetos de interface. Modelagem de objetos perceptíveis, implementa metáforas escolhidas. Descrição de interface para objetos navegacionais.
Aplicação em execução. Aqueles fornecidos pelo ambiente alvo. Desempenho, completitude.

Benefícios da OOHDM

São utilizadas as mesmas primitivas de modelagem (objetos, classes), simplificando a transição de uma atividade para outra.

Ao longo do processo utilizamos agregação, classificação e generalização/especialização.

Pelo fato de os objetos serem artefatos reativos, podem ser construídas aplicações sofisticados baseados em hipermídia, definindo-se padrões de comportamento e de comunicação entre objetos.
Há poderosos formalismos, já existentes para especificar a estrutura, o comportamento e as relações dos objetos e podemos adaptá-los ao campo da hipermídia.

Aplicações projetadas e construídas em torno de objetos tendem a ser mais robustos e fáceis de modificar, tanto pelo uso de polimorfismo e herança como por composição.

Fornecemos primitivas de modelagem de alto nível na forma de padrões de projeto que podem ser utilizadas sem alterações, ou modificadas de acordo com as necessidades do projetista.

Construir novas aplicações reutilizando componentes existentes é altamente viável quando os componentes são descritos como objetos.

, ,

1 Comentário

Seguir

Get every new post delivered to your Inbox.

Junte-se a 251 outros seguidores