SEW 2.0:  The System Engineer's Workbench


SEW is a distributed real-time analysis tool intended to assist academic researchers in algorithm development and teaching.  It has at its roots a generalized modeling framework for distributed computing systems, and supports most known real-time analysis algorithms. Currently, only a few algorithms are implemented, but others can be added readily.

SEW has its roots in research into real-time scheduling analysis performed at Carnegie Mellon University.  Several variations of a scheduling analysis tool have been made over the years, starting with a single-resource analysis tool implementing Rate Monotonic Analysis, which then grew into distributed computing analysis tools.  SEW 2.0 represents the first public release of these tools.

This page serves as a source for news, developments, and obtaining code, and should be updated frequently.

This page has been viewed  times since July 21, 1999.


Several examples of SEW windows appear on this page.  For more detail, see the  SEW Manual.

An example target-platform model, showing the elements that model a PC running VxWorks.


Introduction

The System Engineering Workbench (SEW) is an analysis tool that implements a formal framework for describing real-time computing systems. This formal framework enables the system designer to design and subsequently analyze a large-scale, distributed, heterogeneous real-time system to ensure that all application timing requirements (both distributed and single-resource requirements) are met.

Features:

Benefits:

An example application architecture, showing the game controller and the audio mixing task, along with ports linking to external elements in the architecture hierarchy containing data streams.

License

SEW may be used for any purpose in either academic or commercial environments.  You may modify the source code and use it in your own research or work.  You are not permitted to sell anything derived from SEW code; your own enhancements are excluded from this restriction, including enhancements that are contributed to the SEW project.  The SEW Project retains copyright on the SEW code, except where subsidiary libraries exclude such copyright.

Contributions back to the main source distribution are encouraged.  I will maintain various releases as space permit, and I am currently maintaining a CVS repository for code development.


Intended Use

SEW is intended for two purposes:  furthering academic research, and for use in teaching classes on real-time systems analysis.

In principle, everyone developing real-time analysis algorithms bases their work on the current known set of models and algorithms.  However, building tools to test these algorithms is usually difficult, and so the academic world ends up with a lot of papers that have algorithm descriptions, but no ready mechanism to share implementations.  Also, most researches end up "reinventing the wheel", so to speak, as everybody needs a common framework for describing real-time systems that has enough data. Too often we find good algorithms or analysis techniques, and yet cannot share them effectively due to subtle differences in assumptions, data types, what have you.

SEW provides a common framework, with a hierarchical component-based system model, a graph-based service time model, and the algorithms to convert to standard simple and complex service time models.  Researches developing algorithms can use the data stored in these models without having to (1) create models, (2) create ways to get data into the models, (3) create a user-interface for testing and display (even command-line driven programs count as a user-interface, after all).

I am hoping SEW will become the standard framework for real-time analysis algorithms developed and shared among the real-time community. Deficiencies in the framework can be easily added to without having to redevelop an entire modeling methodology and system description.  To this end, I encourage both researchers and students to contribute their work to SEW and submit changes and bug fixes.  Through the work of many, all will prosper.


An example component model, showing looping and branching constructs (controlled by scenario parameters) as well as non-ideal scheduling costs (CEntry).


Obtaining SEW

SEW is based on the C++ Standard Template Library (STL), which is included with most C++ compilers.  Other versions of the STL are available as well.  SEW uses Tcl/Tk for its user interface along with the Tix widget package. SEW uses PCCTS ("The Purdue Compiler Construction Tool Set") to create its parsers, and uses the Graph Template Library to implement its underlying graph structures.  Source code for PCCTS and GTL are included.

Download SEW source, version of July 21, 1999, approximately 1.5 MB

See the README file for installation directions.

You must also download Tcl/Tk 8.0.5 from  Scriptics.com  and Tix 4.1.0 from the TCL Consortium.  This site cannot host them due to space constraints.

If you would like to be informed of updates to the SEW code, please mail me to say so, and I will add you to a list of people to be so informed.  There will probably be a flurry of initial releases as more bugs are flushed out, followed by a more sedentary release rate as things settle out.

Updates and Patches are available.  The latest patch is 2.0.1, dated July 24, 1999.  All patches are relative to the July 21, 1999 release (2.0.0).


WARNING

SEW is alpha software at this point, and will likely crash a lot.  Most of this is due to my own inabilities as a programmer, and insufficient testing.  Also, some of the UI directions are misleading or incorrect. If you find that it crashes, I encourage you to find out why (probably a NULL pointer was not tested for).  If you are so inclined, you may mail me to say you have found a bug, but can't fix it.  If you send the files you're using, it would be a great help.

Of course, the best thing is for you to fix the bug yourself, then mail me a patch.

Please note that a lot of the menus don't do anything, as these represent intended functionality.  Don't be alarmed.


System Requirements

SEW was developed under Linux using EGCS 1.1.2 (egcs-2.91.66) and libc5.  It has been ported to Solaris (-DSOLARIS), and a port to Windows NT using Visual C++ is under way.  Approximately 256 MB of hard drive space are needed for compiling (with debugging symbols), and 128 MB of RAM to run the debugger and SEW simultaneously.  Without debugging information, 100 MB of hard drive space and 32 MB of RAM are needed.


Related Papers

No real papers on SEW 2.0 have been published, although there have been some publications on SEW 1.0 (mostly by Saurav Chatterjee, if you search through the various conference papers).  My Ph.D. thesis on the entire modeling framework is available, but only through e-mail as my account is currently limited to 5 MB of data, and SEW is taking up most of that.  If you're interested,  mail me and I'll send a PostScript file back as an attachment.

 The SEW Manual will be on-line soon, and contain both background data and interface directions.


Release History



Contributors

The following people have contributed time and effort to the SEW project in some form.
File version 1.01, July 24, 1999 by K. Bradley .