Processo unificado

O processo unificado (PU) , ou "  processo unificado (UP)  " em inglês, ou "  Processo de Desenvolvimento de Software Unificado (USDP)  " é uma família de métodos de desenvolvimento de software orientados a objetos. É caracterizado por uma abordagem iterativa e incremental, orientada por casos de uso e centrada na arquitetura e modelos UML . Ele define um processo que integra todas as atividades de design e produção em ciclos de desenvolvimento composto por uma fase de criação, uma fase de desenvolvimento, uma fase de construção e uma fase de transição, incluindo cada uma várias iterações.

Histórico

Em 1987, Ivar Jacobson criou a Objectory AB para comercializar um método de desenvolvimento orientado a objetos chamado Objectory Process. Este método é o resultado de uma abordagem centrada no componente que ele desenvolveu desde 1967 na empresa Ericson . Objectory é baseado em casos de uso , um conceito criado por Jacobson. O método segue então uma abordagem sistemática visando por uma sucessão de modelos OOSE para chegar à realização do software.

Em 1992, Grady Booch , funcionário da empresa Rational Software, publicou o método Booch de desenvolvimento orientado a objetos. Isso consiste em uma linguagem de modelagem gráfica, um processo de desenvolvimento iterativo e um conjunto de melhores práticas .

Em 1995, a Rational Software adquiriu a Objectory AB e fundiu os dois métodos de desenvolvimento sob o nome Rational Objectory Process. A empresa também contratou James Rumbaugh , criador da linguagem de modelagem OMT .

Em 1997, a "linguagem de modelagem unificada", UML , se tornou um padrão em análise e design orientado a objetos , seguindo a unificação das três principais notações da época, OOSE, Booch e OMT, todas primeiro dentro da Rational Software, depois uma consórcio maior. A nova notação é então integrada ao Rational Objectory Process (versão 4.1).

Em 1998, após a aquisição de várias outras empresas especializadas em ferramentas de engenharia de software, a Rational Software melhorou seu método e o renomeou “  Rational Unified Process (RUP)” (versão 5.0). É um método proprietário protegido por uma marca registrada.

Em 1999, Jacobson, Booch e Rumbaugh publicaram “O Processo Unificado de Desenvolvimento de Software” com o objetivo de disseminar as idéias por trás do RUP mais amplamente para o público. Eles ressaltam que se trata de uma unificação das abordagens de desenvolvimento e dos modelos usados, e que o processo incorpora um grande número de contribuições de especialistas metodológicos da Rational Software e de centenas de outras empresas.

Princípios

Características

O processo unificado é um método de desenvolvimento de software caracterizado por:

O processo unificado atende à definição de um processo de negócios . Pretende assim garantir um ciclo de desenvolvimento com sequências sistemáticas e repetíveis de atividades baseadas em artefatos bem definidos, facilitando a integração de novas pessoas nas equipas. O método considera ainda que o produto consiste não apenas no código, mas também em todos os elementos que contribuem para a sustentabilidade e subsequentes evoluções do software.

Ciclo de vida do projeto

O processo unificado é cíclico: visa, por meio de uma sucessão de projetos, fornecer primeiro uma versão viável de um produto e depois versões publicáveis ​​sucessivas (“release” em inglês).

Cada projeto tem um ciclo de vida em quatro fases, cada uma subdividida em várias iterações:

O processo unificado defende uma abordagem orientada a riscos, buscando por meio de várias iterações resolver as maiores incertezas como uma prioridade.

Cadeia de atividades

O processo unificado oferece as seguintes sequências de trabalho, que podem ser configuradas de acordo com as necessidades do projeto:

O termo "disciplina" também é usado para designar sequências genéricas.

Ao contrário do modelo em cascata, que define fases distintas para cada uma dessas sequências de atividades, o processo unificado integra essas atividades por meio de diferentes iterações e fases do projeto. O processo unificado foi projetado para lidar com sistemas complexos baseados em componentes. Portanto, encontramos ideias do ciclo V , como uma visão arquitetônica baseada em componentes, a integração do sistema e os diferentes níveis de validação, mas sem a restrição de organizá-los em estágios sequenciais.

