ApresentaçãoO projeto Guarda-Chuva tem como objetivo desenvolver um Sistema Gerenciador de Conteúdo (CMS - Content Management System) Open Source, de forma que seja possível sua adaptação a qualquer projeto de sistemas de informação desenvolvido em PHP.
O projeto tem foco nos Trabalhos de
... [More]
Conclusão de Curso (TCC´s) dos alunos da UnP - Universidade Potiguar, sobretudo no desenvolvimento das atividades de orientação aos TCCs do curso de Sistemas de Informação. Detectamos uma tendência de não implantação e utilização dos projetos nas empresas parceiras ao final dos TCC´s. Entendemos que esse problema decorre da impossibilidade de um ou dois alunos produzirem software de qualidade, em função da quantidade de processos e de artefatos que devem ser produzidos para a construção de softwares dentro dos padrões exigidos pela indústria. Além disso, o mercado, a cada dia, cria novos requisitos, que impactam diretamente no prazo de desenvolvimento do sofware. Podemos citar como exemplo, os requisitos de acessibilidade recomendados pelo W3C, a independência de plataformas com o uso de aparelhos celulares para consultas a Internet, AJAX entre outros.
Além dos problemas de entrega e implantação do sistema, há ainda, a falta de suporte e manutenção por parte dos alunos. Não se pode exigir que os alunos se comprometam com a manutenção do sistema ao longo do seu ciclo de vida. A empresa parceira depois encontra dificuldade para conseguir mão-de-obra capaz de prestar suporte e manutenção para o software desenvolvido. A falta de padrões no código, a ausência de gerenciamento e a pouca experiência no desenvolvimento inviabiliza qualquer possibilidade de manutenção do software por outros desenvolvedores.
Caso nosso projeto alcance os objetivos esperados, produziremos mão-de-obra capaz de dar manutenção às aplicações desenvolvidas por outros alunos, e, dessa forma, as empresas parceiras teriam oferta de mão-de-obra para dar continuidade aos projetos iniciados na UnP.
A ArquiteturaPretendemos construir uma arquitetura aberta (open source) utilizando várias bibliotecas desenvolvidas pela comunidade de software livre. Não há nenhuma novidade na utilização de bibliotecas de terceiros, contudo, para tornar mais fácil o aprendizado e a utilização dessas bibliotecas, pretendemos criar classes que irão traduzir os métodos(originariamente desenvolvidos em inglês) para o português. A arquitetura utilizará os princípios da Prototipagem:
Mostrar resultados (parciais) ao clinte de forma rápida Mudanças necessárias são discutidas mais rapidamente O refinamento do protótipo acontece até que o cliente esteja satisfeito com o software
Prototipagem EvolutivaEm resumo, as técnicas e ferramentas de software, existem para auxiliar o levantamento de requisitos de um sistema e auxiliar a equipe de desenvolvimento a atender a esses requisitos. Mesmo com todas as técnicas e ferramentas, é bastante comum a compreensão equivocada e incompleta dos requisitos levantados, além disso há uma constante mudança nos requisitos já levantados, mesmo durante a fase de desenvolvimento e implantação, a mudança é comum. Qualquer alteração no percurso da criação de um sistema pode acarretar um aumento significativo de prazos, riscos e custos.
A prototipagem vem ganhando aceitação nas comunidades de engenharia de software, sendo reconhecida como um modelo viável aplicado a construção de sistemas. A utilização de protótipos mostra rapidamente a compreensão e a utilização de um sistema pois ajuda, os clientes e os responsáveis pelo desenvolvimento do projeto, a testar e melhorar o sistema antes do seu término. Na engenharia de requisitos, a protipagem é empregada na geração de protótipos de interface, baseada em cenários. O desenvolvedor cria um protótipo para realizar alguma tarefa do sistema. O usuário vê a materialização do entendimento do desenvolvedor referente àquele cenário, e, uma vez que o protótipo deve ser constantemente refinado, o usuário pode solicitar as mudanças nos requisitos mais rapidamente. Um ponto positivo é que há uma maior compreensão do sistema e das tarefas de desenvolvimento, levantamento e validação de requisitos de forma contínua, reduzindo ambigüidades, inconsistência e divergências.
Estudos apontam que a utilização de protótipos reduz, em até 40%, os esforços dos desenvolvedores. A prototipagem vem sendo usada com sucesso, permitindo que, desde muito cedo, haja uma percepção dos requisitos do sistema, além da simplificação na concepção e no projeto de sistemas.
Um protótipo pode ser considerado uma implementação concreta, embora parcial, de um programa. Os protótipos podem ser criados para explorar múltiplas questões durante o desenvolvimento do software. Por exemplo, um protótipo de uma interface gráfica tem como principal função captar as necessidades efetivas e concretas do usuário.
Há diversas opções para fazer protótipos de sistemas de software. As técnicas variam conforme os custos e o esforço investido para a realização do protótipo e também pela fidelidade e generalidade dos resultados. Abaixo estão as técnicas de prototipagem mais usuais:
Storyboard Protótipo em papel Mágico de Oz Máquina de Cenários Prototipagem rápida Prototipagem evolutiva
Iremos nos concentrar apenas na Prototipagem evolutiva, que é o foco do nosso artigo:
Prototipagem Evolutiva: o principal ponto aqui é adquirir funcionalidade para demonstrar uma parte do sistema ao utilizador final, de modo que algum feedback seja conseguido do lado do cliente. A medida que o sistema vai sendo desenvolvido, diversas funcionalidades são adicionadas ao protótipo e traduzidas numa eficiente implementação. No final, o sistema vai estar pronto no seu todo.
RacionalizaçãoNotamos que uma grande parte dos projetos abordam o mesmo tipo de empresa. São inúmeros os projetos de clínicas e hospitais, frente de loja, escritórios de advocacia, cada um com suas especificidades. Apesar dessas especificidades, existem muitas atividades em comum. Apenas como exemplo, todos precisam de um módulo de gerenciamento de usuários e permissões, todos tem um cadastro de clientes ou pacientes, os softwares médicos necessitam obrigatoriamente de uma agenda de marcação de consultas, os jurídicos necessitam de uma agenda de audiências, todos os de frente de loja necessitam de um sistema de contas a pagar e receber, estoque e etc...
Em outras palavras os alunos passam a maior parte do tempo fazendo a mesma coisa, uns com mais qualidade outros com menos. E a falta de qualidade em apenas um desses módulo é condição determinante para a não implantação desse projeto nas empresas parceiras.
Com o desenvolvimento de uma arquitetua reutilizável e livre, os alunos passariam a “adaptar” os sistemas às necessidades de cada empresa e a criar módulos para atender as especificidades de cada uma. Os módulos mais comuns já seriam amplamente testados e necessitariam de pouco ou nenhuma modificação. Os módulos novos seriam desenvolvidos obedecendo todas as atividades do processo de software e a produção de todos os artefatos necessários a produção de software de qualidade. Cada módulo novo poderia ser adaptado às necessidades de outras empresas por outros alunos e assim por diante. Nosso projeto pretende construir uma arquitetura de software reutilizável, além dos módulos de gerenciamento de usuários e permissões, que poderão ser utilizados em futuros TCCs.
Trabalhos FuturosVamos projetar um cenário futuro. Um Escritório de Advocacia foi parceiro no desenvolvimento de um sistema de controle de processos e clientes, os alunos que desenvolveram o sistema não tem mais interesse em dar continuidade ao sistema pois estão atualmente envolvidos em outros projetos ou atividades. Esse escritório sentiu a necessidade de ajustes no sistema e de um novo módulo que faça a comunicação com o sistema da Justiça para atualizar o andamento dos processos. Esse ajuste e o novo módulo podem vir a ser um novo projeto de TCC desenvolvido por outros alunos. Esse projeto pode ser adaptado a outras empresas parceiras (que já fazem uso do sistema de controle de processos) e assim, paulatinamente, iremos criando mercado para nossos alunos e egressos.
Por que mais um CMS?Por que esse CMS seria desenvolvido em português do Brasil, com toda a documentação feita em nosso idioma. Dessa forma, a curva de aprendizagem para o desenvolvimento de módulos e utilização do sistema é menos acentuada. Um dos problemas que percebemos durante as orientações nos TCC´s é que muitos alunos não dominam o idioma inglês, e portanto ficam impossibilitados de utilizar um sistema Gerenciador de Conteúdo, e adaptá-los às suas necessidades. É desejável que nossos alunos procurem dominar a língua inglesa (que é o idioma mais utilizado no desenvolvimento de sistemas), contudo, não podemos condicionar o desenvolvimento de sistemas com a fluência no idioma, dessa forma, o projeto Guarda-Chuva pode ajudar muito os iniciantes.
Guarda-ChuvaO nome guarda-chuva foi dado pelo Prof. Osmar Junior durante as reuniões sobre a criação do projeto. Pretendíamos criar uma arquitetura que daria abrigo a outros projetos, e o nome Guarda-Chuva refletiu bem nossa idéia inicial.
Prof. Alan Gustavo Santana Ribeiro [Less]