14/05/2011 20:00

O Valor da Modelagem

Introdução

Por que você deveria modelar algo antes de construir? Talvez você não devesse fazer modelagem. Coisas simples não precisam necessariamente ter um modelo antes de serem construídas. Uma casinha de cachorro ou uma simples planilha de custos para orçamento domestico. Tais projetos possuem características semelhantes:

  • O domínio do problema é bem conhecido
  • A solução é de fácil construção
  • Não envolve muitas pessoas para construir a solução
  • O escopo de futuras mudanças é improvável de crescimento significativo.

Agora vamos supor que temos um sistema para ser construído e que nenhuma destas características se aplicam a ele. Ou seja, temos poucas informações do que precisa ser construído, a solução é tecnicamente complexa, muitos profissionais com diferentes habilidades serão alocados no projeto e o escopo de mudanças tende a ter um crescimento grande.

Neste caso, porque não começamos imediatamente a construir o sistema do zero? Com uma abordagem do tipo vamos lá pessoal? Bem a resposta tem a ver com alguns pontos a considerar. Entre os pontos que devemos considerar estão a complexidade do que vai ser construído, a necessidade de ter uma forma, um documento, para comunicação dos diferentes profissionais envolvidos, o risco de se construir algo diferente do que o cliente espera ou ainda de haver mudança na equipe do projeto e os profissionais que iniciaram o projeto nao serem os mesmos que vão termina-lo.

Definitivamente não é uma idéia inteligente construir sistemas complexos sem antes criar um esboço preliminar, um modelo, uma outra forma de abstração do que vai ser construído. Um arquiteto profissional provavelmente não construiria um modelo para uma casinha de cachorro para o Rex. Mas ele nunca construiria um edifício de 15 andares sem antes elaborar uma ou mais plantas, diagramas e outros modelos que o ajudassem a ter uma visão do que vai ser construído, sob diferentes perspectivas.

 

Pense e responda: Voce toparia viajar em um avião se soubesse que ele foi construido sem modelos que permitissem a simulação do seu funcionamento antes de iniciarem a sua construção? Pois é os modelos ajudam em simulações. Ainda outra pergunta. Topa comprar um apartamento de 120 m2, 3 quartos, sendo um suíte, com varanda, em um edificio novinho em folha e que foi construido do zero, sem plantas, sem modelos, sem planejamento, (  a modelagem ajuda no planejamento da obra), somente com o engenheiro, o mestre de obras e os trabalhadores de construção, trabalhando diretamente na construção, sem antes ter uma ideia de quantos andares o predio deveria ter, quantos apartamentos deveria ter por andar, quantos elevadores, etc? Tenho certeza que voce nao toparia nem a viagem e nem a compra do apartamento não é mesmo?

A modelagem provê uma forma  visualizar o sistema completamente. Ela ajuda os profissionais envolvidos na construção do sistema a se comunicarem usando um meio comum que pode ser entendido por todos, melhorando a comunicação. Ela permite diferentes visões do sistema, sob diferentes aspectos,  de forma que se tenha um entendimento mais claro do que precisa ser feito antes de se começar a construir e desta forma minimiza riscos técnicos, financeiros, ambientais.

Por que modelar software? 

Por muito tempo o desenvolvimento de software tem sido um exemplo de trabalho que necessita de modelagem. Entretanto, por sua natureza abstrata, o software pode ser criado ou alterado com facilidade. Não é necessários compra de matéria prima ou despesas com transporte, embalagem ou coisas deste tipo. Por este motivo os desenvolvedores de software criaram uma cultura de trabalho do tipo "vamos lá minha gente", ou como alguns chamam "Go Horse". Eles criaram algo como construa, altere, construa novamente, corriga, altere, construa de novo, sempre que for necessário, sempre que o usuário encontrar um erro no software, sempre que houver mudanças solicitadas pelo usuário e por aí vai. Ou seja, durante muito tempo se trabalhou com desenvolvimento de software sem modelagem, sem o uso de modelos para orientar o trabalho. Prevaleceu a cultura do "vamos lá minha gente" e seguindo esta cultura de trabalho muitos profissionais questionaram, e ainda questionam,  por que deveríamos perder tempo com modelagem antes de escrever o código? Não seria mais prático partir direto para o código?