O processo unificado também define funções para os atores envolvidos nessas atividades (por exemplo, arquiteto, engenheiro de componentes, designer de interface de usuário, etc.). No entanto, os autores enfatizam que esses são papéis e não pessoas; o mesmo membro da equipe pode, portanto, combinar várias funções. O processo unificado finalmente define uma série de artefatos, ou seja , as entregas do projeto.

Planejamento iterativo

O processo unificado exige um planejamento iterativo no qual “o plano precede a ação”.

O princípio é que um plano geral determina de acordo com a complexidade do projeto as iterações necessárias para cada fase e posiciona as fases no tempo. Este plano geral não inclui detalhes por iteração. As iterações são planejadas gradualmente à medida que o projeto avança. A iteração atual é planejada detalhadamente quando é iniciada, com um cronograma e um objetivo de conteúdo (caso de uso a ser processado, mudanças a serem feitas nas entregas de iterações anteriores, componentes a serem executados, etc.). O plano para a próxima iteração é preparado quando os elementos são conhecidos. Portanto, é primeiro estimado em linhas gerais e, em seguida, refinado de acordo com as informações descobertas durante a iteração atual.

No caso particular da fase de criação, o esboço do projeto é geralmente muito incerto para permitir um planejamento realista. O plano para a primeira iteração desta fase deve, portanto, ser visto como uma tentativa de plano que deve ser ajustado, se necessário. No final desta fase, é estabelecida a viabilidade do desenvolvimento e pode ser elaborado o plano global correspondente à visão do projeto.

Operação

O controle de caso de uso usa os diagramas de caso de uso ( DCU ) suplementados por descrições textuais. A partir das DCUs, são derivados os modelos de análise, design, implantação, implementação e teste. Destes modelos emerge a arquitetura do sistema. Uma abordagem sistemática também é proposta para deduzir casos de uso das classes de análise e design de acordo com o esquema de controle de fronteira de entidades . São também os casos de uso que permitirão o desenvolvimento dos cenários de teste, já que o novo software deverá possibilitar o cumprimento dos casos de uso planejados. As DCUs são, assim, os modelos que garantem a coerência do processo de desenvolvimento ao servir de fio condutor para todas as atividades.

As atividades de modelagem são baseadas em UML . Esta linguagem de modelagem cobre aspectos estruturais e dinâmicos da arquitetura e design de software. Facilita a modelagem de componentes usando uma abordagem orientada a objetos . Os criadores da UML também estão na origem do processo unificado, que deveria complementar a UML com uma abordagem de desenvolvimento completa e genérica .

A arquitetura do sistema é projetada desde o início de uma forma muito pragmática  : adapta-se ao contexto de trabalho, às necessidades do utilizador, às possibilidades de reutilização ( reutilização ) de bibliotecas ou “tijolos” pré-existentes. O desenvolvimento da arquitetura é, em primeiro lugar, bruto e independente dos casos de uso (no entanto, garantiremos que isso não impeça sua realização), então, um subconjunto de funções essenciais é identificado e a arquitetura é repetida e detalhada de acordo com esse conjunto. Da especificação à precisão do caso , a arquitetura evolui, eventualmente incluindo novos casos, e assim por diante, até que a arquitetura alcance um nível de desenvolvimento alto e estável o suficiente para dar origem ao desenvolvimento de um protótipo que será apresentado ao cliente completando assim uma iteração.

Uma iteração é uma sucessão de sequências de atividades. Um incremento é um avanço nos estágios de desenvolvimento. A cada iteração encontramos as atividades de especificação de necessidades, design, até a prototipagem executável. Uma nova iteração, por exemplo, após demonstrar o protótipo aos usuários, retomará a especificação esclarecendo ou corrigindo-a e, em seguida, retomando o desenvolvimento, etc.

Os incrementos são definidos pelo projeto e cada incremento adicionará uma nova funcionalidade. Os incrementos podem seguir diferentes casos de uso, por exemplo. A dificuldade residirá no fato de, em última instância, combinar os subprojetos ou incrementos e respeitar suas interdependências e a consistência geral do produto previsto. É, portanto, também um desenvolvimento na forma de componentes que é proposto. Ele fará o melhor uso das contribuições das tecnologias de objetos.

