Arquivo de ‘Desenvolvimento Web’

Projeto de WebSite

Friday, March 28th, 2008

Desenvolver um website pode parecer simples, mas esta tarefa pode não ser tão simples assim. Dependendo do projeto temos que seguir alguns passos básicos para não sermos surpreendidos no decorrer do desenvolvimento. O processo de criação de um website envolve várias partes, é claro que algumas dessas partes podem ser suprimidas levando em consideração alguns fatores como o investimento do cliente no projeto, estrutura da organização que está desenvolvendo, entre outros.

Segue abaixo um exemplo de EAP (Estrutura Analítica de Projeto) para criação de um website de médio e grande porte, pois para pequenos projetos alguns desses passos com certeza serão omitidos.

EAP

Espero que tenham gostado, em breve novos artigos. Um abraço ;)

Qual a importância de validar seu website?

Tuesday, January 29th, 2008

Primeiramente vou resumir o que é w3c com a ajuda do nosso dicionário wikipédia

W3C“O W3C desenvolve padrões para a criação e a interpretação dos conteúdos para a Web. Sites desenvolvidos segundo esses padrões podem ser acessados e visualizados por qualquer pessoa ou tecnologia, independente de hardware ou software utilizado, como celulares, PDAs, eletrodomésticos, de maneira rápida e compatível com os novos padrões e tecnologias que possam surgir com a evolução da internet.”

Bom com essa explicação bem resumida do que é o W3C você deve estar indo correndo ver se seu site está dentro dos padrões.

O Site está validado e agora?

Hoje em dia estar dentro dos padrões não é nenhum diferencial para um website, qualquer empresa competente já está desenvolvendo websites dentro dos padrões w3c. Uma página de internet hoje é muito mais que padrões, layouts criativos e efeitos “mirabolantes” no flash.

Há uma grande tendência para os websites com conteúdo criativo e bem estruturado. Os profissionais de arquitetura da informação e os web writing, ganharam uma importância fundamental nos projetos, eles determinam a estrutura e a navegação dos usuários no website. Antes o webdesigner fazia tudo, só entregava para o programador fazer os conteúdos dinâmicos.

Layouts criativos eu creio que nunca vão sair de moda, mais hoje em dia o que realmente da retorno, é um site bem estruturado, com as informações de fácil visualização e boa navegação no website. O bom site é aquele que você acha a informação que precisa rápido e com informações visuais intuitivas para que o usuário não se perca.

E quais são os benefícios de estar com um site dentro dos padrões e bem estruturado?

1. Compatibilidade
2. Otimização de Buscadores
3. Acessibilidade
4. Carregamento Rápido
5. Fidelização de usuários

1. Compatibilidade

Quando o seu código html não é validado, o mesmo corre o risco de ser exibido de forma diferente entre os navegadores ou ainda não ser visualizado por alguns navegadores.

2. Otimização de Buscadores

BuscadoresHoje em dia a briga por uma boa colocação nos buscadores é muito acirrada. Cada detalhe faz a diferença, os buscadores fazem uma varredura em tudo o que há na internet. Eles são colocados em uma lista e numa ordem que entram vários fatores para uma boa colocação. Dentre elas se o website esta funcionando perfeitamente dentro dos padrões. Se o conteúdo é realmente de acordo com o que a empresa diz que faz. Uma série de fatores complexos que determinam uma boa colocação. Para falar de todas elas, eu preciso escrever outro artigo sobre SEO. Mas o importante saber disso tudo é que estar dentro dos padrões e ter um conteúdo bem estruturado são 80% de chances de uma boa colocação.

3. Acessibilidade

AcessibilidadeA validação w3c é uma validação muito complexa, os sites validados de acordo com w3c podem ser visualizados por pessoas portadoras de deficiência visual, por vários tipos de mídia como celular, smartfone, iphone entre outros.

Embora a validação por si só não é garantia de acessibilidade total num website, mas garante que grande parte de conteúdo se torne acessível.

Uma coisa que acho muito interessante citar é o ALT nas imagens, tanto para os buscadores quanto para pessoas cegas (na verdade eu considero os buscadores como pessoas cegas também, por eles na o enxergam nada). Depois da palestra de pessoas com deficiência visual que eu assisti no waiu, percebi o quanto é importante o uso do ALT nas imagens. Não só por uma questão de validar mais para pessoas com deficiência poderem criar a imagem em suas cabeças e conseguir entender melhor o conteúdo do website.

4. Carregamento Rápido

