Projeto] [PR01] [#1] - Aplicação Web completa utilizando Java


Contexto da aplicação

Toda ferramenta nasce da necessidade de um grupo de pessoas. Caso as pessoas não sentissem a necessidade de criar softwares personalizados para suas necessidades não faria sentido a profissão de desenvolvedor. Até mesmo as aplicações mais genéricas tem seu publico alvo e seus utilizadores tem exigências bastante específicas.
Antes de construir uma aplicação, o desenvolvedor/engenheiro de software irá se deparar com: (1) um ambiente, (2) um problema. A análise destes dois fatores são de vital importância para que o resultado final esteja alinhado com os desejos do cliente ou usuário final. 

(1) Na análise do ambiente o engenheiro de software deve considerar algumas características fundamentais para a criação do software. Em primeiro lugar devemos compreender quem são os usuários finais deste sistema. Nesta análise deverão ser consideradas quais são as funções desempenhadas por este usuário; qual o seu nível de conhecimento na área de informática; como é o ambiente de trabalho do usuário; Etc.

(2) Nenhum ambiente é livre de problemas, os softwares são criados para facilitar tarefas e tornarem este ambiente mais produtivo. Assim, sempre existe um problema a ser resolvido. O objetivo principal do engenheiro neste ponto da análise é compreender quais são estes problemas e como eles podem ser resolvidos por meio de um software. Para isso devemos buscar responder algumas perguntas, como: existe uma tarefa que não pode ser executada por falta de uma ferramenta?; existe alguma tarefa que pode ser otimizada com a utilização de um software personalizado?; qual o desejo dos usuários finais quanto a implementação mais uma ferramenta de gestão de informações?

Identificar o contexto onde uma aplicação está inserida vai guiar o desenvolvimento e evitar que os esforços dos desenvolvedores sejam desperdiçados. Mesmo que você tenha uma equipe enorme ou você esteja sozinho é preciso ter em mente que os recursos para desenvolvimento da aplicação é limitado. Estes recursos podem ser dinheiro, tempo, conhecimento, etc. Se o desenvolvedor não identificar os problemas de forma inteligente, todo seu esforço e recursos serão direcionados para uma funcionalidade que o cliente não precisa. No final o resultado disso são muitas vezes "elefantes brancos" que são muitas vezes caros e não tem utilidade.

Neste projeto não reinventaremos a roda. Ou seja, estes conceitos de construção de aplicações descritos acima não foram inventados agora para desenvolvimento deste projeto. Estas ideias fazem parte de uma grande área que estuda como desenvolver projetos eficientes e capazes de satisfazer clientes na área de TI. A engenharia de software é uma área muito grande e neste projeto utilizaremos algumas técnicas específicas para gerenciar o trabalho e também documentar o software de forma eficiente. 

O processo utilizado: Scrum solo

Figura 1: scrum solo


O processo de desenvolvimento que será utilizado é uma adaptação do SCRUM. O processo original geralmente é utilizado por permitir o desenvolvimento em diferentes ciclos ou iterações denominadas Sprints.  Para a utilização efetiva deste processo foi necessário definir quais seriam os participantes do processo e as tarefas que lhes seriam atribuídas. O processo conta com o desenvolvedor que possui a tarefa de realizar coleta de requisitos, modelagem, implementação e teste da aplicação. Além deste o modelo do processo ainda prevê a figura do SCRUM master, que se faz presente neste projeto na figura do orientador. 

A Figura 1 demonstra o modelo geral de como o processo funciona. Assim podemos perceber que ele foi estruturado em Sprints de  desenvolvimento, onde são gerados artefatos de controle como o Product Backloga documentação dos requisitos e funcionalidades que o sistema deveria atender. Para este projeto, as reuniões de revisão do projeto e planejamento serão feitas em intervalos de 15 dias e não houveram reuniões diárias.

A cada ciclo ou Sprint Burndown serão atualizados o Product Backlog e avaliadas as atividades realizadas. Considerando os resultados da última Sprint foi realizado o planejamento futuro visando corrigir os problemas que ocorreram na execução da Sprint anterior, priorizando os locais que merecem maior atenção e esforço. Todas as reuniões com o orientador do trabalho serão documentadas em atas.

Primeiros passos

Como citado anteriormente precisamos avaliar o ambiente e os problemas encontrados. Para isto iremos utilizar três técnicas para descrever as funcionalidades do sistema. 

(1) - Nesta parte iremos definir as user's histories que descrevem os desejos dos usuários finais por meio de linguagem natural. Estas histórias são bastante genéricas e estão em um nível de abstração bastante alto. 

Veja um exemplo de user history:

ID Solicitante Funcionalidade
      1                       Eu como Product Owner                         DESEJO que a aplicação possua login automático PARA que os usuários possam realizar o login apenas uma vez e permanecer logados o tempo que for necessário.

Duvidas? Acesse este post sobre este assunto.


(2) - Em seguida iremos definir um cronograma utilizando o planning poker para estimar quanto tempo será necessário para implementar cada funcionalidade. O planning poker pode ser encontrado em ferramentas online como por exemplo: https://www.planningpoker.com/ ou  https://www.pointingpoker.com/. Ao fim desse processo teremos um cronograma possível de ser executado.

Duvidas? Acesse este post sobre esta ferramenta.

(3) - Definir protótipos de tela baseado em cada user history. Não é necessário um número mínimo ou máximo de protótipos de tela, só é necessário que estes protótipos expressem com clareza a ideia central do software.


Projeto] [PR01] [#1] - Aplicação Web completa utilizando Java Projeto] [PR01] [#1] - Aplicação Web completa utilizando Java Reviewed by Vinicius dos Santos on 03:59:00 Rating: 5

Nenhum comentário

Escreve ai sua opinião!