PU integra os dois objetivos a fim de minimizar os riscos de má interpretação em relação às necessidades, bem como o risco de desenvolvimentos infinitos, indefinidos, mal definidos ou inacabados: Aqui o usuário pode corrigir-se, nos protótipos, a direção tomada por desenvolvimento . Desde o início, resultados tangíveis são obtidos, mesmo que sejam apenas prototípicos. Algumas implementações de PU consideram os protótipos como versões completas do sistema final. As funções subordinadas podem muito bem, em tal perspectiva, ser abandonadas ao longo do caminho por questões de custos ou prazos, por exemplo . Finalmente, se o usuário precisa de mudanças durante o desenvolvimento, essa evolução pode ser, até certo ponto, integrada. Este não é o caso do desenvolvimento sequencial.

PU organiza o ciclo de vida agrupando as iterações (especificações, análise, design, implementação e teste) em fases. Essas fases são iniciais (criação), intermediárias (desenvolvimento, construção) ou finais (transição para o usuário ou colocação em produção). Estas fases eliminam a produção do produto como uma sucessão temporal (sequências), mas incluem todas as tarefas estruturantes do projeto (refinamento sucessivo, iterações) e propõem uma organização matricial do volume total de atividade prevista: é óbvio que no fase de criação, mais tempo será dedicado à análise das necessidades do que ao teste; inversamente, na fase de transição, os testes ainda estão em andamento enquanto a análise das necessidades e seu refinamento foram teoricamente concluídos desde a fase de construção.

Variantes do processo unificado

O processo unificado é configurável e, portanto, pode ser adaptado às especificidades dos projetos e organizações em que é empregado. Existem, portanto, muitas especializações do método geral. Várias outras variantes fundamentais também surgiram e experimentaram uma distribuição mais ampla.

Nomes comuns e abreviações são:

Acrônimo Denominação Primeira versão Autor (es) Particularidades
PODERIA Processo Unificado 1999 Ivar Jacobson , Grady Booch e James Rumbaugh preceitos gerais do método
PRA CIMA Processo Unificado 1999 (ver PU) Nome em inglês de PU
USDP Processo de desenvolvimento de software unificado 1999 (ver PU) outro nome em inglês para PU, após o título do livro que publicou o método
OU Processo Racional Unificado 1998 Rational Software (IBM), equipe RUP sob a direção de Philippe Kruchten Método proprietário da Rational Software (IBM) no qual o PU foi baseado
EUP Processo Corporativo Unificado 2000 Scott Ambler e Larry Constantine integra as fases e atividades de pós-implementação para cobrir o ciclo de vida do software em produção até que seja retirado da produção; o nome é uma marca comercial.
XUP eXtreme Unified Process híbrido integrando UP com programação extrema .
PRINCIPAL Processo Agile Unificado 2005 Scott Ambler híbrido combinando um subconjunto de UP com preceitos de métodos ágeis - distribuído como um site que documenta o método, mas não é mantido desde 2006
2TUP Processo unificado de duas trilhas Valtech provavelmente levará em consideração os caprichos e restrições vinculadas às mudanças perpétuas e rápidas de SI das empresas
EssUP Processo Unificado Essencial 2006 Ivar jacobson alternativa enxuta de UP integrando preceitos ágeis e disseminada por sua empresa Ivar Jacobson Consultoria. O EssUP é constituído por um conjunto de práticas ditas "essenciais", que podem ser livremente selecionadas e combinadas, oferecendo assim uma grande flexibilidade na sua aplicação.

OU

O Rational Unified Process (RUP) é a origem do processo unificado e, como tal, é a implementação mais conhecida. É um produto e marca comercial da Rational Software, que entretanto foi adquirida pela IBM. O método é entregue chave na mão e vem acompanhado de ferramentas para orientar as equipes na adaptação e execução do processo.

O framework de desenvolvimento de software proposto pelo RUP responde às características do processo unificado: é um método de desenvolvimento guiado pelas necessidades do usuário, centrado na arquitetura de software, iterativo e incremental, implementando UML para modelagem.

O RUP estende as cadeias de atividades para abranger também

PRINCIPAL

