| iteração | etapa metodológica | instrumentos de recolha de dados | participantes no estudo | calendarização prevista |
| 1. | observação de um exemplo prático | observação directa, inquérito por entrevista, gravação | equipa de programadores | 2 semanas |
| 2. | proposta de modelo metodológico | - | - | 3 semanas |
| 3. | projectos piloto | - | - | 5 semanas |
| 3.x.1. | protótipos | |||
| 3.x.2. | validação | |||
| 4. | análise crítica dos pilotos | entrevista focus groups | equipa de progamadores | 2 semanas |
| 5. | proposta final | - | - | 6 semanas |
O modelo metodológico anterior foi delineado tendo por base o calendário prático do segundo semestre, que prevê 18 semanas de trabalho a começar em Fevereiro e terminar em Junho. Assim, numa primeira fase irei despender de 2 semanas para acompanhar um projecto prático que esteja a ser desenvolvido e que me servirá de ponto de partida. Nesta fase irei acompanhar a equipa de programação e observar as metodologias usadas directamente. Poderei ainda, sempre que considerar necessário, fazer entrevistas aos envolvidos e quando assim for, as entrevistas serão acompanhadas de instrumentos de gravação para registo das mesmas. Depois de toodos os dados devidamente recolhidos, catalogados e analisados irei proceder à elaboração de um modelo metodológico para as etapas seguintes. Esta proposta de modelo irá demorar não mais que 3 semanas e nas datas finais estará sujeita a uma validação por parte dos orientadores de projecto. Nos momentos iniciais da fase seguinte e em reunião com a equipa da DreamLab terão que ser decididos quais os projectos a ser desenvolvidos no período que se segue. Após tomada esta decisão, todos os pilotos irão incluir 2 fases distintas, elaboração de protótipos e subsequente validação dos mesmos. Apesar da obrigatória validação para cada piloto, passado o intervalo de 5 semanas dedicadas a esta fase, irá decorrer uma analise crítica dos pilotos desenvolvidos. Esta etapa irá decorrer durante 2 semanas, em conjunto com a equipa de programadores e eventuais chefias. O período restante de 6 semanas será dedicado à elaboração da proposta final que, em condições ideais não prevê mais nenhum contacto obrigatório com a equipa da DreamLab.
usar as setas do prezi para navegar
Dentro da problemática em questão, facilmente se levantam os dois conceitos presentes na tabela anterior - optimização e agilidade. Optimização porque se trata de pegar numa prática que, bem ou mal já está implementada, e o objectivo desta investigação passa precisamente por analisar um processo e melhorá-lo, em todas as componentes que este envolve. Assim, dentro deste conceito realço as dimensões económica e ao nível dos recursos consumidos. Os indicadores para a dimensão económica são claramente os custos e gastos provenientes no decorrer do processo. Para as dimensões dos recursos, considerei pertinente dividir em duas categorias maiores, recursos humanos e temporais numa só, uma vez que os indicadores estão claramente interligados e são comuns a ambas e finalmente recursos tecnológicos, cujos indicadores serão tipicamente as ferramentas usadas. Voltando aos recursos humanos e temporais, os indicadores levantados serão o numero de recursos dispendidos (pessoas envolvidas directamente no processo), o numero de horas dispendidas por tarefa e finalmente o contributo para a formação pessoal de cada um dos envolvidos. Este ultimo indicador é relevante na medida em que é particularmente interessante dum ponto de vista de investigação saber se no final do processo de desenvolvimento de um serviço, a experiencia foi enriquecedora ao nível do conhecimento, para a equipa envolvida. O conceito da agilidade aponta para a facilidade, rapidez e eficiência de desenvolvimento; uma maior capacidade de resposta aos pedidos dos clientes e melhor/mais rápida adaptação à mudança. Dentro deste conceito surge o ponto fulcral da minha investigação, sob a forma das dimensões reutilização e modularidade. Os indicadores da reutilização serão o tempo que se pode ganhar num processo e também o conhecimento novo que pode ser proveniente de uma abordagem mais ágil no desenvolvimento de um serviço. Dentro da modularidade os indicadores serão o numero de módulos criados ou passíveis de ser criados assim como a diversidade destes mesmos, dentro de cada temática/utilização. Finalmente interessa também fazer um levantamento da elasticidade destes mesmos módulos, ou seja, a capacidade de um mesmo módulo poder ser adaptado a um outro tipo de serviços que não o inicialmente pensado, mediante pequenas e rápidas alterações. Esta capacidade de criação de módulos sob forma de serviços Web passíveis de ser adaptados e inseridos em vários outros contextos, apontando assim para uma metodologia de desenvolvimento claramente mais ágil é precisamente o elemento central da investigação, e objectivo final da minha tese.Dentro da problemática em questão, facilmente se levantam os dois conceitos presentes na tabela anterior - optimização e agilidade. Optimização porque se trata de pegar numa prática que, bem ou mal já está implementada, e o objectivo desta investigação passa precisamente por analisar um processo e melhorá-lo, em todas as componentes que este envolve. Assim, dentro deste conceito realço as dimensões económica e ao nível dos recursos consumidos. Os indicadores para a dimensão económica são claramente os custos e gastos provenientes no decorrer do processo. Para as dimensões dos recursos, considerei pertinente dividir em duas categorias maiores, recursos humanos e temporais numa só, uma vez que os indicadores estão claramente interligados e são comuns a ambas e finalmente recursos tecnológicos, cujos indicadores serão tipicamente as ferramentas usadas. Voltando aos recursos humanos e temporais, os indicadores levantados serão o numero de recursos dispendidos (pessoas envolvidas directamente no processo), o numero de horas dispendidas por tarefa e finalmente o contributo para a formação pessoal de cada um dos envolvidos. Este ultimo indicador é relevante na medida em que é particularmente interessante dum ponto de vista de investigação saber se no final do processo de desenvolvimento de um serviço, a experiencia foi enriquecedora ao nível do conhecimento, para a equipa envolvida. O conceito da agilidade aponta para a facilidade, rapidez e eficiência de desenvolvimento; uma maior capacidade de resposta aos pedidos dos clientes e melhor/mais rápida adaptação à mudança. Dentro deste conceito surge o ponto fulcral da minha investigação, sob a forma das dimensões reutilização e modularidade. Os indicadores da reutilização serão o tempo que se pode ganhar num processo e também o conhecimento novo que pode ser proveniente de uma abordagem mais ágil no desenvolvimento de um serviço. Dentro da modularidade os indicadores serão o numero de módulos criados ou passíveis de ser criados assim como a diversidade destes mesmos, dentro de cada temática/utilização. Finalmente interessa também fazer um levantamento da elasticidade destes mesmos módulos, ou seja, a capacidade de um mesmo módulo poder ser adaptado a um outro tipo de serviços que não o inicialmente pensado, mediante pequenas e rápidas alterações. Esta capacidade de criação de módulos sob forma de serviços Web passíveis de ser adaptados e inseridos em vários outros contextos, apontando assim para uma metodologia de desenvolvimento claramente mais ágil é precisamente o elemento central da investigação, e objectivo final da minha tese.
Para a meta desta semana, mais abaixo segue a proposta de índice do enquadramento teórico. Os tópicos apresentados são acompanhados de pequenas indicações para que se perceba não só o seguimento mas também o enquandramento das ideias. Tal como o próprio nome indica esta estrutura do índice é ainda provisória, portanto aceito comentários, não tanto à apresentação em si, mas ao que conseguirem perceber dela.
Como já foi referido no post anterior, o desenvolvimento modular funciona no sentido de reduzir a complexidade e facilitar uma resposta à mudança mais rápida, no entanto é preciso atender a algumas regras para que esta metodologia obtenha os resultados esperados. São elas:
a) esconder a informação: durante o desenvolvimento dos módulos deve-se ter o cuidado de evitar que quaisquer tipos de dados sejam acessíveis a outros, isto para minimizar eventuais problemas caso ocorram alterações posteriores nos módulos.
b) independência funcional: esta regra remete para o facto de que um software que faz uso de módulos independentes é mais fácil de ser desenvolvido e facilita também na manutenção do mesmo. A independencia funcional de um módulo mede-se através de 2 critérios, a coesão e o acoplamento. Coesão é ligação existente entre os vários módulos e quanto maior, melhor; já o acoplamento remete para o grau de interdependência entre os módulos e quer-se o menor possível, em condições optimas.
c) decomposição modular: que aponta para identificação e divisão de todos os sub-sistemas em módulos individuais.
em linhas gerais muito gerais: Programação por módulos (no contexto do web development) é a divisão de um site em diferentes partes, consoante as suas funcionalidades e que podem ser desenvolvidas e testadas em separado dos restantes. Este método permite que o código fonte seja escrito apenas uma vez e possa ser mais tarde reaproveitado ou modificado com maior facilidade e em menos tempo.
Com o evoluir da engenharia de software, mais particularmente o web development, tem-se vindo a registar uma maior preocupação em acompanhar as necessidades organizacionais e não só. Esta preocupação traduz-se numa maior capacidade de adaptação a alterações que possam ocorrer durante o processo de desenvolvimento. Para que isto seja possivel, é necessário que a metodologia de desenvolvimento adoptada assim o permita, sendo este o factor crucial para o sucesso ou não de um projecto. Metodologias ágeis têm como ponto de partida a complexidade inerente a qualquer processo de desenvolvimento e permitem uma maior flexibilidade, num ambiente sempre susceptivel a mudanças rápidas e inesperadas, às quais é necessária uma reacção rápida.
A modularidade é um principio que visa o desenvolvimento de módulos que possam funcionar optimamente de forma independente dos restantes. Este modelo tem como vantagens imediatas uma maior facilidade de criação e manutenção, uma vez que a falha de um módulo não compromente o sistema completo. Precisamente por serem independentes uns dos outros, é possivel adicionar ou substituir módulos, sem que o utilizador final se aperceba. Estes módulos após implementados podem ser posteriormente reutilizados, evitando repetições desnecessárias de código e tempo perdido.
* ainda susceptivel a alterações