8

My problem is simple : when I'm programming in an OO paradigm, I'm often having part of a main business process divided in many classes. Which means, if I want to examine the whole functional chain that leads to the output, for debugging or for optimization research, it can be a bit painful.

So I was wondering : is there an IDE that let you put a "process tag" on functions coming from different objects, and give you a view of all those functions having the same tag ?

edit : To give an example (that I'm making up completely, sorry if it doesn't sound very realistic).

Let's say we have the following business process for a HR application : receive a holiday-request by an employee, check the validity of the request, then give an alert to his boss ("one of those lazy programmer wants another day off"); at the same time, let's say the boss will want to have a table of all employee's timetable during the time the employee wants his vacations; then handle the answer of the boss, send a nice little mail to the employee ("No way, lazy bones").

Even if we get rid of everything not purely business-related (mail sending process, db handling to get the useful info, GUI functionalities, and so on), we still have something that doesn't really fit in "one class". I'd like to have an IDE that would give me the opportunity to embrace quickly, at the very least :

  • The function handling the validation of the request by the employee;
  • The function preparing the "timetable" for the boss;
  • The function handling the validation of the request by the boss;

I wouldn't put all those functions in the same class (but perhaps that's my mistake ?). This is where my dreamed IDE could be helpful.

Raveline
  • 381
  • 1
  • 2
  • 9
  • Are you looking for an IDE that will generate a call graph? – Frank Shearar Mar 03 '11 at 08:53
  • Not exactly : I'd like all my process-related functions to be on a same synoptic page (withtout, of course, being in the same files). – Raveline Mar 03 '11 at 08:56
  • 1
    Oh, you mean tag a bunch of methods so you can view them together? – Frank Shearar Mar 03 '11 at 10:08
  • Exactly ! A way of organizing this in the order of their call will be a plus, but already a simple tagging option would be great. – Raveline Mar 03 '11 at 10:09
  • @Raveline: "tag a bunch of methods so you can view them together" means "class". Design your classes better. What's stopping you from designing a class that contains the methods you want **all in the same class**? – S.Lott Mar 03 '11 at 11:02
  • 1
    @S.Lott: Off the top of my head, "what are all the methods involved in rendering a Foo?" Hey presto: some methods in your database access layer, your view class, your model class, ... – Frank Shearar Mar 03 '11 at 12:52
  • @FrankShearar : Exactly :) – Raveline Mar 03 '11 at 13:09
  • @Raveline: "some methods in your database access layer, your view class, your model class" is not related in anyw ay to "main business process". Please **update** your question to explain what you mean. Please don't confuse **many** layers which apply to one object with "main business process" which is all in **one** layer and applies to many objects. – S.Lott Mar 03 '11 at 13:17
  • Added an example (albeit a bit crappy). Hope this will make the question less confusing. – Raveline Mar 03 '11 at 13:36
  • @Raveline: "I wouldn't put all those functions in the same class" Why not? Please explain your reasoning. – S.Lott Mar 03 '11 at 13:39
  • Well, at first glance, I'd say a "EmployeeRequest" would be a class per-se, with its own validation function. Admittedly, the Boss validation could be put in the same class, depending on the context ; but I definetly wouldn't put the timetable computing in the same class. A time table is not a EmployerRequest. It is a different thing, that could be used in many other part of the app. So, for me, computing a time table between two dates for a given team would be a function of TimeTable class (even maybe a TeamTimeTable class). How would you do it ? – Raveline Mar 03 '11 at 13:42

3 Answers3

2

If you are using the Microsoft toolset, look into Windows Workflow. It has some graphical designers and some pretty powerful features for the sort of process you are describing. I've used it in connection with Sharepoint, but you can incorporate workflow into any app.

Kate Gregory
  • 17,465
  • 2
  • 50
  • 84
2

I primarily do Java and the only thing I've heard that sounds similar to what you want is Mylyn

"Mylyn makes tasks a first class part of the IDE, integrates rich and offline editing for ALM tools, and monitors your programming activity to create a "task context" that focuses your workspace and automatically links all relevant artifacts to the task-at-hand."

You need to be developing using Eclipse IDE for this to be of use.

Alb
  • 3,359
  • 2
  • 20
  • 24
0

Looks like you need a graphical DSL, from which you'd generate your code. Take a look at the Microsoft DSL Tools.

SK-logic
  • 8,497
  • 4
  • 25
  • 37