De que se trata o artigo: Este artigo descreve através de um estudo de caso de uma escola de karatê uma estratégia para modelagem incremental de dados em um sistema de informação, apresentando a divisão do escopo do sistema em iterações, e então evoluindo o esquema de dados a cada nova iteração desenvolvida.

Para que serve:
Para apoiar analistas de sistema e DBAs que precisam desenvolver sistemas de informação baseados em banco de dados usando uma metodologia incremental para desenvolvimento de software, onde é necessário dividir não apenas o que implementar, mas também a divisão da modelagem dos dados nas diferentes iterações do sistema.

Em que situação o tema é útil
A utilização de uma estratégia incremental é algo mais que constante no dia-a-dia do desenvolvimento de sistemas computacionais, e normalmente as abordagens que lidam com estes aspectos focam exclusivamente nas atividades de programação e gerenciamento de projetos. Neste artigo, o foco foi na modelagem de dados, mostrando como esta é impactada por esta estratégia, e ainda apresentando a aplicação de uma estratégia de modelagem incremental de dados para um estudo de caso.

É mais que nítido nos dias de hoje que os sistemas computacionais que estão sendo desenvolvidos são cada vez mais complexos e cada vez mais envolvem um volume extenso de dados a serem persistidos. Como estratégias de desenvolvimento de software que têm sido aplicadas cada vez mais no mercado, estão as metodologias incrementais, onde o princípio central é dividir o escopo do sistema a ser desenvolvido em partes menores, como módulos, e então trabalhar o desenvolvimento em diferentes iterações, cada uma visando o desenvolvimento de uma parte (ou módulo) identificada para o sistema.

As abordagens descritas em livro e artigos normalmente focam na divisão do sistema olhando para seu código ou olhando para questões relacionadas ao gerenciamento do projeto. Porém, precisamos atentar que essas divisões impactam também na modelagem dos dados que fazem parte do escopo do sistema a ser desenvolvido, ou seja, precisamos partir de um modelo de dados inicial e a cada nova iteração, evoluí-lo com as novas informações que precisam ser tratadas considerando o domínio da iteração a ser desenvolvida. Além disso, o desenvolvimento incremental de software possui como característica interessante a possibilidade de entregar o sistema aos seus usuários em partes, de forma a obter um feedback constante sobre o sistema em desenvolvimento, o que pode resultar em mudanças constantes nos requisitos identificados ao longo do projeto. Tais mudanças também podem afetar o modelo de dados da aplicação, e isso precisa ser tratado o quanto antes para evitar a propagação de defeitos ao longo das iterações.

Neste contexto, este artigo apresenta um estudo de caso de um sistema para uma escola de karatê, onde são definidos seus requisitos iniciais e a partir de então é a realizada a modelagem dos dados de forma incremental, iteração a iteração, prevendo ainda atividades de ajustes no modelo de dados após mudanças nos requisitos do sistema. A ideia se assemelha à introdução de agilidade no processo de modelagem dos dados, seguindo as diretrizes de métodos ágeis de desenvolvimento de software.

Este artigo foi baseado no artigo “Agile/Evolutionary Data Modeling: From Domain Modeling to Physical Modeling” escrito por Scott Ambler em uma conferência internacional de Modelagem Ágil de Banco de Dados, adaptado pelo autor em alguns tópicos.

Desenvolvimento Iterativo e Incremental

Desenvolvimento Incremental é uma estratégia de planejamento estagiado em que várias partes do sistema são desenvolvidas em paralelo, e integradas quando completas. Não implica, requer ou pressupõe desenvolvimento iterativo ou em cascata – ambos são estratégias de retrabalho. A alternativa ao desenvolvimento incremental é desenvolver todo o sistema com uma integração única.

O desenvolvimento iterativo é uma estratégia de planejamento de retrabalho em que o tempo de revisão e melhorias de partes do sistema é pré-definido. Isto não pressupõe desenvolvimento incremental, mas funciona muito bem com ele. Uma diferença típica é que a saída de um incremento não é necessariamente assunto de um refinamento futuro, e seu teste ou retorno do usuário não é utilizado como entrada para planos de revisão ou especificações para incrementos sucessivos. Ao contrário, a saída de uma iteração é examinada para modificação, e especialmente para revisão dos objetivos das iterações sucessivas.

A ideia básica por trás da abordagem iterativa é desenvolver um sistema de software incremental, permitindo ao desenvolvedor tirar vantagem daquilo que foi aprendido durante a fase inicial de desenvolvimento de uma versão do sistema. O aprendizado ocorre simultaneamente tanto para o desenvolvedor, quanto para o usuário do sistema.

Os passos fundamentais do processo estão em iniciar o desenvolvimento com um subconjunto simples de requisitos de software e iterativamente alcançar evoluções subsequentes das versões até o sistema todo estar implementado. A cada iteração, as modificações de projeto são feitas e novas funcionalidades são adicionadas.

...
Quer ler esse conteúdo completo? Tenha acesso completo