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
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
·
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
·
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