UML (Unified Modeling Language) e Unified Software Development Process (Unified Process)

 

Introdução

Sabe-se que o objetivo principal de um Software é dar suporte aos usuários, sendo assim, para o Software alcançar o sucesso, ele deverá atender as necessidades e expectativas de seus usuários e proprietários.

A arquitetura de um Software é parecida com a planta de uma casa em um projeto de construção civil, pois ambas são estudadas e apresentadas a partir de diferentes pontos vista, ou seja, enquanto uma planta de uma casa trás informações sob a visão da alvenaria, rede elétrica e hidráulica, a Arquitetura de Software representa os aspectos estáticos e dinâmicos do sistema.

 

A - UML (Unified Modeling Language)

O UML foi criado para modelar sistemas baseados em software e apesar de ter sido criado para este objetivo específico, atualmente o UML também é utilizado para modelar outros tipos de sistemas, como worflow (fluxo de trabalho), estrutura e comportamento de dispositivos eletrônicos e mecânicos e também para design de hardware.

Resumidamente, além de uma linguagem, o UML é uma ferramenta utilizada pelo Unified Process para gerenciar a documentação e a implementação dos componentes do projeto.

É comum ver alguns desenvolvedores modelando o sistema apenas em suas cabeças, e com base neste modelo mental, codificam os programas. No entanto, esta forma de trabalho pode gerar vários problemas, por exemplo:

·         Dificulta a comunicação do modelo conceitual com o resto da equipe.

·         Algumas informações não podem ser interpretadas apenas analisando-se o código do sistema.

·         Quando o desenvolvedor sair da empresa, processo comum no ciclo de um profissional em uma instituição, o projeto pode perder-se para sempre.

Vale lembrar que o UML não é apenas uma linguagem visual, pois os modelos podem ser utilizados para gerar código escrito em diferentes linguagens através de ferramentas CASE.

 

Visões da Especificação:

         A visão é a projeção/imaginação de um modelo, que oferece uma perspectiva do sistema que omite algumas entidades que são irrelevantes para aquele ponto de vista. Estes elementos são modelos e documentos UML, que destacam certas características da especificação do sistema. As visões proporcionadas pelo UML e a associação entre elas são de extrema importância no processo de desenvolvimento de softwares.

 

         Visão de Caso de Uso à Apresenta uma visão do ponto de vista externo ao sistema, descrevendo seu comportamento sob a perspectiva dos usuários finais e projetistas, capturando os requisitos funcionais que definirão a estrutura do projeto.

 

         Visão de Design à Como produto, apresenta as classes, interfaces, subsistemas e as colaborações, utilizando o vocabulário do problema e da sua solução, identificando os tipos de serviços a serem fornecidos. Os diagramas UML usados para representar seus aspectos são:

- Diagrama de Classes

- Diagrama de Objetos

- Diagrama de Interação

- Diagrama de Seqüência

- Diagrama de Estados e

- Diagrama de Atividades.

 

         Visão de Processo à Exibe o processamento simultâneo (concorrente), através de processos, threads e multi-threads, além de mecanismos de concorrência e sincronização entre sistemas. Os diagramas usados são os mesmos da Visão de Design, mas com foco nas classes ativas, que representam processamento concorrente.

         Visão de Implementação à Corresponde aos componentes, subsistemas e arquivos que serão usados na composição do sistema. Os diagramas UML utilizados para mostrar a estrutura do sistema são:

- Diagrama de Componentes

- Diagrama de Interação

- Diagrama de Seqüência

- Diagrama de Estados e

- Diagrama de Atividades.

 

         Visão de Implantação à Define a alocação dos componentes do sistema nos pontos da rede que formam a topologia de hardware onde o sistema será instalado. Os diagramas utilizados para mostrar os aspectos do sistema são:

- Diagrama de Implantação

- Diagrama de Interação

- Diagrama de Seqüência

- Diagrama de Estados e

- Diagrama de Atividades.

 

As visões citadas acima não existem de forma independente, estando associadas entre si através dos diagramas que as compõem.

 

Finalizando, o UML é normalmente usado para modelar os mais variados tipos de softwares, fornecendo diferentes tipos de visões do sistema. UML também pode ser aplicado em todas as fases do processo de desenvolvimento de um sistema, desde o levantamento de requisitos até os testes finais, passando pela especificação técnica e a implementação.

        

B - Unified Process (Unified Software Development Process)

Este processo define as etapas do projeto e quem executará cada atividade, ou seja, a gerência do projeto de desenvolvimento é regulamentada de acordo com as definições do Unified Process.

O principal objetivo do Unified Process é fazer com que o software seja baseado em componentes, ou seja, o sistema é composto por componentes interconectados entre si. O Unified Process é uma disciplina para gerência de projetos de desenvolvimento de software.

No Unified Process o processo de desenvolvimento é dividido em ciclos, sendo que cada ciclo produz um produto para o cliente. Os ciclos são quatro: abertura, elaboração, construção e distribuição. Cada ciclo, por sua vez, é dividido em processos e os processos são executados através de interações. Cada interação produz uma nova distribuição (release) do produto, e o produto final incluir requisitos funcionais e não-funcionais, especificação técnica do sistema, programas executáveis, manual de usuários e outros elementos.

 

Processos à São as atividades específicas para elaboração da especificação técnica, programação e testes do sistema.

·         Levantamento de requisitos

·         Análise

·         Design

·         Implementação e

·         Testes

Os processos citados acima são executados em todas as fases do projeto, sendo que cada ciclo dará maior ênfase em um ou outro processo.

 

Requisitos à O principal objetivo deste processo é definir as características técnicas, funcionais e estruturais básicas do sistema conforme observações feitas pelo cliente. Seus principais passos são:

·         Listar requisitos candidatos

·         Entender o contexto de negócio

·         Capturar os requisitos funcionais e não funcionais.

Neste momento, todos os requisitos são identificados a partir dos casos de uso.

 

Existem ainda, ações e procedimentos que devem ser seguidos cautelosamente para um projeto de software de sucesso, abaixo vou apenas citá-los, ficando suas explicações para outra oportunidade.

- Elaborar Modelo de Negócio,

- Encontrar Atores e Casos de Uso,

- Priorizar e Detalhar Casos de Uso,

- Prototipar a Interface de Usuário,

- Analisar os Requisitos, Arquitetura, Casos de Uso, Classes e Pacotes,

- Projetar Arquitetura, Casos de Uso, Classe, Subsistemas e Implementação.

- Implementar Arquitetura, Classes e Subsistemas.

- Efetuar testes unitários e conjuntos.