O site convencional feito com o uso de tabelas e uma extensa quantidade de tags para formatação tanto a página estrutura e conteúdo demoram bem mais para carregar do que os sites feitos com tableless. A utilização de CSS separa a estrutura do conteúdo e dá os navegadores menos código. A validação também ajuda os navegadores a exibirem os sites de forma mais rápida.
Lógico que também depende do CSS e uso de imagens pesadas para um carregamento rápido do seu website. Não basta ter somente a formatação toda estruturada se o website possui uma grande quantidade de imagens.

5 – Fidelização do usuário

Bom depois de ter passado por todas as etapas acima e seu site esta validado, com um conteúdo bem estruturado e com o layout agradável, com certeza esse usuário vai voltar ou indicar o site para outras pessoas. A internet ainda segue o mesmo esquema da propaganda. Se é ruim ele vai contar para mais de 10 pessoas falando mal da empresa agora se é bom ele falara para ate 3 pessoas bem do seu site. Então é melhor ganhar a confiança dos usuários aos poucos do que perde de uma só vez.

Pensamento orientado a objetos - AOO

Wednesday, November 28th, 2007

Muito se fala em classes, objetos, herança, poliformismo, abstração e outros conceitos relacionados ao desenvolvimento orientado a objetos, mas o objetivo desse artigo não é explicar cada um desses conceitos, e sim mostrar o que deve ser feito até chegarmos à fase de construção, ou seja, a análise orientada o objetos (AOO).

Para realizar um projeto, de fato, orientado a objetos é necessário mudar a forma de se pensar, partindo da fase de análise do projeto, que se tornou a mais importante. Hoje em dia não podemos partir direto para fase de desenvolvimento, sem antes passar pela análise, é inevitável. As duas fases devem ser simultâneas.

Estarei apresentando uma metodologia muito eficaz para auxiliar os analistas que querem se aprofundar nos projetos orientados a objeto, essa metodologia é conhecida como processo unificado (RUP). O RUP adota as seguintes premissas básicas:

  • Uso de iterações para evitar o impacto de mudanças no projeto,
  • Gerenciamento de mudanças e
  • Abordagens dos pontos de maior risco o mais cedo possível.

O processo unificado consiste em quatro fases básicas:

  • Concepção – visão geral e entendimento da necessidade do projeto,
  • Elaboração – especificação e abordagem dos pontos de maior risco,
  • Construção – desenvolvimento principal do sistema,
  • Transição – ajustes e implantação do sistema

A fase de Concepção tem um foco nos riscos de negócios ou requisitos que possam inviabilizar o projeto. Esta fase é mais importante em projetos novos e mais simples em projetos de melhoria de sistemas já existentes. Porém, o foco é sempre na garantia que o projeto é viável e vale a pena ser feito.

Nesta fase, realiza-se uma das principais tarefas do projeto, que é o levantamento de requisitos. Esse processo é realizado para definir “o porquê” da criação do sistema, é muito difícil de projetar uma boa solução para um problema que não tem uma explicação bem definida. Existem algumas técnicas para auxiliar no levantamento de requisitos, como por exemplo, observação in-loco, entrevista com o cliente e JAD (Joint Application Development). Os requisitos são divididos em dois:

  • Requisitos funcionais – são aqueles que detalham o que deve ser feito no sistema. A partir deles o analista segue com as outras etapas do processo unificado.
  • Requisitos não-funcionais – detalham como o sistema deve ser feito, por exemplo, facilidades de uso, tempo de resposta, equipamentos, etc. Esses tipos de requisitos podem inviabilizar o desenvolvimento do projeto, por isso são muito importantes.

É muito importante destacar que, nesta fase, nem todos os requisitos foram definidos, mesmo porque o objetivo dessa fase não é esse, e sim testar a viabilidade do sistema. Com os testes devidamente feitos e a certeza da realização do projeto, devemos seguir para a outra etapa, ainda dentro da fase de concepção do processo unificado, que é o desenvolvimento dos casos de uso de alto nível. Essa fase é muito importante também, aqui que devemos especificar os processos que foram encontrados nos requisitos funcionais.

Os casos de uso de alto nível devem conter uma descrição geral dos processos considerados primordiais para a realização do projeto, não podendo se delongar muito. Eu recomendo que eles não ultrapassem seis linhas, sempre levando em consideração a grandiosidade do projeto.

A última etapa da fase de concepção é o escalonamento dos casos de uso, o que seria isso? Com todos os casos de uso de alto nível prontos, precisamos definir a prioridade de desenvolvimento para cada um deles. São levados em consideração dois fatores nesse momento, o grau de importância e o grau de complexidade de desenvolvimento.

