quinta-feira, 18 de dezembro de 2008

Proposta de implantação RUP

Estou postando uma proposta que o meu grupo da pós em Engenharia de Software SOA na disciplina RUP desenvolveu conforme um case real para a implantação de uma metodologia de processos de software.

Introdução

O Rational Unified Process ou RUP é um farmework de processo de desenvolvimento de software completo desenvolvido pela Rational Software. Trata-se de uma metodologia de desenvolvimento iterativa que pode ser descrita como dirigida por casos de uso, riscos e arquitetura. Para muitos desenvolvedores que começam a usar o RUP são conceitos completamente novos, e isto significa que é necessário muito treinamento em projetos onde o RUP é utilizado pela primeira vez. Apenas “apenas ler o livro” não é o bastante.
Este trabalho visa descrever uma proposta de implementação do RUP para a empresa SISC e as vantagens da utilização desse processo definido e projeção de uma melhora na maturidade do processo de desenvolvimento de software e das equipes de desenvolvimento.

SISC

Sediada em uma pequena cidade do sudoeste de Santa Catarina, a SISC é uma empresa de desenvolvimento de software com grande influência na região onde se situa. Com uma carteira de cerca de 500 clientes distribuídos pelo Brasil e Argentina, a SISC possui como carro-chefe um ERP especializado em atacadistas, o SISC Enterprise, responsável por mais de 90% de seu faturamento.
A SISC começou com uma estrutura familiar de administração, porém hoje possui apenas o seu diretor executivo como sócio da empresa e conta com uma administração profissional e funcionários contratados sob o regime CLT.
A equipe da SISC está toda situada em um mesmo local, três andares de um prédio comercial na principal rua da cidade. Os escritórios fora de Dois Irmãos contam apenas com equipes de vendas e alguns técnicos de pré-venda que vez ou outra fazem papel de suporte local aos clientes mais importantes. A equipe de desenvolvimento é dividida pelos módulos, sendo que cada módulo tem um grupo especializado nele

O Contexto de Melhoria de Processos de Software na SISC

A melhoria de processo de software é sempre feita sob um contexto de negócio. Tendo em vista que desenvolvimento de software é a área chave na SISC a implementação de um novo processo deve ser colocado como uma grande evolução nessa área da empresa.
O processo atual de desenvolvimento de software da SISC é iniciado geralmente por um chamado ou uma melhoria solicitada pelo cliente. Essa solicitação é atendida no seu primeiro estágio pela equipe de Análise, que dá início ao preenchimento do PESw, documento base para o acompanhamento do desenvolvimento dos requisitos até o teste final que precede a entrega. A equipe de Análise identifica o módulo afetado e encaminha o PESw ao gerente para aprovação e posteriormente para o cliente para o aceite, após isso são extraídos os casos de uso macro e feito pré-estimativas para ser encaminhado ao arquiteto do módulo. Após isto o arquiteto valida a estimativa apresentada junto ao gerente para que seja passado para a fase de implementação. Em alguns casos o arquiteto de testes produz nessa fase os artefatos para a fase de testes, porém na prática algumas vezes isto acontece junto com a fase de implementação.
Segundo o gerente de desenvolvimento, esse processo funciona bem, salvo quando há trocas de prioridade ou prazos muito apertados. A SISC começa a orientar seu processo visando melhorar a qualidade do seu software, pois já possui dois arquitetos de testes que fazem parte da equipe de Análise, e dois recursos trabalhando na automação dos testes, porém são atividades que iniciaram há pouco tempo e não funcionam como esperado.
Não foi detectada uma forma bem definida para as métricas de estimativas utilizadas, o que pode levar aos problemas com cronogramas apertados. Também não é visto um processo de modelagem detalhado para refinamento das especificações apresentadas no PESw, assim como a utilização de um padrão de projetos ou arquitetura única para o projeto. Outro ponto verificado é a ausência do controle de versões e entregas feitas, embora tenha sido descrito uma tentativa de uso de ferramenta de versionamento, tal experiência não foi produtiva por falta de um planejamento pra utilização da mesma no processo de desenvolvimento.

Desafios e Objetivos