O Agile Unified Process (AUP) é uma variante simplificada do UP que incorpora práticas ágeis como o desenvolvimento orientado a testes (TDD). Assim, assume as fases sequenciais e os marcos de final de fase do processo unificado, mas fortalece a abordagem ágil ao recomendar uma atualização do plano no final de cada fase, a implementação de uma versão potencialmente publicável no final de cada fase. fim de cada iteração, e a aplicação dos princípios do manifesto ágil . Portanto, o uso de modelos como um artefato de documentação é limitado ao modelo de requisitos e ao modelo de design. AUP enriquece a modelagem de requisitos com modelos de negócios. O método ainda recomenda concentrar a modelagem nos contornos e evitar detalhes que poderiam ser facilmente deduzidos do código. AUP está disponível gratuitamente online como um arquivo compactado, mas não é mantida desde 2006.

EssUP

O Essential Unified Process (EssUP) busca tornar mais leve o processo unificado que, embora iterativo e incremental, é frequentemente percebido como muito complicado e formalizado. EssUP adota o princípio de separação de interesses para isso . Em vez de um processo monolítico, o EssUP define um conjunto de práticas independentes que podem ser combinadas livremente para formar um processo apropriado ao contexto.

As práticas identificadas pelo EssUP são agrupadas em 8 famílias de assuntos: equipe, produto, ciclo de vida, iterações, casos de uso 2.0, arquitetura, componentes e execução de teste. O EssUP está disponível online.

Posicionamento

Comparação com outros métodos

O processo unificado usa fases sequenciais como projetos em cascata . No entanto, as fases não são estruturadas artificialmente de acordo com as disciplinas técnicas, mas respondem a uma lógica de redução gradual de risco, cada fase integrando todas as disciplinas em graus variados. Além disso, o processo unificado defende um planejamento iterativo e adaptativo, em vez de um planejamento rígido e detalhado anterior.

O processo unificado tem semelhanças com o ciclo V porque se concentra na arquitetura de sistemas feitos de componentes e distingue entre teste de unidade, teste de integração e teste de sistema. No entanto, as fases do PU não são estruturadas por nível arquitetônico e por disciplina, mas respondem a uma lógica de maturação iterativa. Além disso, o PU integra atividades de verificação e validação em cada fase.

O processo unificado se aproxima dos métodos ágeis na medida em que preconiza uma abordagem iterativa e incremental, focada nas necessidades do usuário. No entanto, difere dos métodos ágeis pela coleta proativa da maioria dos requisitos durante as primeiras iterações de um projeto e pela definição de uma arquitetura upstream antes da produção de versões publicáveis ​​("  lançamento  " em inglês). Ele também centra a abordagem em modelos, enquanto os métodos ágeis favorecem a produção de código em vez da produção de documentação. Esta última diferença deve, entretanto, ser colocada em perspectiva porque alguns agilistas também defendem uma abordagem baseada em modelagem. Esses métodos ágeis compartilham com o UP a visão de modelagem incremental onde os diferentes modelos (requisitos, análise, design) são refinados em paralelo durante cada iteração, ao invés de sequencialmente, fase por fase.

O processo unificado faz uso intenso de modelos UML . Articula os diferentes tipos de diagramas com as diferentes finalidades de modelagem (análise, desenho, teste). Assim, enriquece a UML, que é uma linguagem de modelagem genérica, com uma abordagem sistemática, mas específica para um método de desenvolvimento específico.

Avaliações

O processo unificado combina as vantagens de várias abordagens e, em particular, uma abordagem estruturada em fases com grande flexibilidade nas iterações.

A principal crítica é que a descrição detalhada das sequências de atividades e dos artefatos confere ao PU um certo peso e, portanto, requer uma alta qualificação dos membros da equipe do projeto (em particular: domínio de abordagens iterativas, conhecimento profundo de UML , conhecimento das sequências de atividades e suas interdependências).

O processo unificado também deixa uma grande margem de manobra para adaptar as atividades às especificidades de uma empresa. Esta flexibilidade, aliada à complexidade do processo e uma grande liberdade de interpretação, pode dar origem a implementações muito rígidas do PU, embora tenha em princípio as características de um método ágil.

Muitas vezes, a adoção do PU por uma organização decorre do desejo de disciplinar as práticas de desenvolvimento com o uso de ferramentas específicas e o monitoramento de regras de conduta estabelecidas e homogêneas . O processo de desenvolvimento de software é então ele próprio objeto de uma reengenharia de processos (“BPR”) com vista à otimização das atividades dos departamentos de TI. O desenvolvimento ágil, ao contrário, preconiza a escolha das ferramentas mais simples e o uso suave ou “tipo caixa de ferramentas” dos modelos da linguagem ou das fases do método. Portanto, há um paradoxo em querer enrijecer codificando práticas que são, por natureza, destinadas à flexibilidade.

