The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

Design of Assertion Checking System

Hi All,

I am relative greenhorn to these forums and have just finished reading Joel's book version of this software.

Coming to the point I am wondering if anybody could comment on the design of a "Performance Assertion Checking" system.

The idea is that a developer makes some assertions about his code and use these to test the evolution of the performance of the code.Has anyone has similar experience.

My current block is "Whats a better way to translate these assertions in a specified language (that are to be checked against specified logs or runtime instrumentation) into.. say  CLR, or assembly or Bytecode that could be executed?"

Currently I have written a parser that parses the specification and holds it in a data structure.

Appreciate your time.
Any Ideas..
Paddy Ganti Send private email
Thursday, September 09, 2004
Excuse my typos out there in the original post.

I wanted to add that I am considering a Read-Evaluate-Print Loop a la LISP as the primary mode of execution.

The idea is  to spawn a listener which is fed the spec and it would output the assertions that failed.Does this make sense or am I way off the mark?
Paddy Ganti Send private email
Thursday, September 09, 2004
Are you referring to something like CPPUnit?

You can define a suite of tests, each containing a few asserts. If all the asserts pass, the test suite passes.
Nigel Send private email
Thursday, September 09, 2004
Yeah! Some part of it but more general in nature.

For simplicity's sake, Initially I think of this as a generic log processor and not tied to any language like C++ but merely based on events(represented in text) that are generated by the program.

I also forgot to mention that idea of this is to make sure the developer makes some assertions (like safety limits) and in production the Ops team could use this to check for failure of those assertions.I can see it useful for regression testing too.Assume each module of the program produces a log and you would want to write compound assertions like

(average of values some condition from module X) AND (number of threads alive from module Y) then assert <something>.

and this assertion needs to be checked periodically even in production(once the developer marks the threshold values) just to be proactive to performance problems.

I already have a well-established mini-language for this purpose as such.The question is for this kind of project would I compile or interpret?

Excuse my lack of clarity in the original post..
Paddy Ganti Send private email
Thursday, September 09, 2004
This is what the unit testing frameworks (jUnit, nUnit, etc) are built upon.
KC Send private email
Thursday, September 09, 2004
(a) Does that mean it could be used in production.
I dont think so.If it is tthe case how come it isnt touted as a continous monitoring tool.

(b) Does this also mean it could parse Network Logs as well as System Calls log with equal ease.

Please excuse my ignorance out here,
Paddy Ganti Send private email
Thursday, September 09, 2004
<Writing Solid Code>: Microsoft's Techniques for Developing Bug-Free C Programs
by Steve Maguire
It explains everything.
redguardtoo Send private email
Thursday, September 09, 2004
If you're wanting to do this during runtime where you will not have control over the inputs and any monkey with a keyboard can enter values, you'll need something a bit more robust.

In my current *large and potentiall mission critical app*, I ahve to write simple messages to a database every so often.  They basically say who did what operation and when.

Assertion checking during runtime starts to get into "Rules Engine" scenarios...
KC Send private email
Friday, September 10, 2004
Assertions with regards to the performance to be exact.
The same can be said of your mission critical app. example as assertions of security/operation.

Here is my app whose features tend to linearly increase in each quarter.I knew last quarter the application was doing fine but this quarter its takes aeons to return.Now where and how exactly did this degradation occur.My guess is that once you 'baseline' the performance then use that as a benchmark and see if the assumptions made by the programmer hold good in production and other circumstances.

Appreciate your inputs on this issue so far.
Paddy Ganti Send private email
Friday, September 10, 2004

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
Powered by FogBugz