A resposta é que atualmente os sistemas de sofware se tornaram muito complexos. Os sistemas precisam ser integrados com outros sistemas, os usuários se tornaram bastante exigentes solicitando demandas grandes que devem ser entregues 'pra ontem' como se diz no escritório, alguns sistemas automatizam processos de negócio com muitas variáveis e eventos dependentes, como a industria por exemplo . A demanda por software aumentou de forma que hoje se escreve software não apenas para informatização de processos administrativos do escritório. Hoje se usa software em todos os setores de atividade humana. Temos hoje sistema de software em praticamente todos os segmentos: industria, serviços, comércio, bancos, governo, etc. Os automóveis por exemplo são equipados com componentes eletronicos que usam software para controlar sistemas elétricos e mecânicos do carro, com uso de sistemas de navegação GPS e outros sistemas de comunicação. O software hoje é muito mais complexo. Alguns sistemas de software são usados em aplicações críticas como suporte de vida em hospitais, controle de plataforma de petróleo, controle de tráfego aéreo, sistemas defesa e por aí vai. Também existem aqueles sistemas de software que não são críticos para manter a vida das pessoas, como em uma CTI de um hospital, mas que são vitais para manter a saúde das empresas. São críticos para o mundo dos negócios. Imagine a criticidade do sistema da bolsa de valores de Wall Street.

Para as grandes empresas, o sistema de software deixou de ser despesa e passou a ser investimento para se obter uma ferramenta estratégica para que a empresa possa ter vantagem competitiva no mercado em relação aos seus concorrentes.

Por estas razões, entre outras, os desenvolvedores precisam entender que criar software não se resume a escrever código. Eles precisam ter um melhor entendimento do que estão construindo e a modelagem de sistemas fornece meios para se conseguir este entendimento. Ao mesmo tempo, a modelagem de sistemas tem que ser ágil, ela não pode fazer as coisas andarem devagar. Afinal os clientes esperam que o sofware seja entregue no prazo, com qualidade e que execute as funções que foram solicitadas pelo usuário.

Para se atingir este entendimento com agilidade vamos ver como a modelagem pode ajudar. A modelagem de sistemas traz benefícios como:

  • Criar e comunicar o projeto de software, através dos modelos, antes de se trabalhar no código
  • Rastrear os modelos para os requisitos, garantindo que o sistema construido irá atender às espectativas do usuário
  • Apoiar o desenvolvimento iterativo, onde os modelos podem ser facilmente e frequentemente alterados

Quando modelar software

 Devemos modelar software sempre que estamos diante de sistemas complexos. Um sistema pode ser complexo quando o entendimento do negócio nao está claro, quando a solução não é fácil de construir, quando envolve muitas pessoas e quando deve ser integrado com muitos sistemas ou depende de muitos serviços de outros sistemas. Nestes casos a modelagem de sistemas pode ajudar com os benefícios já citados acima.

 Como modelar software 

A modelagem de software consiste basicamente na elaboração de modelos que são diagramas que representam diferentes aspectos do sistema a ser construido e permitem diferentes analises e visões do mesmo problema. Modelar é construir modelos constituidos de diagramas que refletem o problema a ser resolvido.  Existem diagramas que representam a estrutura do sistema, outros representam o aspecto dinamico, isto é, o comportamento que o sistema deve ter para atingir seus objetivos. Atualmente todo o trabalho de modelagem de software é feito com a UML ( Unified Modeling Languagem ). A UML é a notação padrão da industria de software para a modelagem de sistemas orientados a objeto. Atualmente em sua versão 2 a UML é uma notação padrão e deve continuar sendo o padrão da industria por muitos anos. Um sistema modelado com a UML deve ter pelo menos um diagrama de casos de uso e um diagrama de classes. Opcionalmente pode ter outros diagramas como os de sequencia e de máquina de estados. Voce nao precisa usar todos os diagramas da UML quando for fazer a modelagem do sistema, até porque a modelagem não deve se tornar um peso para o sistema. Use apenas os diagramas que foram necessários para o seu sistema. 

Conclusão 

O desenvolvimento de software se tornou complexo com o passar dos anos e hoje os sistemas de software estão presentes em todas as atividades humanas. Desenvolver software hoje, com a complexidade que é exigida, requer que o desenvolvedor tenha uma compreensão clara do que deve ser desenvolvido, um melhor entendimento do negócio, requer que a comunicação entre os membros da equipe seja eficiente e objetiva, requer que seja possivel mapear as necessidades do usuário em um formato que possa ser compreendido pelos usuários sem ambiguidades. Em todos estes aspectos os modelos funcionam como documentos que ajudam na compreensão do negocio, tornam a comunicação eficiente e servem como meio de comunicação com o usuario. A adoção da modelagem de sistemas é crucial em se tratando de sistemas complexos como os que são desenvolvidos hoje em dia, sobretudo com o desafio de se desenvolver sistemas integrados, com comunicação com serviços web, que sejam multi-plataforma e com suporte a mobilidade.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

—————

Voltar


Contato

Fernando De Siqueira