De acordo com Scott Ambler, alguns fundamentos do PU não podem coexistir com os preceitos da agilidade: a preeminência e o papel condutor dos diagramas de caso de uso devem ser abandonados . Na verdade, se eles permitem documentar corretamente o comportamento do software, eles não podem ser usados ​​para gerenciar todas as atividades do projeto: as restrições, as interfaces de usuário e sua cinemática, as regras de negócio que o software terá que respeitar não podem ser deduzido. casos de uso. A PU também está adicionando um conjunto de “especificações adicionais” para compensar essa falta. Assim, ainda segundo Ambler, se a análise de necessidades pode conduzir o projeto, os casos de uso não podem e só podem constituir uma retórica de marketing específica para instanciações como RUP ou EUP .

Evoluções

Muitas variantes mais leves do processo unificado surgiram para aliviar o peso inicial de sua descrição. Diversas variantes do ágil também surgiram, buscando fortalecer o caráter iterativo, tornar a documentação mais leve ou facilitar a integração no processo de determinadas práticas ágeis.

Os desenvolvimentos mais recentes, e em particular o EssUP, visam transformar o processo unificado em uma “caixa de ferramentas”. O princípio é identificar e definir os componentes do processo, por exemplo, sua divisão em fases, suas técnicas de pilotagem iterativa e certas técnicas de modelagem, para torná-los independentes e reutilizáveis ​​e permitir que as equipes de projeto selecionem e combinem aqueles que são relevantes. para o contexto.

