UPDATE 17th April 2009

sorry if it seems like this project was dead, it's definately not. Closely allied with SD are Activity Diagrams; Operation Notation Parsing of C# source to Sparx EA 7.5 will be provided in Reflections in UML. It's my intention to support Microsoft Visual Studio 2008 Modeling. Thus, (1) the Activity project, (2) the Source Semantic Engine project, (3) Sparx Reflections Presenter project, and (4) Microsoft Expression for UML

Welcome to Sequence

kw.jpg
My name is Kevin Watson, I'm based in BLOOMSBURY london and hope to bring you a means of viewing and constructing Sequence Diagrams of your source files, assembly's and eventually your running applications and components.

I am excited about this project and look forward to contributing to this community. Any comments, suggestions, diss'es will be gratefully received.

What is a Sequence Diagram

A sequence diagram shows the messages exchanged between collaborating objects to accomplish a task or goal.

The objects sending and receiving messages are usually represnted as symbols arranged along the top of the diagram, perhaps as rectangles containing the object's name, type or location.

Descending from each of these symbols is a line, drawn vertically down the diagram. This represents the existance of the object over time and is called a 'Lifeline'.

Messages are shown as lines drawn from the sending object's lifeline to the receivering objects lifline. The receiving end is shown with an arrow head, using this notation messages are not restricted to sending only in a left to right direction. Text above the message line, can describe or name the message.

Using the preceeding definations, a Sequence Diagram illustrates the messages exchanged between objects occuring over time. The main function of the diagram is to show the time ordered arrangement of the messages.

Sequence diagrams can be used to describe the interactions between:
  • People
  • People and Organisations
  • Inter and Intra Organisations
  • Workflows
  • Systems
  • Components
  • Objects
This project will concern itself with objects and applications, using UML ( 2.1 ) notations and conventions.

Kinds of Message

  • Synchronous
    • Procedure Call
    • Procedure Return
  • Asynchronous
    • Send / Signal
    • Callback
  • Exceptions

Focus of Control

Depicting messages flowing from lifelines, while simple to understand has a significant drawback. It does not provide an explicit means of showing the messages that an object sends in response to messages received.

To make this explicit an extention to the lifeline notation is used, called a 'Focus of Control' or FoC. This is represented by a narrow rectangle extending down, over and above the lifeline.

Instead of the message connecting with the receiving onjects lifeline, the message connects to the top of a new FoC. Messages that the object sends in response, are drawn from the FoC. In this manner, it is easy to see calling patterns.

An additional benefit is that FoC's can also give an indication of duration. The Focus of Control, can be thought of as a message's runtime execution context.

Object Creation, Destruction and Garbage Collection

A message drawn to the side of an object symbol, is assumed to be a constructor and shows an object being brought into existance.

An 'X' symbol placed on a lifeline indicates that the object is nolonger required. A message from another object or from the object itself can be drawn, to illustrate explicit object destruction.

Fragments

Need to be able to identify repeating patterns of message exchanges, so as to reduce the length of sequence diagrams from running applications.

Multithreaded, Distributed, Multi-user, Concurrent

These visual notations need to be investigated and explorered

Target Platforms

  • Standalone
    • Windows Presentation Foundation Application
    • Winform Application
  • Visual Studio 2k5 add-in
    • Express ? Problem in that it's not 'Extensible via VSIP'
      • anyone with ideas to overcome this hurdle please leave a comment, I will get back to you. I consider this group of users as really important, and could do with visualization and testing tool support. It includes loads of children and students.
    • Std / Pro
    • Team - Perhaps role talored

Sources

You should be able to point Sequence at any of the following, as the starting point and be able to generate a srquence diagram.
  • Source File
  • Assembly
  • Trace log file
  • Running Instance
  • CLR Profile output
From within Visual Studio, you should be able to select
  • from the Solution Explorer
    • Solution,
    • Poject, or
    • Folder;
  • from the Class Explorer
    • a Namespace,
    • a Class, or
    • an Operation;
  • a Control from the Visual Designer
I would also like to be able to select class and operations from a class diagram ( at least the std ms one, if not the DSL kind); The debugger, like the call stack window and running processes; The Object Browser;
  • If you can suggest additional source points, please leave a comment below. Cheers

Usage Modes,

  • Static Analysus - Documentational Tool (Reverse Engineering)
  • Edirable - Code Engineering
  • Observational - Visualization Aid
  • Comparision - Debugging and Performance Monitoring

Intregation

  • DSL ? This might be the quickest way to get a VS addon in place and provide a std'ish persistance and interchange format.
  • Modeling Tools
    • Visio
    • Enterprise Architect - a lovely tool

Future

  • Collaboration diagrams, these are similiar to sequence diagrams, but emphasize the connections between the objects.
  • Activity diagrams. show messaging but are much more concerned with action and sub-activity organisation.
  • State Diagrams, consume messages to trigger state transissions. Transissions send messages as a result of their activation. States issue messages as a result of transission to (Entry), transission out (Exit) and periodically while in a state (Do).

Current Status

This project is now three days old. I've tried to outline what Sequence is about, what its' striving to do and hint at it's users.

At the moment I am still formulating requirements, and usage outlines.

Any feedback would be very much appreciated.

Anyone wanting to get involved with this project, please leave a comment below.

Last updated 3rd November 2008

Last edited Apr 17, 2009 at 12:05 AM by Badboyabout, version 6