Com essa etapa devidamente definida, concluímos a fase de concepção. Claro que esta é uma visão superficial do processo unificado. Essa fase que define também se o projeto vai ser ou não desenvolvido, não podendo ultrapassar 5% do tempo total estimado. Se a concepção demorar mais do que algumas semanas para ser definida, existe algo de errado.

A próxima fase é a de elaboração que será apenas para o projeto do sistema, buscando complementar o levantamento / documentação dos casos de uso, voltado para a arquitetura do sistema, revisa a modelagem do negócio para os projetos e inicia a versão do manual do usuário.
Na fase de construção, começa o desenvolvimento físico do software, produção de códigos, testes alfa e beta.

Quando entramos nessas fases devemos seguir um ciclo iterativo que parte do princípio da especificação dos casos de uso, começando sempre daquele que foi designado o de maior importância na etapa de escalonamento. Nessa etapa são desenvolvidos os primeiros casos de uso expandido da lista, um de cada vez. Pelo próprio nome já podemos ver que eles vão fazer um detalhamento bem completo dos casos de uso de alto nível encontrados na fase de concepção.

Diagrama de Casos de Uso

Figura 1 - Diagrama de caso de uso

No mínimo, cada caso de uso deve ter um fluxo principal de sucesso, ou seqüência típica de eventos, um exemplo desse tipo de caso de uso:

  1. O usuário entra com seu nome e email.
  2. O sistema verifica a informação de identificação.

Os casos de uso também podem conter fluxos alternativos ou secundários que contém exceções do tema principal, alternativas ou eventuais erros que possam acontecer.
Seguindo com nosso ciclo iterativo, partimos para o modelo conceitual. A primeira impressão que temos ao ver um modelo conceitual é pensar que ele é idêntico ao modelo entidade-relacionamento utilizado na camada de persistência dos dados, mas essa visão está errada. O modelo conceitual está mais para um diagrama de classes do que para um modelo ER.

Modelo Conceitual

Figura 2 - Modelo Conceitual

A próxima etapa é o diagrama de seqüência dos eventos do sistema, essa etapa tem como objetivo principal especificar a seqüência de iterações dos atores com o sistema, e definir as operações que são necessárias. Esse diagrama é feito com base nos casos de uso expandidos, a partir deles iremos encontrar as operações e respostas do sistema. As operações poderão se transformar, mais adiante, nos métodos das classes e as respostas, o retorno desses métodos.

Temos ainda a etapa dos contratos, aqui já estamos bem perto da construção do processo. Nessa etapa, as operações são bem detalhadas, contendo suas responsabilidades, pré-condições e pós-condições, essas últimas descrevem as definições de instâncias de objetos, associações formadas e modificações de atributos. Vejamos um exemplo de contrato:

Nome da operação: adicionarCliente(idCliente, nomeCliente)
Responsabilidade: Cadastrar um novo cliente
Pós-Condições:

  • Uma instância do Cliente foi criada.
  • Cliente.nome recebeu o nome passado como parâmetro.
  • Cliente.id recebeu o id passado como parâmetro.
  • A instância Cliente foi associada ao sistema.

Podemos ver que nos aproximamos muito da programação, o nome da operação provavelmente será um método da classe Cliente, idCliente e nomeCliente serão propriedades da classe. Ao analisarmos as pós-condições vimos à definição de instâncias de objeto, modificações de atributos e a associação. A última linha das pós-condições tem como objetivo indicar que o objeto vai ser enviado para a camada de persistência, na qual são realizadas todas as operações necessárias para gravação na fonte de dados.

Com tudo isso definido, partimos para a construção do processo, programamos, programamos, programamos, testamos, testamos, testamos e finalizamos uma etapa de cada vez, entrando em loop, espero eu loop finito.

É bom lembrar que tudo que foi falado relaciona-se com a análise orientada a objetos, e dá uma visão superficial. Tentarei escrever um artigo explicando mais sobre a parte de desenvolvimento de um sistema orientado a objetos.

Não poderia terminar sem citar um dos maiores conhecedores da análise orientada a objetos, Craig Larman possui um livro considerado o melhor sobre o assunto: “Utilizando UML e Padrões” da editora Bookman, que vai muito além dos diagramas UML, explicando desde conceitos RUP até o desenvolvimento iterativo. Eu recomendo. ;)

Espero que tenham gostado, e peço desculpa por qualquer erro encontrado, pois esse é meu primeiro artigo, aceito sugestões e críticas construtivas. Até a próxima.