Modelagem de Software e UML
A modelagem de software representa um sistema através de abstrações que capturam sua estrutura e comportamento, e a Unified Modeling Language (UML) é a notação gráfica padrão para expressar tais modelos.
Definition
Modelagem de software é a construção de representações abstratas de um sistema de software para analisá-lo, projetá-lo e comunicá-lo, e UML é uma linguagem de modelagem padronizada de propósito geral que fornece um conjunto unificado de tipos de diagramas para essas representações.
Scope
Este tópico abrange modelos estruturais, como diagramas de classe, componente e implantação; modelos comportamentais, como diagramas de caso de uso, sequência, atividade e máquina de estados; o papel dos modelos na análise, design e comunicação; engenharia dirigida por modelos e geração de código; e o nível apropriado de rigor de modelagem para um determinado projeto.
Core questions
- Quais aspectos de um sistema são capturados por modelos estruturais versus comportamentais?
- Como os principais tipos de diagramas UML representam um design?
- Quanto rigor de modelagem é apropriado para um determinado projeto?
- Quando a geração automática de código a partir de modelos é vantajosa?
Key theories
- Múltiplas visões de um sistema
- Um sistema é modelado a partir de pontos de vista complementares — estrutura estática, interações, comportamento de estado e implantação — cada um capturado por tipos de diagramas apropriados, porque nenhuma visão única transmite todas as informações de design relevantes.
- Engenharia dirigida por modelos
- Os modelos podem servir como artefatos de desenvolvimento primários a partir dos quais as implementações são parcial ou totalmente geradas através de transformações, elevando o nível de abstração e ligando o design diretamente ao código.
Clinical relevance
Os modelos tornam a intenção do design explícita, apoiam a análise antes que o código exista e fornecem uma linguagem compartilhada entre uma equipe; seu valor depende do uso da quantidade certa de modelagem, já que modelos excessivos ou desatualizados impõem custos sem benefício.
Evidence & guidelines
A especificação OMG UML define a notação e a semântica padrão, e padrões OMG relacionados, como SysML e MOF, estendem a modelagem para engenharia de sistemas e metamodelagem.
History
A UML surgiu em meados da década de 1990 a partir da unificação dos métodos Booch, OMT e Objectory, foi adotada como um padrão OMG em 1997 e evoluiu através da UML 2; abordagens dirigidas por modelos e esboços leves coexistem com debates sobre o quanto a modelagem formal compensa.
Debates
- Desenvolvimento dirigido por modelos "pesado" versus esboço "leve"
- É contestado se os modelos devem ser artefatos autoritários que impulsionam a geração de código ou esboços informais para comunicação; a visão de modelo como programa promete consistência, enquanto o uso orientado a esboços valoriza a baixa sobrecarga e a adaptabilidade.
Key figures
- Grady Booch
- James Rumbaugh
- Ivar Jacobson
- Martin Fowler
Related topics
Seminal works
- booch2005
- omg2017uml
- fowler2003
Frequently asked questions
- A UML ainda é relevante no desenvolvimento ágil?
- Sim, embora frequentemente usada de forma mais leve. Equipes ágeis tendem a usar diagramas UML como esboços informais para comunicar e raciocinar sobre o design, em vez de como especificações exaustivas, aplicando apenas a modelagem suficiente para esclarecer o problema em questão.
- A modelagem exige UML?
- Não. A UML é a notação mais amplamente padronizada, mas a modelagem pode usar outras notações ou linguagens específicas de domínio; a ideia essencial é a abstração de estrutura e comportamento, para a qual a UML é uma opção bem suportada.