2.3 METODOLOGIA DE DESENVOLVIMENTO DE SOFTWARE
2.3.1 Rational Unified Process – RUP
Uma metodologia extremamente utilizada em grandes equipes é a Rational Unified Process (RUP, 2007). O RUP é uma metodologia com seus valores voltados à organização, gerenciamento, documentação e controle.
O Rational Unified Process® (também chamado de processo RUP®) é um processo de engenharia de software que oferece uma abordagem baseada em disciplinas para atribuir tarefas e responsabilidades dentro de uma organização de desenvolvimento. Sua meta é garantir a produção de software de alta qualidade que atenda às necessidades dos usuários dentro de um cronograma e de um orçamento previsíveis. (IBM, 2007)
Figura 5 – Conceitos básicos do RUP Fonte: RUP (2007)
O RUP, é um modelo de desenvolvimento de software interativo, incremental, orientado a objetos, com foco na criação de uma arquitetura robusta, analise de risco e utilização de casos de uso para o desenvolvimento.
O RUP, esta dividido em duas dimensões principais, uma representa a parte estática com os principais processos envolvidos no desenvolvimento, e uma segunda dimensão que focaliza a parte dinâmica do processo onde estão localizadas as fases do RUP, conforme figura abaixo:
Figura 6 – Visão Geral do RUP Fonte: RUP (2007)
A primeira parte conhecida como estática com base no RUP (2007), é dividida em nove disciplinas, são elas:
• Modelagem de Negócios: A modelagem de negócio é utilizada para entender a estrutura e a dinâmica da empresa onde o sistema será implantado, serve também para entender os problemas atuais e identificar possíveis melhorias, além de assegurar que os usuários tenham conhecimento da empresa como um todo.
• Requisitos: Os requisitos são responsáveis por estabelecer e manter a concordância entre os clientes e envolvidos no projeto sobre o que o sistema deve fazer, define as fronteiras do sistema, fornece a base para planejar as iterações, estima o custo e tempo do projeto e define uma interface de usuário para o sistema.
• Análise e Design: Esta disciplina tem como meta transformar os requisitos em um design do sistema, desenvolvendo uma arquitetura moderna, adaptando o design para que ele corresponda ao ambiente de implementação.
• Implementação: A implementação tem por objetivo definir a organização do código em termos de subsistemas de implementação sob forma de camadas, além de implementar as classes e os objetos como
componentes do sistema, testar os componentes individualmente e integrar os resultados produzidos individualmente ao sistema principal. • Teste: Esta disciplina se ocupa de localizar e documentar defeitos
referentes a qualidade do software, validar as suposições feitas na fase de design e requisitos e verificar se os requisitos foram implementados de forma adequada.
• Implantação: Descreve as três formas possíveis de implantação do sistema, sendo a primeira a instalação personalizada, a segunda o produto em uma forma compactada e a ultima o acesso pela web. Em cada uma das formas de implantação a ênfase é testar o produto no local onde ele foi desenvolvido, fazendo-se o teste beta antes de disponibiliza- lo ao cliente.
É possível observar que a fase com maior volume de atividades é a de transição, mas algumas atividades ocorrem em fases anteriores ao planejamento e preparação para implantação.
• Gerenciamento de configuração e mudança: Disciplina responsável pela identificação dos itens de configuração, restrição de mudanças, auditoria e definição do gerenciamento das configurações.
• Gerenciamento de Projeto: Envolve a análise dos objetivos da concorrência, gerência de riscos e superação de obstáculos para liberar com sucesso o produto conforme as necessidades do cliente.
• Ambiente: Disciplina responsável pelas atividades de suporte a equipe de desenvolvimento, através de processos e ferramentas que orientam o desenvolvimento de software.
A segunda parte da divisão feita pelo o RUP é denominada de dinâmica e esta dividida em quatro fases denominadas de Iniciação, Elaboração, Construção e Transição. E com base em RUP (2007), elas são descritas uma a uma da seguinte forma:
Figura 7 – As fases e os marcos de um projeto do RUP Fonte: RUP (2007)
A passagem pelas quatro fases completam um ciclo de desenvolvimento, além de produzir a geração de software. Os ciclos que seguem após o ciclo inicial são denominados de ciclos de evolução.
Figura 8 – Ciclo de desenvolvimento do RUP Fonte: RUP (2007)
• Iniciação: Definir os objetivos dos ciclos de vida do projeto, sendo que esta fase tem muita importância nas novas implementações, onde os riscos de negócio e de requisitos precisam ser bem tratados para não comprometer o andamento do projeto.
• Elaboração: Criar sustentação para a arquitetura do sistema, além de fornecer uma base estável para a fase de construção, isso é possível através de um exame a fundo nos requisitos que tem mais impacto na arquitetura do sistema, fazendo uma avaliação de risco sobre estes. • Construção: Essa fase é um processo de manufatura, com ênfase no
gerenciamento de recursos e controle de operações para otimizar custos e qualidade. Aqui tudo que até então era propriedade intelectual passa para a implementação prática do que foi visto anteriormente.
• Transição: Esta fase tem como objetivo principal, garantir que o produto que esta sendo disponibilizado, esta pronto para ser manipulado pelos usuários finais, envolvendo atividades de pequenos ajustes e feedback com os usuários.
Além das características apresentadas até aqui, o RUP possui uma forte visão baseada em papéis.
Segundo IBM (2007) Um papel é uma definição abstrata de um conjunto de atividades executadas e dos respectivos artefatos.
No RUP esses papéis são desempenhados por uma pessoa ou grupo de pessoas que trabalham em equipes, eles descrevem como as pessoas se comportam dentro do projeto, além de definir suas responsabilidades, são eles:
• Analistas: Lidera a identificação de requisitos e a modelagem de casos de uso.
• Desenvolvedores: Organizam os papéis envolvidos principalmente no design e desenvolvimento de software. Estão sub-divididos em designers de Cápsula, Revisor de Código, Designers de Banco de Dados, Implementador, Integrador, Arquiteto de software, Revisor de Arquitetura, Revisor de Design, Designer e Designer de Teste.
• Testadores: Responsável pelos testes, conduzindo e registrando os resultados dos testes, incluindo a Identificação da abordagem ideal para realizar o teste, testes individuais, configuração e execução dos testes e análise de erros de execução.
• Gerentes: Organizam os papéis envolvidos principalmente no gerenciamento e na configuração do processo de engenharia de software. Esse papel de forma geral é responsável por dar suporte ao desenvolvimento, fornecendo infra estrutura geral de gerenciamento, sendo que é sub dividido em: Engenheiro de Processo, Gerente de Projeto, Gerente de Controle de Mudança, Gerente de Configuração, Gerente de Implantação, Revisor do Projeto e Gerente de Testes.
• Outros: É definido como qualquer pessoa que participa e afeta o resultado final do produto, desde o cliente passando pelos investidores, acionistas do projeto até o escritor da documentação.
O RUP baseia-se na arquitetura do software, onde se define a visão geral do software e seus módulos. Logo nas primeiras iterações do projeto se define o protótipo da arquitetura, e o desenvolvimento a seguir vai complementando esta arquitetura.
O RUP oferece um conjunto de melhores práticas para o desenvolvimento de software como atividades, processos, métodos e uma linguagem de modelagem. No RUP as atividades são bem definidas, atribuídas a papéis, com documentação definida, interdependências, guias de execução e diagramas da Unified Modeling Language – UML.
No RUP existe preocupação constante com o treinamento e capacitação dos integrantes do projeto, sendo que após a preparação de todo o ambiente para desenvolvimento do projeto, são realizados workshop.
Segundo RUP(2007), a finalidade de um workshop é fazer com que os participantes do projeto fiquem informados acerca de como usar o novo processo e as novas ferramentas o mais rápido possível.
O workshop não substitui os treinamentos padrões, denominados pelo RUP como plano de treinamentos, que são quaisquer treinamentos especiais necessários aos integrantes da equipe do projeto, com as datas-alvo identificando quando os treinamentos deverão ser concluídos, e qual conteúdo abordado RUP (2007).
Utilizando-se uma metodologia como o RUP é possível obter qualidade de software, produtividade no desenvolvimento, controle sobre o desenvolvimento e estimativa de prazos e custos do projeto.