A SISC tem um balanço bastante positivo, mas com as metas de expansão determinadas pelos sócios começa a esbarrar em alguns obstáculos devido ao seu crescimento pouco planejado e estruturado. A diretoria da SISC definiu alguns objetivos para a otimização de processos a ser implantada:
1. Tornar possível o reuso de requisitos;
2. Melhorar a qualidade do produto;
3. Melhorar a produtividade da equipe;
4. Aumentar a capacitação técnica da equipe;
5. Melhorar a forma como são feitos os testes;
6. Entregar quatro atualizações do SISC Enterprise por ano, com melhorias significativas no produto, além das correções de bugs
A conclusão é que a SISC precisa de um processo de desenvolvimento de software bem estruturado que atenda as necessidades de crescimento da empresa e melhoria da qualidade e ritmo de desenvolvimento do produto a fim de suprir os desafios e atingir os objetivos propostos.

Implementação de um novo processo de desenvolvimento

O Rational Unified Process é um processo de engenharia de software. Ele oferece uma abordagem baseada em disciplinas, que nada mais é do que uma coleção de atividades relacionadas a uma área de interesse principal, 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ível.
As disciplinas abordadas pelo RUP são: Modelagem de Negócios, Requisitos, Análise e Design, Implementação, Teste, Implantação, Gerência de Mudança, Gerenciamento de Projeto e Ambiente, onde cada uma delas tem objetivos bem definidos que serão executados por pessoas no projeto com papéis atribuídos e tendo como produto artefatos previamente estabelecidos.
A base do RUP é que ele é dividido nas fases de Iniciação, Elaboração, Construção e Transição ao longo do tempo do projeto onde as disciplinas são distribuídas e irão evoluindo utilizando o conceito de iteração.
Neste documento não entraremos nos detalhes das fases, disciplinas e artefatos, sendo proposto um workshop para isso.
Para que se possa ter uma visão mais clara da interação entra as fases e as disciplinas do RUP, apresentamos o gráfico abaixo:
Podemos resumir que RUP é baseado em um conjunto de princípios de desenvolvimento de software e melhores práticas como por exemplo:
1. Desenvolvimento de software iterativo
2.
Gerenciamento de requisitos
3. Uso de
arquitetura baseada em componente
4. Modelagem visual de software
5. Controle de alteração no software
Analisando o processo atual da SISC, visando uma melhoria nos processos e mais qualidade no desenvolvimento de software propomos uma customização do RUP adequando às necessidades da empresa.
As disciplinas do RUP nos permitirão atacar de uma maneira objetiva os problemas detectados no processo de desenvolvimento e principais reclamações de clientes.
Para implantação do RUP, propomos que algumas disciplinas tenham mais ênfase do que outras. A escolha dessas disciplinas se dará devido à prioridade das necessidades da SISC.
· Modelagem de negócios: entender os problemas atuais da SISC e identificar as possibilidades de melhoria
· Requisitos: padronizar e documentar o levantamento de requisitos que já é realizado hoje
· Análise e Design: no momento não é necessária implementação desta disciplina pois o software já está desenvolvido. Porém para inclusão de mais módulos ou novos projetos ela deverá ser implementada.
· Teste: padronizar e documentar os procedimentos de testes.
· Implantação: no momento essa disciplina não será implementada pois não foram identificados problemas na implantação do software nos clientes.
· Gerência de Mudança: um dos problemas detectados foi em relação as customizações do software nos clientes e a difícil manutenção disso. Com esta disciplina este problema será solucionado permitindo a satisfação dos clientes finais, maior organização da SISC, maior aproveitamento do tempo devido a não ter mais retrabalhos e atingir a meta de liberação de mais builds por ano.
· Gerenciamento de Projeto: enfatizar os aspectos de um processo de desenvolvimento iterativo como gerenciamento de risco, planejamento de um processo iterativo e monitoramento do mesmo.
· Ambiente: é nesta disciplina que faremos a customização do RUP para a SISC.

Estratégia de implementação

