Thursday, 6 July 2017

Sequence Diagram For Online Trading System


Diagramas de seqüência UML modelam o fluxo de lógica dentro de seu sistema de forma visual, permitindo que você tanto para documentar e validar sua lógica, e são comumente usados ​​para fins de análise e design. Diagramas de seqüência são o mais popular artefato UML para modelagem dinâmica, que se concentra na identificação do comportamento dentro do seu sistema. Outras técnicas de modelagem dinâmica incluem diagramação de atividades. Diagramação de comunicação. Diagramação de tempo. E diagramação de visão geral de interação. Diagramas de seqüência, juntamente com diagramas de classe e modelos de dados físicos são, na minha opinião, os modelos de nível de design mais importantes para o desenvolvimento de aplicativos comerciais modernos. Diagramas de seqüência são normalmente usados ​​para modelar: cenários de uso. Um cenário de uso é uma descrição de um potencial caminho seu sistema é usado. A lógica de um cenário de uso pode ser parte de um caso de uso, talvez um curso alternativo. Também pode ser um passo inteiro através de um caso de uso, como a lógica descrita pelo curso básico de ação ou uma parte do curso básico de ação, mais um ou mais cenários alternativos. A lógica de um cenário de uso também pode ser uma passagem pela lógica contida em vários casos de uso. Por exemplo, um aluno se matricula na universidade e logo se inscreve em três seminários. A lógica dos métodos. Os diagramas de seqüência podem ser usados ​​para explorar a lógica de uma operação, função ou procedimento complexo. Uma maneira de pensar em diagramas de seqüência, particularmente diagramas altamente detalhados, é como código de objeto visual. A lógica dos serviços. Um serviço é efetivamente um método de alto nível, muitas vezes um que pode ser invocado por uma grande variedade de clientes. Isso inclui serviços na Web, bem como transações comerciais implementadas por uma variedade de tecnologias, tais como CICSCOBOL ou corretor de solicitação de objeto compatível com CORBA (ORBs). Vamos começar com três exemplos simples. A Figura 1 ilustra um diagrama de seqüência UML para o caso de uso Enroll in University, usando uma abordagem de nível de sistema onde as interações entre os atores eo sistema são mostradas. A Figura 2 ilustra um diagrama de seqüência para a lógica detalhada de um serviço para determinar se um candidato já é um estudante na universidade. A Figura 3 mostra a lógica de como se inscrever em um seminário. Muitas vezes, desenvolvo um diagrama de seqüência no nível do sistema com meus stakeholders para ajudar a visualizar e validar a lógica de um cenário de uso. Também me ajuda a identificar métodos significativos de serviços, como verificar se o candidato já existe como aluno, que meu sistema deve oferecer suporte. Figura 1. Diagrama de seqüência no nível do sistema. A razão pela qual eles são chamados diagramas de seqüência deve ser óbvio: a natureza seqüencial da lógica é mostrada através da ordenação das mensagens (as setas horizontais). A primeira mensagem começa no canto superior esquerdo, a próxima mensagem aparece logo abaixo daquela, e assim por diante. As caixas na parte superior do diagrama representam classificadores ou suas instâncias, geralmente usam casos, objetos, classes ou atores. Como você pode enviar mensagens para objetos e classes, os objetos respondem a mensagens por meio da invocação de uma operação e as classes fazem isso através da invocação de operações estáticas, faz sentido incluir ambos os diagramas de seqüência. Como os atores iniciam e participam ativamente em cenários de uso, eles também podem ser incluídos em diagramas de seqüência. Os objetos têm rótulos no nome do formato UML padrão: ClassName, onde o nome é opcional (os objetos que não tenham recebido um nome no diagrama são chamados de objetos anônimos). Classes têm rótulos no formato ClassName. E atores têm nomes no formato Actor Name. Observe como os rótulos dos objetos são sublinhados, classes e atores não são. Por exemplo, na Figura 3 você vê o objeto Student tem o nome aStudent. Isso é chamado de objeto nomeado, enquanto a instância do Seminário é um objeto anônimo. A instância de Student foi dada um nome porque é usada em vários lugares como um parâmetro em mensagens, enquanto que a instância do Seminário didnt precisa ser referenciado em qualquer outro lugar no diagrama e, portanto, poderia ser anônimo. Na Figura 2, a classe Student envia mensagens para a classe PersistenceFramework (que poderia ter recebido o estereótipo ltltinfrastructuregtgt, mas não era para manter o diagrama simples). Qualquer mensagem enviada para uma classe é implementada como um método estático, mais sobre isso mais tarde. As linhas tracejadas penduradas nas caixas são chamadas linhas de vida do objeto, representando a duração do objeto durante o cenário que está sendo modelado. As caixas longas e finas nas linhas de vida são caixas de ativação, também chamadas caixas de invocação de método, que indicam que o processamento está sendo executado pela classe de objeto alvo para preencher uma mensagem. Eu só desenhar caixas de ativação quando Im usando uma ferramenta que nativamente suporta-los, como uma sofisticada ferramenta CASE, e quando eu quero explorar problemas de desempenho. Caixas de ativação são muito estranho para desenhar em quadros brancos ou com ferramentas de desenho simples tais que não facilmente apoiá-los. O X na parte inferior de uma caixa de ativação, um exemplo do qual é apresentado na Figura 4. é uma convenção UML para indicar que um objeto foi removido da memória. Em linguagens como C, onde você precisa gerenciar a memória você mesmo, você precisa invocar um destruidor de objetos, normalmente modelado uma mensagem com o estereótipo de ltltdestroygtgt. Em linguagens como Java ou C, onde a memória é gerenciada para você e os objetos que não são mais necessários são removidos automaticamente da memória, algo conhecido como coleta de lixo, você não precisa modelar a mensagem. Eu geralmente não se preocupar com a destruição de objetos de modelagem em tudo e, em vez disso, confiar que os programadores, muitas vezes eu, irá implementar detalhes de baixo nível, como este adequadamente. A Figura 4 apresenta um diagrama de seqüência UML complexo para o curso básico de ação para o caso de uso Enroll in Seminar. Esta é uma maneira alternativa de modelar a lógica de um cenário de uso, em vez de fazê-lo no nível do sistema, como na Figura 1, você simplesmente mergulha diretamente na modelagem da lógica detalhada no nível do objeto. Vou levar essa abordagem quando estou trabalhando com desenvolvedores que são diagramas de seqüência experiente e eu tenho um grande espaço de trabalho (um quadro branco enorme ou uma ferramenta CASE instalado em uma estação de trabalho com uma tela muito grande e uma boa placa gráfica). Na maioria das vezes, os diagramas de nível de sistema são desenhados primeiro e, em seguida, criam pequenos diagramas ao longo das linhas mostradas nas Figuras 2 e 3. Figura 4. Curso de ação básico para o caso de uso do Enroll in Seminar. As mensagens são indicadas nos diagramas de seqüência UML como setas rotuladas, quando a fonte eo destino de uma mensagem é um objeto ou uma classe, o rótulo é a assinatura do método invocado em resposta à mensagem. No entanto, se a fonte ou o alvo for um ator humano, a mensagem será rotulada com um breve texto descrevendo as informações que estão sendo comunicadas. Por exemplo, na Figura 4, o objeto EnrollInSeminar envia a mensagem isEligibleToEnroll (theStudent) para a instância do Seminário. Observe como eu incluo o nome dos métodos e o nome dos parâmetros, se houver, passados ​​para ele. O ator Student fornece informações para o objeto SecurityLogon através das mensagens rotuladas nome e número do aluno (essas mensagens realmente não são, elas são realmente interações do usuário). Os valores de retorno são indicados opcionalmente usando uma seta tracejada com uma etiqueta indicando o valor de retorno. Por exemplo, o valor de retorno theStudent é indicado retornando da classe Student como resultado de invocar uma mensagem, enquanto que nenhum valor de retorno é indicado como resultado do envio da mensagem isEligibleToEnroll (theStudent) para Seminário. Meu estilo não é indicar os valores de retorno quando seu óbvio o que está sendo retornado, então eu não desordenar meus diagramas de seqüência (como você pode ver, diagramas de seqüência se complicado bastante rapidamente). A Figura 5 mostra uma maneira alternativa de indicar valores de retorno usando a mensagem format: returnValue para mensagens, como você pode ver com isEligibleToEnroll (theStudent): false. Observe o uso de estereótipos em todo o diagrama. Para as caixas, eu apliquei os estereótipos ltltactorgtgt, ltltcontrollergtgt e ltltUIgtgt indicando que eles representam um ator, uma classe de controlador ou uma interface de usuário (UI), respectivamente. Ive também usado estereótipos visuais em alguns diagramas uma figura de vara para os atores estereótipos visual do diagrama robustez para o controlador, interface e objetos de entidade e um tambor para o banco de dados. Os estereótipos também são usados ​​em mensagens. A prática comum em diagramas UML é indicar as mensagens de criação e destruição com os estereótipos de ltltcreategtgt e ltltdestroygtgt, respectivamente. Por exemplo, você vê o objeto SecurityLogon é criado dessa maneira (na verdade, essa mensagem provavelmente seria enviada para a classe que resultaria em um valor de retorno do objeto criado, então eu enganei um pouco). Este objeto mais tarde se destrói de uma maneira similar, presumivelmente quando a janela está fechada. Eu usei uma nota UML na Figura 4 notas são basicamente texto de forma livre que pode ser colocado em qualquer diagrama UML, para fornecer um cabeçalho para o diagrama, indicando seu título e identificador (como você deve ter notado, eu dou identificadores exclusivos para todos Artefatos que pretendo manter). As notas são representadas como um pedaço de papel com o canto superior direito dobrado. Eu também usei uma nota para indicar o trabalho futuro que precisa ser feito, seja durante a análise ou design, neste diagrama - a mensagem qualifications () provavelmente representa uma série de mensagens enviadas para o objeto do aluno. A prática comum da UML é ancorar uma nota a outro elemento de modelo com uma linha tracejada quando apropriado, neste caso a nota é anexada à mensagem. Embora a Figura 4 modele a lógica do curso básico de ação para o caso de uso Enroll in Seminar, como você iria sobre modelagem de cursos alternativos A maneira mais fácil de fazer isso é criar um diagrama de seqüência único para cada curso alternativo, como você vê descrito em Figura 5. Este diagrama modela apenas a lógica do curso alternativo, como você pode dizer pela numeração dos passos no lado esquerdo do diagrama, ea nota do cabeçalho para o diagrama indica que é um curso de ação alternativo. Observe também como a ID desse diagrama inclui que este é o curso C alternativo, ainda uma outra regra de modelagem que eu encontrei útil ao longo dos anos. Vamos considerar outra notação de diagrama de seqüência. A Figura 5 inclui uma mensagem inicial, o Aluno escolhe um seminário. Que é indicado pelo círculo preenchido. Isso poderia facilmente ter sido indicado através de uma invocação de método, talvez registerIn (seminário). A Figura 6 mostra outra maneira de indicar a criação do objeto enviando a nova mensagem para uma classe. Nós realmente vimos três maneiras de conseguir isso, os outros dois são para enviar uma mensagem com o estereótipo ltltcreategtgt ou para enviar uma mensagem para o lado do símbolo do classificador (por exemplo, na Figura 4, a mensagem vai para o lado do EnrollInSeminar ou na Figura 6 a mensagem indo para o lado de StudentInfoPage. Meu conselho é escolher um estilo e cumpri-lo. As figuras 6 e 7 cada descrever uma maneira de indicar looping lógica. Uma maneira é mostrar um quadro com o rótulo loop e uma restrição indicando O que está sendo roteado, como para cada seminário na Figura 6. Outra abordagem é simplesmente preceder uma mensagem que será invocada várias vezes com um asterisco, como você vê na Figura 7 com a inclusão do caso de uso Enroll in Seminar. A Figura 6 inclui uma mensagem assíncrona, a mensagem para a impressora do sistema que tem a seta parcial. Uma mensagem assíncrona é aquela em que o remetente não espera o resultado da mensagem, em vez disso, processa o resultado quando e Se alguma vez voltar. Até este ponto todas as outras mensagens foram sincronizadas, mensagens onde o remetente aguarda o resultado antes de continuar. É comum enviar mensagens assíncronas para dispositivos de hardware ou serviços de software autônomo, como barramentos de mensagem. O método de modelagem da inclusão de casos de uso usando a Figura 7 é algo que eu primeiro propus em The Elements of UML Style embora eu não tenho dúvida de que outros usam essa abordagem também. Eu basicamente mostro o caso de uso como uma bolha na parte superior do diagrama, assim como qualquer outro classificador, e mostro uma mensagem enviada para ele com o estereótipo ltltincludegtgt. Isso é consistente com o diagrama de casos de uso e as práticas de diagramação de seqüência. A Figura 7 também é interessante porque mostra como modelar a lógica condicional. Neste caso, uma moldura com o rótulo alt é utilizada juntamente com um guarda, neste caso o candidato na lista de elegibilidade. A estrutura é separada em regiões separadas por linhas tracejadas. Neste caso, existem duas regiões, uma para cada alternativa, embora você possa ter tantas regiões quanto você precisar (para suportar o equivalente visual de uma instrução case). Cada região requer um guarda. Codificação Visual com Diagramas de Seqüência Anteriormente, afirmei que os diagramas de seqüência são efetivamente uma forma de codificação visual, ou talvez outra maneira de pensar é que os diagramas de seqüência podem ser usados ​​para um projeto muito detalhado. Quando desenvolvi o diagrama de seqüência da Figura 4, tomei várias decisões que poderiam afetar meus outros modelos. Por exemplo, conforme eu modelava o Passo 10, tomei a decisão de projeto de que a tela de exibição de taxa também tratasse a verificação pelo aluno de que as taxas eram aceitáveis. Além disso, como eu estava modelando os passos 2 e 3, cheguei à conclusão de que os alunos deveriam ter senhas para entrar no sistema. Quando você está seguindo as práticas AM de Participação Ativa de Stakeholder e Modelo com Outros é fácil descobrir se idéias como esta fazem sentido porque tudo que você precisa fazer é perguntar. Neste caso eu descobri que estava errado: a combinação de nome e número de aluno é único o suficiente para os nossos propósitos ea universidade não queria a complexidade adicionada de gerenciamento de senhas. Esta é uma decisão interessante que poderia ser gravada como uma regra de negócios porque é uma política operacional da universidade, indicando a necessidade de seguir a prática Iterate To Another Artfact e anotar a regra se estavam interessados ​​em manter um registro permanente do mesmo . Como desenhar diagramas de seqüência Eu tenho tentado explicar às pessoas como desenhar diagramas de seqüência durante anos, eo que eu descobri é que as pessoas que o recebem são muito boas em pensar de forma lógica ou são boas em escrever código de software. O diagrama de seqüência é realmente a codificação visual, mesmo quando você está modelando um cenário de uso através de um diagrama de seqüência no nível do sistema. Quando eu estou criando um diagrama de seqüência, eu começo identificando o escopo do que estou tentando modelar e porque prefiro seguir o modelo de prática de AM em pequenos incrementos. Normalmente, lido pequenos cenários de uso no nível do sistema ou um único methodervice no objeto detalhado nível. Um diagrama como o da Figura 4 é muito complexo para ser útil na minha experiência. Vou então trabalhar com a lógica com pelo menos mais uma pessoa, colocando classificadores no topo como eu preciso deles. Eu adiciono automaticamente as linhas de vida do objeto, mas como eu disse anteriormente normalmente não investir tempo adicionando caixas de ativação. O coração do diagrama está nas mensagens, que eu adiciono ao diagrama uma de cada vez enquanto eu trabalho através da lógica. Eu raramente indicam valores de retorno, em vez de dar mensagens de nomes inteligentes que muitas vezes tornam claro o que está sendo retornado. É interessante notar que, à medida que você diagrama de seqüência você vai identificar novas responsabilidades para classes e objetos, e, às vezes, até mesmo novas classes. A implicação é que você pode querer atualizar seu modelo de classe apropriadamente, os modeladores ágeis seguirão a prática Criar Vários Modelos em Paralelo. Algo que ferramentas CASE fará automaticamente. Lembre-se de que cada mensagem enviada para uma classe chama uma operação de método estático nessa classe cada mensagem enviada para um objeto chama uma operação nesse objeto. No que diz respeito a questões de estilo para diagramação de seqüência, eu prefiro desenhar mensagens indo da esquerda para a direita e retornar valores da direita para a esquerda, embora isso não funciona sempre com classes de objetos complexos. Eu justificar o rótulo em mensagens e valores de retorno, para que eles são mais próximos à ponta de seta. Eu também prefiro camadas os diagramas de seqüência: da esquerda para a direita. Eu indicar os atores, então a classe controlador (es), e, em seguida, a interface do usuário classe (es), e, finalmente, a classe (s) de negócios. Durante o projeto, você provavelmente precisará adicionar classes de sistema e persistência, que eu costumo colocar no lado direito dos diagramas de seqüência. Colocar seus diagramas de seqüência dessa maneira muitas vezes os torna mais fáceis de ler e também torna mais fácil encontrar problemas de lógica de camadas, como classes de interface de usuário acessando diretamente classes de persistência. Mantê-lo ágil As coisas mais importantes que você pode fazer é manter seus diagramas simples, tanto conteúdo sábio e ferramenta sábio. Vou esboçar diagramas de seqüência em quadros para pensar algo, para verificar a lógica em um caso de uso ou para projetar um método ou serviço. Eu raramente manter diagramas de seqüência como eu acho que seu verdadeiro valor está em sua criação. Um erro comum é tentar criar um conjunto completo de diagramas de seqüência para seu sistema. Eu vi times de projeto resíduos meses criando vários diagramas de seqüência para cada um dos seus casos de uso, um para o curso básico de ação e um para cada curso alternativo. Meu conselho é criar apenas um diagrama de seqüência quando você tem uma lógica complexa que você quer pensar se a lógica é direta o diagrama de seqüência não vai adicionar qualquer valor, você poderia também ir direto para o código. A notação usada nestes diagramas, particularmente os desenhados à mão, pode não se adaptar perfeitamente à versão atual da UML por uma ou mais das razões: A notação pode ter evoluído a partir de quando eu originalmente desenvolveu os diagramas. A UML evolui ao longo do tempo, e eu posso não ter mantido os diagramas atualizados. Eu posso ter começado errado no primeiro lugar. Embora estes diagramas foram cuidadosamente revistos para o livro, e foram analisados ​​por milhares de pessoas on-line desde então, um erro pode ter passado de nós. Eram apenas humanos. Talvez eu tenha escolhido aplicar a notação de maneira não-padrão. Um modelador ágil está mais interessado em modelos criados que se comunicam efetivamente do que em conformidade com regras de notação estabelecidas por um comitê. Ele provavelmente não importa de qualquer maneira, porque a ferramenta de modelagem (s) que você está usando provavelmente não vai apoiar totalmente a versão atual da notação UML perfeitamente de qualquer maneira. Bottom line é que você vai ser obrigado por suas ferramentas de qualquer maneira. Se você estiver realmente preocupado com as nuances de notação UML quotofficialquot, então leia a versão atual da especificação UML. Partilhe com os amigos: Vamos Ajudar Trabalhamos activamente com clientes em todo o mundo para melhorar as suas práticas de tecnologia da informação (TI), normalmente no papel de mentorcoach, líder de equipa ou treinador. Uma descrição completa do que fazemos, e como entrar em contato conosco, pode ser encontrada em Scott Ambler Associates. Leitura recomendada Este livro, Disciplined Agile Delivery: A Practitioners Guide to Agile entrega de software na empresa descreve a Disciplined Agile Delivery (DAD) quadro de decisão do processo. O framework DAD é uma abordagem ágil híbrida orientada para o aprendizado de pessoas para a entrega de soluções de TI. Ele tem um ciclo de vida de entrega de valor de risco, é orientado por objetivos, é consciente da empresa e fornece a base para o dimensionamento ágil. Este livro é particularmente importante para quem quer entender como funciona ágil de ponta a ponta dentro de uma empresa. Profissionais de dados vão achar interessante porque mostra como a modelagem ágil e técnicas de banco de dados ágeis se encaixam no processo de entrega de solução global. Os profissionais da empresa irão encontrá-lo interessante porque ele explicitamente promove a idéia de que equipes ágeis disciplinadas devem ser conscientes da empresa e, portanto, trabalhar em estreita colaboração com as equipes da empresa. Os desenvolvedores ágeis existentes acharão interessante porque ele mostra como estender as estratégias baseadas em Scrum e Kanban para fornecer um processo de entrega coerente e ponta-a-ponta. The Object Primer 3ª Edição: O Agile Model Driven Development com UML 2 é um importante livro de referência para modeladores ágeis, descrevendo como desenvolver 35 tipos de modelos ágeis incluindo todos os 13 diagramas UML 2. Além disso, este livro descreve a programação fundamental e técnicas de teste para a entrega de soluções ágeis bem sucedidas. O livro também mostra como passar de seus modelos ágeis para código-fonte, como ter sucesso em técnicas de implementação como refatoração e desenvolvimento orientado por teste (TDD). O Object Primer também inclui um capítulo que analisa as técnicas críticas de desenvolvimento de banco de dados (refatoração de banco de dados, mapeamento objeto-relacional, análise de legado e codificação de acesso a banco de dados) do meu premiado Agile Database Techniques book. ConceptDraw Amostras Processos de negócios UML diagramas Amostras Software Development Rapid UML The Processo de negócio Os diagramas UML 2.4 são criados com o diagrama ConceptDraw PRO e software de desenho vetorial aprimorado com a solução rápida UML do ConceptDraw Solution Park. O ConceptDraw PRO fornece exportação de documentos gráficos de várias páginas em vários formatos de arquivo: gráficos vetoriais (SVG, EMF, EPS), gráficos bitmap (PNG, JPEG, GIF, BMP, TIFF) ), O Adobe Flash (SWF). Tutoriais e Soluções: Exemplo 1: Diagrama de Atividade UML Exemplo de Diagrama de Atividade UML: Processamento de Depósito. Este exemplo é criado usando o software de diagramação ConceptDraw PRO aprimorado com a solução UML rápida do ConceptDraw Solution Park. Exemplo 2: Diagrama de Comunicação UML UML Comunicação Diagrama amostra. Este exemplo é criado usando o software de diagramação ConceptDraw PRO aprimorado com a solução UML rápida do ConceptDraw Solution Park. Amostra 3: Diagrama de seqüência UML Diagrama de seqüência UML amostra. Este exemplo é criado usando o software de diagramação ConceptDraw PRO aprimorado com a solução UML rápida do ConceptDraw Solution Park. Exemplo 4: Diagrama de Caso de Uso UML Sistema de Negociação Exemplo de Diagrama de Caso de Uso de UML: Sistema de Negociação. Este exemplo é criado usando o software de diagramação ConceptDraw PRO aprimorado com a solução UML rápida do ConceptDraw Solution Park. Todas as amostras são protegidas por direitos autorais CS Odessas. O uso deles é coberto por Creative Commons Atribuição Não-Comercial sem Derivados License. The diagrama de seqüência Este conteúdo faz parte da série: Fundamentos UML Fique ligado para conteúdo adicional nesta série. Seu fevereiro, e agora você provavelmente leu sobre, ou ouviu falar de pessoas, fazendo a mudança para UML 2.0 - a nova especificação para UML que contém uma série de melhorias. Dada a importância da nova especificação, estamos mudando a base desta série de artigos, também, deslocando a nossa atenção de OMGs UML 1.4 Especificação para OMGs Adotado 2.0 Esboço Especificação de UML (a. k.a. UML 2). Eu odeio mudar a ênfase de 1.4 para 2.0 no meio de uma série de artigos, mas a especificação de esboço de UML 2.0 é um passo importante adiante, e eu sinto a necessidade de espalhar a palavra. Houve algumas razões pelas quais o OMG melhorou a UML. A razão principal era que eles queriam que os modelos UML fossem capazes de fornecer Model Driven Architecture (MDA), o que significava que a UML tinha que funcionar como uma notação mais orientada por modelo. Além disso, o conjunto de notação UML 1.x era às vezes difícil de aplicar a aplicativos maiores. Além disso, os elementos de notação precisavam ser melhorados para tornar os diagramas mais legíveis. (Por exemplo, a modelagem do fluxo lógico em UML 1.x foi complicada e às vezes impossível. Modificações na notação de diagramas de seqüência definida na UML 2 fizeram grandes melhorias na lógica de modelagem em seqüências.) Saiba mais. Desenvolva mais. Conecte mais. Uma das vantagens do developerWorks Premium é o acesso a mais de 500 livros e vídeos de conferência da biblioteca do Safari. Alguns títulos que podem interessá-lo incluem: Padrões de Arquitetura de Aplicativos Corporativos Arquitetura de Aplicações Java UML Destilado: Um Breve Guia para a linguagem de Modelagem de Objetos Padrão OReilly Arquitetura de Software Conferência 2015 Compilação de vídeo completa Confira tudo o que o developerWorks Premium tem para oferecer e tornar-se membro hoje. Observe a redação em minha declaração acima: Adoção 2.0 Esboço Especificação de UML. É verdade que a especificação ainda está em status de rascunho, mas a chave é que o Rascunho de Especificação foi adotado pelo OMG, um consórcio que não adota novos padrões até que se tornem bastante sólidos. Haverá algumas mudanças na especificação antes que a UML 2 seja completamente adotada, mas essas mudanças devem ser mínimas. As principais mudanças serão nos componentes internos da UML - envolvendo recursos tipicamente usados ​​por empresas de software que implementam ferramentas UML. O objetivo principal deste artigo é continuar nosso foco nos diagramas UML essenciais este mês, vamos dar uma olhada no diagrama de seqüência. Observe, novamente, que os exemplos fornecidos abaixo são baseados na nova especificação UML 2. O diagrama propósito O diagrama de seqüência é usado principalmente para mostrar as interações entre objetos na ordem seqüencial que essas interações ocorrem. Muito parecido com o diagrama de classes, os desenvolvedores normalmente pensam que os diagramas de seqüência foram feitos exclusivamente para eles. No entanto, uma equipe de negócios da organização pode encontrar diagramas de seqüência útil para comunicar como o negócio atualmente funciona, mostrando como vários objetos de negócios interagem. Além de documentar os assuntos atuais de uma organização, um diagrama de seqüência de nível de negócios pode ser usado como um documento de requisitos para comunicar os requisitos para uma futura implementação do sistema. Durante a fase de requisitos de um projeto, os analistas podem levar os casos de uso ao próximo nível fornecendo um nível mais formal de refinamento. Quando isso ocorre, os casos de uso são freqüentemente refinados em um ou mais diagramas de seqüência. Uma equipe técnica de organizações pode encontrar diagramas de seqüência úteis para documentar como um futuro sistema deve se comportar. Durante a fase de projeto, os arquitetos e os desenvolvedores podem usar o diagrama para forçar as interações entre objetos de sistemas, desenvolvendo assim o projeto geral do sistema. Implementar com confiança Fornecer consistentemente software de alta qualidade mais rápido usando os serviços do DevOps no IBM Bluemix. Inscreva-se para uma versão gratuita Bluemix nuvem julgamento. E começar. Uma das principais utilizações dos diagramas de seqüência está na transição de requisitos expressos como casos de uso para o próximo e mais formal nível de refinamento. Os casos de uso são freqüentemente refinados em um ou mais diagramas de seqüência. Além do seu uso na concepção de novos sistemas, os diagramas de seqüência podem ser usados ​​para documentar como os objetos em um sistema existente (chamada de legado) atualmente interagem. Esta documentação é muito útil quando a transição de um sistema para outra pessoa ou organização. A notação Como este é o primeiro artigo na minha série de diagramas UML que é baseado em UML 2, precisamos primeiro discutir uma adição à notação em diagramas UML 2, ou seja, um elemento de notação chamado quadro. O elemento de quadro é usado como base para muitos outros elementos de diagrama na UML 2, mas o primeiro lugar que a maioria das pessoas encontrará será um elemento de quadro como o limite gráfico de um diagrama. Um elemento de quadro fornece um local consistente para um rótulo de diagramas, enquanto fornece um limite gráfico para o diagrama. O elemento de quadro é opcional nos diagramas UML como você pode ver nas figuras 1 e 2, o rótulo de diagramas é colocado no canto superior esquerdo no que Ill chamar a caixa de nome quadros, uma espécie de retângulo orelhudo eo diagrama UML real é Definido no interior do corpo do retângulo envolvente maior. Figura 1. Um elemento de quadro UML 2 vazio Além de fornecer uma borda visual, o elemento de estrutura também tem um uso funcional importante em diagramas que descrevem interações, como o diagrama de seqüência. Em diagramas de seqüência, as mensagens de entrada e de saída (interações a. k.a.) de uma seqüência podem ser modeladas conectando as mensagens à borda do elemento de quadro (como visto na Figura 2). Isso será abordado em mais detalhes na seção Além da seção básica abaixo. Figura 2. Um diagrama de seqüência que tem mensagens de entrada e saída Observe que na Figura 2 o rótulo diagramas começa com as letras sd, para Sequence Diagram. A especificação UML fornece valores de texto específicos para tipos de diagrama (por exemplo, Diagrama de seqüência sd, Diagrama de atividade de atividade e Diagrama de caso de uso de caso de uso), quando usar um elemento de quadro para incluir um diagrama. O básico O objetivo principal de um diagrama de seqüência é definir seqüências de eventos que resultem em algum resultado desejado. O foco é menos nas próprias mensagens e mais na ordem em que as mensagens ocorrem no entanto, a maioria dos diagramas de seqüência irá comunicar quais mensagens são enviadas entre os objetos de um sistema, bem como a ordem em que ocorrem. O diagrama transmite essas informações ao longo das dimensões horizontal e vertical: a dimensão vertical mostra, de cima para baixo, a seqüência de tempo das chamadas de mensagens à medida que elas ocorrem ea dimensão horizontal mostra, da esquerda para a direita, as instâncias de objetos às quais as mensagens são enviadas. Ao desenhar um diagrama de seqüência, elementos de notação de linha de vida são colocados na parte superior do diagrama. As linhas de vida representam funções ou instâncias de objeto que participam da seqüência que está sendo modelada. Nota: Em sistemas totalmente modelados, os objetos (instâncias de classes) também serão modelados em um diagrama de classes de sistemas. As linhas de vida são desenhadas como uma caixa com uma linha tracejada descendo do centro da borda inferior (Figura 3). O nome da linha de vida é colocado dentro da caixa. Figura 3. Um exemplo da classe Student usada em uma linha de vida cujo nome de instância é freshman O padrão UML para nomear uma linha de vida segue o formato de: No exemplo mostrado na Figura 3, o lifeline representa uma instância da classe Student, cuja instância Nome é calouro. Observe que, aqui, o nome da linha de vida está sublinhado. Quando um sublinhado é usado, significa que a linha de vida representa uma instância específica de uma classe em um diagrama de seqüência e não um tipo específico de instância (ou seja, um papel). Em um futuro artigo, observe bem a modelagem da estrutura. Por enquanto, basta observar que os diagramas de seqüência podem incluir funções (como comprador e vendedor) sem especificar quem executa essas funções (como Bill e Fred). Isso permite a reutilização do diagrama em diferentes contextos. Simplificando, nomes de instância em diagramas de seqüência são sublinhados nomes de funções não são. Nosso exemplo de linha de vida na Figura 3 é um objeto nomeado, mas nem todas as linhas de vida representam objetos nomeados. Em vez disso, uma linha de vida pode ser usada para representar uma instância anônima ou sem nome. Ao modelar uma instância sem nome em um diagrama de seqüência, o nome de linhas de vida segue o mesmo padrão de uma instância nomeada, mas em vez de fornecer um nome de instância, essa parte do nome das linhas de salvamento é deixada em branco. Novamente, referindo-se à Figura 3, se a linha de vida representa uma instância anônima da classe Aluno, a linha de vida seria: Aluno. Also, because sequence diagrams are used during the design phase of projects, it is completely legitimate to have an object whose type is unspecified: for example, freshman. The first message of a sequence diagram always starts at the top and is typically located on the left side of the diagram for readability. Subsequent messages are then added to the diagram slightly lower then the previous message. To show an object (i. e. lifeline) sending a message to another object, you draw a line to the receiving object with a solid arrowhead (if a synchronous call operation) or with a stick arrowhead (if an asynchronous signal). The messagemethod name is placed above the arrowed line. The message that is being sent to the receiving object represents an operationmethod that the receiving objects class implements. In the example in Figure 4, the analyst object makes a call to the system object which is an instance of the ReportingSystem class. The analyst object is calling the system objects getAvailableReports method. The system object then calls the getSecurityClearance method with the argument of userId on the secSystem object, which is of the class type SecuritySystem. Note: When reading this sequence diagram, assume that the analyst has already logged into the system. Figure 4. An example of messages being sent between objects Besides just showing message calls on the sequence diagram, the Figure 4 diagram includes return messages. These return messages are optional a return message is drawn as a dotted line with an open arrowhead back to the originating lifeline, and above this dotted line you place the return value from the operation. In Figure 4 the secSystem object returns userClearance to the system object when the getSecurityClearance method is called. The system object returns availableReports when the getAvailableReports method is called. Again, the return messages are an optional part of a sequence diagram. The use of return messages depends on the level of detailabstraction that is being modeled. Return messages are useful if finer detail is required otherwise, the invocation message is sufficient. I personally like to include return messages whenever a value will be returned, because I find the extra details make a sequence diagram easier to read. When modeling a sequence diagram, there will be times that an object will need to send a message to itself. When does an object call itself A purist would argue that an object should never send a message to itself. However, modeling an object sending a message to itself can be useful in some cases. For example, Figure 5 is an improved version of Figure 4. The Figure 5 version shows the system object calling its determineAvailableReports method. By showing the system sending itself the message determineAvailableReports, the model draws attention to the fact that this processing takes place in the system object. To draw an object calling itself, you draw a message as you would normally, but instead of connecting it to another object, you connect the message back to the object itself. Figure 5. The system object calling its determineAvailableReports method The example messages in Figure 5 show synchronous messages however, in sequence diagrams you can model asynchronous messages, too. An asynchronous message is drawn similar to a synchronous one, but the messages line is drawn with a stick arrowhead, as shown in Figure 6. Figure 6. A sequence diagram fragment showing an asynchronous message being sent to instance2 When modeling object interactions, there will be times when a condition must be met for a message to be sent to the object. Guards are used throughout UML diagrams to control flow. Here, I will discuss guards in both UML 1.x as well as UML 2.0. In UML 1.x, a guard could only be assigned to a single message. To draw a guard on a sequence diagram in UML 1.x, you placed the guard element above the message line being guarded and in front of the message name. Figure 7 shows a fragment of a sequence diagram with a guard on the message addStudent method. Figure 7. A segment of a UML 1.x sequence diagram in which the addStudent message has a guard In Figure 7, the guard is the text pastDueBalance 0. By having the guard on this message, the addStudent message will only be sent if the accounts receivable system returns a past due balance of zero. The notation of a guard is very simple the format is: Combined fragments (alternatives, options, and loops) In most sequence diagrams, however, the UML 1.x in-line guard is not sufficient to handle the logic required for a sequence being modeled. This lack of functionality was a problem in UML 1.x. UML 2 has addressed this problem by removing the in-line guard and adding a notation element called a Combined Fragment. A combined fragment is used to group sets of messages together to show conditional flow in a sequence diagram. The UML 2 specification identifies 11 interaction types for combined fragments. Three of the eleven will be covered here in The Basics section, two more types will be covered in the Beyond The Basics section, and the remaining six I will leave to be covered in another article. (Hey, this is an article, not a book. I want you to finish this piece in one day) Alternatives Alternatives are used to designate a mutually exclusive choice between two or more message sequences. Note: It is indeed possible for two or more guard conditions attached to different alternative operands to be true at the same time, but at most only one operand will actually occur at run time (which alternative wins in such cases is not defined by the UML standard). Alternatives allow the modeling of the classic if then else logic (e. g. if I buy three items, then I get 20 off my purchase else I get 10 off my purchase). As you will notice in Figure 8, an alternative combination fragment element is drawn using a frame. The word alt is placed inside the frames namebox. The larger rectangle is then divided into what UML 2 calls operands. Note: Although operands look a lot like lanes on a highway, I specifically did not call them lanes. Swim lanes are a UML notation used on activity diagrams. Please refer to The Rational Edges earlier article about Activity Diagrams . Operands are separated by a dashed line. Each operand is given a guard to test against, and this guard is placed towards the top left section of the operand on top of a lifeline. Note: Usually, the lifeline to which the guard is attached is the lifeline that owns the variable that is included in the guard expression. If an operands guard equates to true, then that operand is the operand to follow. Figure 8. A sequence diagram fragment that contains an alternative combination fragment As an example to show how an alternative combination fragment is read, Figure 8 shows the sequence starting at the top, with the bank object getting the checks amount and the accounts balance. At this point in the sequence the alternative combination fragment takes over. Because of the guard balance gt amount, if the accounts balance is greater than or equal to the amount, then the sequence continues with the bank object sending the addDebitTransaction and storePhotoOfCheck messages to the account object. However, if the balance is not greater than or equal to the amount, then the sequence proceeds with the bank object sending the addInsuffientFundFee and noteReturnedCheck message to the account object and the returnCheck message to itself. The second sequence is called when the balance is not greater than or equal to the amount because of the else guard. In alternative combination fragments, the else guard is not required and if an operand does not have an explicit guard on it, then the else guard is to be assumed. Alternative combination fragments are not limited to simple if then else tests. There can be as many alternative paths as are needed. If more alternatives are needed, all you must do is add an operand to the rectangle with that sequences guard and messages. The option combination fragment is used to model a sequence that, given a certain condition, will occur otherwise, the sequence does not occur. An option is used to model a simple if then statement (i. e. if there are fewer than five donuts on the shelf, then make two dozen more donuts). The option combination fragment notation is similar to the alternation combination fragment, except that it only has one operand and there never can be an else guard (it just does not make sense here). To draw an option combination you draw a frame. The text opt is placed inside the frames namebox, and in the frames content area the options guard is placed towards the top left corner on top of a lifeline. Then the options sequence of messages is placed in the remainder of the frames content area. These elements are illustrated in Figure 9. Figure 9. A sequence diagram fragment that includes an option combination fragment Reading an option combination fragment is easy. Figure 9 is a reworking of the sequence diagram fragment in Figure 7, but this time it uses an option combination fragment because more messages need to be sent if the students past due balance is equal to zero. According to the sequence diagram in Figure 9, if a students past due balance equals zero, then the addStudent, getCostOfClass, and chargeForClass messages are sent. If the students past due balance does not equal zero, then the sequence skips sending any of the messages in the option combination fragment. The example Figure 9 sequence diagram fragment includes a guard for the option however, the guard is not a required element. In high-level, abstract sequence diagrams you might not want to specify the condition of the option. You may simply want to indicate that the fragment is optional. Occasionally you will need to model a repetitive sequence. In UML 2, modeling a repeating sequence has been improved with the addition of the loop combination fragment. The loop combination fragment is very similar in appearance to the option combination fragment. You draw a frame, and in the frames namebox the text loop is placed. Inside the frames content area the loops guard is placed towards the top left corner, on top of a lifeline. Note: As with the option combination fragment, the loop combination fragment does not require that a guard condition be placed on it. Then the loops sequence of messages is placed in the remainder of the frames content area. In a loop, a guard can have two special conditions tested against in addition to the standard Boolean test. The special guard conditions are minimum iterations written as minint the number (e. g. minint 1) and maximum iterations written as maxint the number (e. g. maxint 5). With a minimum iterations guard, the loop must execute at least the number of times indicated, whereas with a maximum iterations guard the number of loop executions cannot exceed the number. Figure 10. An example sequence diagram with a loop combination fragment The loop shown in Figure 10 executes until the reportsEnu objects hasAnotherReport message returns false. The loop in this sequence diagram uses a Boolean test to verify if the loop sequence should be run. To read this diagram, you start at the top, as normal. When you get to the loop combination fragment a test is done to see if the value hasAnotherReport equals true. If the hasAnotherReport value equals true, then the sequence goes into the loop fragment. You can then follow the messages in the loop as you would normally in a sequence diagram Beyond the basics Ive covered the basics of the sequence diagram, which should allow you to model most of the interactions that will take place in a common system. The following section will cover more advanced notation elements that can be used in a sequence diagram. Referencing another sequence diagram When doing sequence diagrams, developers love to reuse existing sequence diagrams in their diagrams sequences. Note: It is possible to reuse a sequence diagram of any type (e. g. programming or business). I just find that developers like to functionally break down their diagrams more. Starting in UML 2, the Interaction Occurrence element was introduced. The addition of interaction occurrences is arguably the most important innovation in UML 2 interactions modeling. Interaction occurrences add the ability to compose primitive sequence diagrams into complex sequence diagrams. With these you can combine (reuse) the simpler sequences to produce more complex sequences. This means that you can abstract out a complete, and possibly complex, sequence as a single conceptual unit. An interaction occurrence element is drawn using a frame. The text ref is placed inside the frames namebox, and the name of the sequence diagram being referenced is placed inside the frames content area along with any parameters to the sequence diagram. The notation of the referenced sequence diagrams name follows the pattern of: 1. Retrieve Borrower Credit Report(ssn). borrowerCreditReport 2. Process Credit Card(name, number, expirationDate, amount. 100) In example 1, the syntax calls the sequence diagram called Retrieve Borrower Credit Report and passes it the parameter ssn. The Retreive Borrower Credit Report sequence returns the variable borrowerCreditReport. In example 2, the syntax calls the sequence diagram called Process Credit Card and passes it the parameters of name, number, expiration date, and amount. However, in example 2 the amount parameter will be a value of 100. And since example 2 does not have a return value labeled, the sequence does not return a value (presumably, the sequence being modeled does not need the return value). Figure 11. A sequence diagram that references two different sequence diagrams Figure 11 shows a sequence diagram that references the sequence diagrams Balance Lookup and Debit Account. The sequence starts at the top left, with the customer sending a message to the teller object. The teller object sends a message to the theirBank object. At that point, the Balance Lookup sequence diagram is called, with the accountNumber passed as a parameter. The Balance Lookup sequence diagram returns the balance variable. Then the option combination fragments guard condition is checked to verify the balance is greater then the amount variable. In cases where the balance is greater than the amount, the Debit Account sequence diagram is called, passing it the accountNumber and the amount as parameters. After that sequence is complete, the withdrawCash message returns cash to the customer. It is important to notice in Figure 11 that the lifeline of theirBank is hidden by the interaction occurrence Balance Lookup. Because the interaction occurrence hides the lifeline, that means that the theirBank lifeline is referenced in the Balance Lookup sequence diagram. In addition to hiding the lifeline in the interaction occurrence, UML 2 also specifies that the lifeline must have the same theirBank in its own Balance Lookup sequence. There will be times when you model sequence diagrams that an interaction occurrence will overlap lifelines that are not referenced in the interaction occurrence. In such cases the lifeline is shown as a normal lifeline and is not hidden by the overlapping interaction occurrence. In Figure 11, the sequence references the Balance Lookup sequence diagram. The Balance Lookup sequence diagram is shown in Figure 12. Because the example sequence has parameters and a return value, its label 8212located in the diagrams namebox8212follows a specific pattern: 1. SD Balance Lookup(Integer. accountNumber). Real 2. SD Available Reports(Financial Analyst. analyst). Reports Figure 12 illustrates example 1, in which the Balance Lookup sequence uses parameter accountNumber as a variable in the sequence, and the sequence diagram shows a Real object being returned. In cases such as this, where the sequence returns an object, the object being returned is given the instance name of the sequence diagram. Figure 12. A sequence diagram that takes the parameter of accountNumber and returns a Real object Figure 13 illustrates example 2, in which a sequence takes a parameter and returns an object. However, in Figure 13 the parameter is used in the sequences interaction. Figure 13. A sequence diagram that uses its parameter in its interaction and returns a Reports object The previous section showed how to reference another sequence diagram by passing information through parameters and return values. However, there is another way to pass information between sequence diagrams. Gates can be an easy way to model the passing of information between a sequence diagram and its context. A gate is merely a message that is illustrated with one end connected to the sequence diagrams frames edge and the other end connected to a lifeline. A reworking of Figures 11 and 12 using gates can be seen in Figures 14 and 15. The example diagram in Figure 15 has an entry gate called getBalance that takes the parameter of accountNumber. The getBalance message is an entry gate, because it is the arrowed line that is connected to the diagrams frame with the arrowhead connected to a lifeline. The sequence diagram also has an exit gate that returns the balance variable. The exit gate is known, because its a return message that is connected from a lifeline to the diagrams frame with the arrowhead connected to the frame. Figure 14. A reworking of Figure 11, using gates this time Figure 15. A reworking of Figure 12, using gates this time Combined fragments (break and parallel) In the basics section presented earlier in this paper, I covered the combined fragments known as alternative, option, and loop. These three combined fragments are the ones most people will use the most. However, there are two other combined fragments that a large share of people will find useful 128147 break and parallel. The break combined fragment is almost identical in every way to the option combined fragment, with two exceptions. First, a breaks frame has a namebox with the text break instead of option. Second, when a break combined fragments message is to be executed, the enclosing interactions remainder messages will not be executed because the sequence breaks out of the enclosing interaction. In this way the break combined fragment is much like the break keyword in a programming language like C or Java. Figure 16. A reworking of the sequence diagram fragment from Figure 8, with the fragment using a break instead of an alternative Breaks are most commonly used to model exception handling. Figure 16 is a reworking of Figure 8, but this time Figure 16 uses a break combination fragment because it treats the balance lt amount condition as an exception instead of as an alternative flow. To read Figure 16, you start at the top left corner of the sequence and read down. When the sequence gets to the return value balance, it checks to see if the balance is less than the amount. If the balance is not less than the amount, the next message sent is the addDebitTransaction message, and the sequence continues as normal. However, in cases where the balance is less than the amount, then the sequence enters the break combination fragment and its messages are sent. Once all the messages in the break combination have been sent, the sequence exits without sending any of the remaining messages (e. g. addDebitTransaction). An important thing to note about breaks is that they only cause the exiting of an enclosing interactions sequence and not necessarily the complete sequence depicted in the diagram. In cases where a break combination is part of an alternative or a loop, then only the alternative or loop is exited. Todays modern computer systems are advancing in complexity and at times perform concurrent tasks. When the processing time required to complete portions of a complex task is longer than desired, some systems handle parts of the processing in parallel. The parallel combination fragment element needs to be used when creating a sequence diagram that shows parallel processing activities. The parallel combination fragment is drawn using a frame, and you place the text par in the frames namebox. You then break up the frames content section into horizontal operands separated by a dashed line. Each operand in the frame represents a thread of execution done in parallel. Figure 17. A microwave is an example of an object that does two tasks in parallel While Figure 17 may not illustrate the best computer system example of an object doing activities in parallel, it offers an easy-to-understand example of a sequence with parallel activities. The sequence goes like this: A hungryPerson sends the cookFood message to the oven object. When the oven object receives that message, it sends two messages to itself at the same time (nukeFood and rotateFood). After both of these messages are done, the hungryPerson object is returned yummyFood from the oven object. Conclusion The sequence diagram is a good diagram to use to document a systems requirements and to flush out a systems design. The reason the sequence diagram is so useful is because it shows the interaction logic between the objects in the system in the time order that the interactions take place. Downloadable resources Related topicsSample UML Sequence Diagram The sequence diagram in figure 1 represents an elaboration for the Student Registers for Class use case in an automated student registration system. (Click here to see the diagram without the horizontal dotted guidelines.) Figure 1 - Automated Registration System sample sequence diagram The boxes at the top of the sequence diagram constitute the diagram header and represent the components or units of the system. Sequence diagram editor supports four types of header elements (see the full list of supported sequence diagram elements ): Actors - Actors represent a person or other external entity that interacts with the system. Objects - Objects are used to represent object instances in an object-oriented programming language such as Java or C. Units - Units are used to represent logical entities in the system such as components, servers, threads and tasks that may or may not be implemented using objects. They can also be used to distinguish objects from classes. Separators - Separators do not interact with the diagram but rather represent a boundary between header elements. Sequence diagram header elements can be grouped together (see group elements ) into components or subsystems to illustrate the logical layering of the system. In Figure 1, the web server components are grouped together into the Web Server group to indicate that these elements are part of the Web Server. Separator elements can be used to show boundaries between the components of the sequence diagram (such as the air interface between cell phone and base station, or the Internet in a distributed or web-based application). The body of the sequence diagram shows the interactions between the various units as they collaborate to accomplish a particular purpose. The dotted horizontal lines are called guidelines, which are typically used with their corresponding line numbers to refer to portions of the diagram in documentation or during design meetings ( Sequence Diagram Editor allows you to configure whether or not to display these guidelines andor line numbers in your sequence diagrams.) Messages are by far the most common elements and are used to model the interactions and interfaces between components. Sequence diagram editor supports six different types of message elements: Simple Messages - Simple messages can be used to represent interactions between components that are not direct method calls (could be IPC, remoting, http or web services) Asynchronous Messages - Asynchronous messages represent stimuli that can occur at any time based on external events (e. g. interruptssensors or user input) Call Messages - Call messages are usually reserved for method calls between objects in the same threadtask where the calling object waits for the return from the recipient before continuing Return Messages - Return messages indicate a response to a call message, although they can also be used with simple messages to represent requestresponse pairs. Create Messages - Create messages are used to represent the dynamic creation of an object instance. They can also be used to represent the creation of a thread or task. Destroy Messages - Destroy messages are used to represent the dynamic destruction of an object instance. They can also be used to represent the shutdown of a thread or task. Action elements can be used to represent an action or processing performed by a single entity without involving other units. In the sequence diagram example above, the Registration Page entity renders the page in line 16 using an action. State elements are useful for units representing a state machine to describe state transitions that occur as a result of sending a messages or some other event. Sates for different header elements can be configured to share the same guideline. Timer elements can be used to show the start, stop or expiration of a timer associated with a particular header element. They are used extensively in state machine design to handle error conditions when communicating with external systems. Diagram links represent a complex action performed by multiple header elements without showing all the details. For example, the quotuser loginquot box (line 7) in the sequence diagram typically involves interactions between the all the components. The details can be elaborated and shown in a separate sequence diagram with a link from the current diagram. Using diagram links to abstract details that are not specific or relevant to the current scenario reduces the size and clutter of the diagrams and enhances maintainability (used like a function call in a programming language.) Blocks are useful for representing simple alternation or looping constructs for a given header element. For example, in the sequence diagram of Figure 1 the student may not have to go through the login process if they are already logged into the system (line 6-7). If there are significant differences between the alternatives in the sequence diagram, using scenario elements like scenario start, scenario case, and scenario end rather than blocks may be more appropriate as illustrated in figure 2 (lines 22-29). You can always use additional sequence diagrams to describe different scenarios if it would be more clear. This sequence diagram shows the two alternative scenarios (course full found line 22, and No Service Found line 26) in the same diagram. Notice also that Sequence Diagram Editor automatically takes care of pagination by repeating the diagram title and header elements for each page. Documentation notes and Flow Notes are used throughout the sequence diagram to add additional descriptive text. These can be selectively hidden or displayed based on the desired detail level. Free Notes can also be used to add detail or annotations. Sequence Diagram Editor can also export diagrams in PDF (click here ) and RTF (click here ) formats. The PDF and RTF exports can optionally include documentation notes for the sequence diagram provided as a separate table at the end of the export. NOTE: while the exported RTF document tends to be large, opening this document with Microsoft Word and saving it as a Word document considerably reduces the size of the files (sometimes by a factor of 20 or more.) Click here for the corresponding Word document.

No comments:

Post a Comment