Apresentação

 

Continuamente, por conta da disponibilidade de hardware mais poderoso, os desenvolvedores de software se vêem obrigados a encarar desafios de desenvolvimento de complexidade cada vez mais elevada. Isso requer a capacidade de administração dessa complexidade. Não conseguir fazê-lo é causa de fracasso em muitos desenvolvimentos.

A modelagem orientada a objetos, praticada nas etapas de análise e projeto, é um recurso útil para a administração da complexidade, na medida em que permite, ao longo de todo o desenvolvimento, tratar um software sob diferentes pontos de vista, explorando diferentes níveis de abstração.

Para capacitar-se como desenvolvedor de software orientado a objetos com habilidade de desenvolver projeto de software – e não apenas código – quatro competências são necessárias:

·        Conhecer os conceitos referentes à modelagem: antes de modelar, é preciso ter claro por que e para que modelar. Isso envolve desde noções de Engenharia de Software, do paradigma de orientação a objetos, até a obtenção de clareza da utilidade da modelagem em um processo de desenvolvimento, bem como dos requisitos para uma modelagem bem sucedida;

·        Conhecer uma linguagem de modelagem: atualmente, o padrão internacionalmente adotado para modelagem orientada a objetos é UML – especificamente, a segunda versão. É preciso conhecer seus treze tipos de diagramas, isto é, seus elementos sintáticos e sua aplicabilidade em um processo de modelagem;

·        Saber que passos seguir: o desenvolvimento de software – e a modelagem como parte do processo – consiste em uma sucessão de esforços que, gradualmente constroem uma solução para um problema inicialmente definido. Modelar demanda seguir um caminho lógico de construção da especificação. Conhecer esse caminho é um requisito essencial para o desenvolvimento. É o complemento do conhecimento de uma linguagem de especificação: saber usá-la;

·        Avaliar o que for produzido: conhecer uma linguagem de especificação (como UML) e as etapas de um procedimento de modelagem não garante um desenvolvimento com resultado satisfatório. É inerente ao desenvolvimento de software que decisões tenham que ser tomadas com certa freqüência, ao longo do processo. Muitas vezes, sem muita clareza quanto a uma opção ser melhor ou pior que outra. Pequenas decisões ruins ao longo das etapas podem resultar em fracasso do desenvolvimento, se o desenvolvedor não se der conta disso em tempo. Assim, é essencial ter a capacidade de buscar inconsistências na especificação: que tipos de inconsistências devem ser procurados, onde, como, quando. Além disso, especificações de projeto podem apresentar imperfeições que não caracterizam inconsistência. Avaliar o que foi produzido inclui a busca da maximização da qualidade do processo de desenvolvimento, isto é, buscar as alternativas que privilegiem a qualidade da especificação.

O objeto de atenção do presente livro são os dois últimos aspectos. Os dois primeiros constituem o foco da obra anterior do autor: “UML 2 em modelagem orientada a objetos” (SILVA, 2007) e são tratados aqui de forma sumária. Os dois livros compõem um curso completo de modelagem orientada a objetos com UML.

O livro é organizado da seguinte forma:

·        O capítulo 1 apresenta as noções elementares de modelagem orientada a objetos, os pontos de vista a explorar no processo de modelagem e o estabelecimento de critérios mínimos para considerar uma modelagem completa;

·        Os capítulos de 2 a 9 contêm o detalhamento das oito etapas do processo de modelagem;

·        O capítulo 10 trata a abordagem de desenvolvimento orientado a componentes, alternativa aplicável a sistemas de mais alta complexidade e que estabelece níveis adicionais de abstração na estruturação do sistema;

·        Os capítulos de 11 a 14 são voltados ao aprimoramento da modelagem produzida a partir dos passos apresentados nos capítulos anteriores. Isso inclui a organização da especificação de modo a privilegiar sua legibilidade e a avaliação de consistência e de qualidade. Nesse contexto, as abordagens padrões e frameworks orientados a objetos são apresentadas como recursos de desenvolvimento que privilegiam o reuso de software e a construção de soluções bem estruturadas;

·        Três apêndices apresentam a linguagem UML de forma sumária, a especificação de requisitos tratada nos exemplos de modelagem do livro e um resumo diagramático das etapas do processo de modelagem.

O conteúdo apresentado se distingue de outras publicações voltadas a ensinar modelagem orientada a objetos pelos seguintes motivos:

·        Ser baseado e estar em sintonia com a segunda versão de UML, explorando toda a expressividade dessa linguagem de especificação, isto é, fazendo uso de seus treze tipos de diagrama ao longo das etapas do processo de modelagem – e esclarecendo quando um determinado tipo de diagrama é adequado ou não a um certo contexto.

·        Tratar a inserção de aspectos computacionais, originados de soluções tecnológicas específicas, no processo de modelagem – como interação com outros sistemas computacionais ou classes reusadas para interface gráfica, persistência ou outros aspectos. A idéia é que a modelagem não ignore especificidades tecnológicas – atendo-se apenas à modelagem do domínio do problema – mas as incorpore.

·        Preocupar-se com a geração de código. O alvo do processo, de modelagem é um código orientado a objetos, preferencialmente bem estruturado, que compile e execute sem erros e que cumpra os requisitos estabelecidos. Assim, a geração de código é tratada como uma das etapas do processo de modelagem, executada junto com as demais, de forma iterativa. A modelagem subsidia a codificação, mas também o código produzido é fonte de informação para o aperfeiçoamento da própria modelagem.

·        Tratar desenvolvimento orientado a componentes, explorando expressividade adicional introduzida pela segunda versão de UML. Isso inclui tanto o desenvolvimento de componentes, como a concepção de software como uma coleção de componentes. Tratar essas questões não é algo trivial a não há uma forma amplamente aceita de fazê-lo. Neste livro são estabelecidos os requisitos para uma modelagem completa de componentes individuais e de artefatos de software construídos a partir da conexão de componentes.

·        Incluir avaliação de consistência e de qualidade como parte do esforço de desenvolvimento. Os dois focos de avaliação envolvem o conhecimento de pilares conceituais do paradigma de orientação a objetos, que originam tanto os critérios de consistência quanto recomendações para a maximização de qualidade. Mostra-se como essas noções dão origem a abordagens voltadas à maximização do reuso de software, como padrões e frameworks orientados a objetos.

Este livro é voltado a quem deseja aprender modelagem orientada a objetos, seja no contexto de um curso regular (de graduação, pós-graduação ou treinamento empresarial) ou como autodidata.  A recomendação é que os capítulos não sejam apenas lidos, mas também praticados. A forma de fazê-lo é desenvolvendo um sistema computacional. Escolha um, modele e implemente. A avaliação do resultado é simples: é preciso produzir uma especificação de projeto completa, e um código consistente com ela que execute sem erros e que cumpra os requisitos estabelecidos. É desta forma que o autor ensina modelagem orientada a objetos nos cursos de graduação, pós-graduação e treinamento empresarial que ministra.

 

Ricardo Pereira e Silva