Alterar o processo de desenvolvimento em uma empresa é uma tarefa árdua e possui diversos fatores críticos de sucesso, sendo que o mais importante deles é o comprometimento das partes envolvidas. É necessário que a diretoria entenda perfeitamente a extensão das mudanças feitas e que esta permeia por todo o departamento de desenvolvimento, por isso é de extrema importância que a diretoria participe ativamente principalmente na parte inicial onde serão definidos e refinados quais objetivos deverão ser alcançados e as expectativas para cada objetivo.
Sabemos que a simples apresentação de um processo não será suficiente pois este somente mostra o que fazer mas não como. Por isso propomos em conjunto com um projeto piloto serem feitos treinamentos nas ferramentas que serão selecionadas posteriormente para auxilio da metodologia junto com a definição do projeto piloto, integrando assim os conhecimentos das ferramentas com a metodologia e processo.
Mediante análise da empresa SISC, é notado que devido a sua complexidade é impossível implementar o RUP em todos os projetos pilotos de uma única vez. Por isso é proposta uma abordagem de implementação em fases. Serão definidos cerca de 3 projetos a ser usado como piloto para a implementação e adequação do RUP, tendo também como fim envolver outras partes do departamento de desenvolvimento onde também será construída uma base de profissionais treinados na metodologia que servirão de mentores para a disseminação do processo para o restante dos projetos.
O projeto piloto em si deve ter algumas características chave:
· Riscos técnicos gerenciáveis, o projeto não pode ser de altíssimo risco tendo em vista não colocar muita pressão sobre o mesmo prejudicando o processo de aprendizagem
· Prioridade alta, porem o projeto não pode ser de pouca importância para que não seja deixado de lado por qualquer outra prioridade e também a fim de utilizar o processo a ser implementado em projetos que sejam mais comuns no departamento de desenvolvimento
· Equipe comprometida, este é um ponto chave de sucesso pois para que o novo processo seja facilmente implementado é necessário que a equipe tenha interesse em aprender e não seja resistente a mudanças
· Cronograma realista, a data de entrega não pode ser critica pois é esperado que os projetos pilotos tenham uma produtividade menor nas fases iniciais dos primeiros projetos pois é necessário o tempo para aprender. Nós estimamos que seja necessário aproximadamente 4 semanas extra para aprendizagem do novo processo, ferramentas e métodos.
É provado que a melhor forma de aprendizagem é a combinação de teoria e prática, por isso propomos que alem de ser fornecido material de suporte, antes do início do projeto todos os envolvidos deverão passar por um workshop “RUP na SISC” para entender o que será alterado e por quê. Após isso um treinamento de 2 dias com os fundamentos do RUP para que seja iniciado o projeto piloto, então serão feitos treinamentos de metodologias e ferramentas respectivas à fase que o projeto piloto se encontra. Além disso um especialista deverá cuidar da parte de mentoring a fim de sanar eventuais dúvidas teóricas durante o processo de desenvolvimento do projeto e acompanhar o desenvolvimento do uso do novo processo.
Durante o projeto piloto serão apresentados avaliações dos resultados obtidos mostrando os pontos de melhora da produtividade e qualidade do software, além dos objetivos aqui apresentados que já foram alcançados. Depois de estabelecido um senso comum sobre qual a customização do processo que melhor se aplica a SISC e deixado isto bem definido é feita uma preparação do ambiente para a utilização desse processo nos outros projetos novos. Nesta fase os participantes dos projetos pilotos serão de grande importância para serem mentores e auxiliar na utilização do processo durante os novos projetos.

Resultados Esperados

Em longo prazo os efeitos esperados pelo uso de um novo processo de desenvolvimento são:
Requisitos de negócio bem definidos como entrada do processo
Melhor adequação as reais necessidades do cliente na hora da entrega
Menor tempo de entrega para as versões
Mais projetos entregues dentro do prazo e orçamento
Redução dos custos de re-trabalho
Melhor manutenção do produto
Um processo de desenvolvimento de aplicações comum
Acreditamos que seja possível uma grande melhora significativa nos resultados da empresa e qualidade do produto em curto-médio prazo, sendo que no prazo de 2 a 3 anos todos os objetivos aqui apresentados estejam completamente alcançados e possibilitando um controle bem maior sobre as solicitações dos diversos clientes possibilitando assim uma grande melhoria na qualidade de atendimento dos chamados como também uma fácil reutilização das customizações já feitas.

Nenhum comentário:

Postar um comentário