Notas e referências

  1. (en) Jacobson, Ivar. , Booch, Grady. e Rumbaugh, Jim. , O processo de desenvolvimento de software unificado , Addison-Wesley ,1999( ISBN  0-201-57169-2 , 9780201571691 e 9780321822000 , OCLC  636807532 , leia online )
  2. Jacobson, Ivar. , Booch, Grady. e Rumbaugh, James. ( Tradução  do inglês por Zaim, Virginia.) O processo de desenvolvimento de software unificado ["  O projeto de desenvolvimento de software unificado  "], Paris, Eyrolles ,2000, 488  p. ( ISBN  2-212-09142-7 e 9782212091427 , OCLC  45152206 , leia online )
  3. (pt) Jacobson, Ivar. e Jacobson, Agneta. , A vantagem do objeto: reengenharia de processos de negócios com tecnologia de objetos , Wokingham / Reading (Mass.) / Paris etc., Addison-Wesley , © 1995, 347  p. ( ISBN  0-201-42289-1 e 9780201422894 , OCLC  32276135 , leia online )
  4. (in) Ivar Jacobson , "  Object-Oriented Development in an Industrial Environment  " , SIGPLAN Not. , vol.  22, n o  12,Dezembro de 1987, p.  183–191 ( ISSN  0362-1340 , DOI  10.1145 / 38807.38824 , ler online , acessado em 12 de junho de 2019 )
  5. (pt) Booch, Grady. , Reese, Freddy. e Bonnetain, Pierre-Yves. , Análise e design orientado a objetos , Addison-Wesley França,1994( ISBN  2-87908-069-X e 9782879080697 , OCLC  31874228 , leia online )
  6. (em) Kendall Scott, "  Visão geral do processo unificado  " em informit.com ,28 de dezembro de 2001
  7. (em) "  Understand the Unified Process (UP) e Rational Unified Process (RUP)  " em www.methodsandtools.com (acessado em 17 de junho de 2019 )
  8. "  fase de criação  " , em www.granddictionary.com (acessado em 31 de maio de 2019 )
  9. "  fase de desenvolvimento  " , em www.granddictionary.com (acessado em 31 de maio de 2019 )
  10. "  construction phase  " , em www.granddictionary.com (acessado em 31 de maio de 2019 )
  11. "  fase de transição  " , em www.granddictionary.com (acessado em 31 de maio de 2019 )
  12. Serena Villata, Ameni Bouaziz e Eric Valade, “  processos Unificadas - Princípios, Descrição, declinação  ” , em inria.fr ,2015
  13. (em) Jacobson, Ivar. , Booch, Grady. e Rumbaugh, Jim. , O processo de desenvolvimento de software unificado , Addison-Wesley ,1999( ISBN  0-201-57169-2 , 9780201571691 e 9780321822000 , OCLC  636807532 , ler online ) , páginas 324-330 e 342-344
  14. (em) Shane Hastie, "  The Various Flavors of Unified Process  " no InfoQ (acessado em 17 de junho de 2019 )
  15. (em) Kroll, Per. e Kruchten, Philippe, O processo unificado racional facilitado: um guia do praticante para o RUP , Addison-Wesley ,2003( ISBN  0-321-16609-4 e 9780321166098 , OCLC  51242053 , leia online )
  16. (in) Ambler, Scott W., 1966- e Vizdos, Michael J. , The Company Unified Process: Extending the rational unified process , Prentice Hall,2005, 384  p. ( ISBN  978-0-13-191451-3 e 0131914510 , OCLC  59822996 , leia online )
  17. "  Enterprise Unified Process (EUP): Strategies for Enterprise Agile  " , em www.enterpriseunifiedprocess.com (acessado em 14 de junho de 2019 )
  18. (en) "  Página inicial do Agile Unified Process (AUP)  " , em www.ambysoft.com (acessado em 13 de junho de 2019 )
  19. (en) "  Essential Unified Process  " , em Ivar Jacobson International ,16 de maio de 2016(acessado em 13 de junho de 2019 )
  20. (em) Y. Hui , Y. Yan , W. Quanyu e C. Zhiwen , "  Compare Essential Unified Process (EssUP) with Rational Unified Process (RUP)  " , 2015 10ª IEEE Conference on Industrial Electronics and Applications (ICIEA) , Além disso, você precisa saber mais sobre o assunto.junho de 2015, p.  472-476 ( DOI  10.1109 / ICIEA.2015.7334159 , ler online , acessado em 13 de junho de 2019 )
  21. (en) “  Padrões, conformidade e Rational Unified Process  ” , em www.ibm.com ,26 de maio de 2004(acessado em 21 de junho de 2019 )
  22. Modelagem de Referência para Análise de Sistemas de Negócios :, IGI Global,2007, 389  p. ( ISBN  978-1-59904-054-7 e 9781599040561 , DOI  10.4018 / 978-1-59904-054-7.ch005 , leia online )
  23. (em) "  Introdução à modelagem de negócios usando a Unified Modeling Language (UML)  " em www.ibm.com ,18 de novembro de 2003(acessado em 21 de junho de 2019 )
  24. (en) Ivar Jacobson e Pan Wei Ng , "  The Essential Unified Process  " , no Dr. Dobb's (acessado em 18 de junho de 2019 )
  25. (en) "  Página inicial do Agile Unified Process (AUP)  " , em www.ambysoft.com (acessado em 13 de junho de 2019 )
  26. (pt) Jacobson, Ivar. , Booch, Grady. e Rumbaugh, Jim. , O processo de desenvolvimento de software unificado , Addison-Wesley ,1999( ISBN  0-201-57169-2 , 9780201571691 e 9780321822000 , OCLC  636807532 , leia online )
  27. (em) Martin Fowler, "  The New Methodology  " em martinfowler.com (acessado em 26 de junho de 2019 )
  28. (in) Haoyang Che , "  Review of" Agile Modeling: Effective Practice for eXtreme Programming and the Unified Process, de Scott W. Ambler, "John Wiley & Sons, Inc., 2002 0-471-20282-7  " , SIGSOFT Softw . Eng. Notas , vol.  30, n o  4,Julho de 2005, p.  83–83 ( ISSN  0163-5948 , DOI  10.1145 / 1082983.1083029 , ler online , acessado em 26 de junho de 2019 )
  29. (em) Michael Hirsch , "  Making Agile RUP  " , OOPSLA 2002 Practitioners Reports , ACM, OOPSLA '02,2002, p.  1 - ff ( ISBN  9781581134711 , DOI  10.1145 / 604251.604254 , lido online , acessado em 26 de junho de 2019 )
  30. (em) Mihai Liviu DESPA, "  Comparative study on software development methodologies  " , Database Systems Journal ,2014( ISSN  2069-3230 , leia online )

Veja também

Bibliografia

Artigos relacionados