UI logo
The Webzine for Interaction Designers
uidesign.net
 
     
 
  Site Search

Advanced Search
 
  Subscribe
Receive site update email alerts.
Enter your email address.
 
  Resources
Recommended Books
Links
 
  Site Info
Update Notification
Send Feedback
FAQ
Copyright/Link Policy
Review Scoring
Site Goals
About us
 
 
January 2nd, 2000
     
 

RUP Article Inaccurate
replies to UI RUPture

 
     
 
Letters
 
 

Hi David,

I'd like to disagree with your comments on RUP and UI design. I've been involved as a consultant with three RUP projects, all of which had a significant UI component, two of which were very large, one small.

Firstly, there are factual errors, omissions and seemingly deliberate misleading statements:

* The OMG does not proffer the Unified Development Process as a standard. The RUP meta-model is being put forward as a possibly standard way of describing processes - the content of the process itself is not.
* A more elaborate, detailed process does not mean a more proprietary process
* Rational has not 'recently elaborated RUP' to include the boundary control entity classes. This technique has been around in Objectory; i.e. the precursor to RUP.
* Stating that UI Design is part of the requirements phase does not make it a 'Poor Cousin'. RUP is obviously trying to get UI Design involved up front, to avoid the issue with BA's or SA's writing the requirements in isolation.

Second, Use Cases as proposed by RUP are *very* user centric, not system centric (hence the name!). Specifically, the RUP states that internal actions that the system performs are not part of the use case, but instead provide an observable result to *an actor*. The RUP puts forward techniques such as storyboarding to complement use cases to help UI design. Again, it also includes the role of UI Designer as part of the requirements workflow to help ensure that UI design is not forgotten.

The role is important in UI, as your Constantine quote points out. However, this does not mean that actors are any different to a role! Constantine must never have read the UML definition of an actor; refer to the UML Reference Guide, page 144: "Each actor defines a set of roles that users of a system may assume when interacting with the system" This definition is hardly in conflict.

Reading RUP it is apparent that the Control class is never intended to include business logic for modifying entity data - it is purely a co-ordination device. This *is* good OO design, since it separates out different responsibilities - that of co-ordination of events and data manipulation. You yourself have noticed that Sun have followed this principle with Session and Entity Enterprise Java beans, so Rational is certainly not alone here. Are you therefore suggesting that all the EJB systems are not scalable???

RUP does not suggest that Control analysis classes end up as a single coded class. It states the very opposite: that when you move to design you have to take into account constraints other than behaviour, which usually always leads to creating many design level classes from individual analysis classes - hence the reuse problems you refer to in reality never eventuate.

In your example with the 4 use cases that include a login use case, you state: "But must we also not instanciate a <> class for UseCase1?"

The answer is that the control class would be instantiated for use case 1, but this occurs when the user starts this use case, which in turn would start the login use case, if required. RUP states this rather clearly. Hence multiple control logic for a large number of use cases is not started simulataneously. Furthermore, a large system will never have 400 use cases, unless the author of the use cases has misunderstood the phrase 'a use case provides observable value to an actor'. The largest system I've seen (a national social security system of systems) had around 180 use cases. A public transport ticketing system for trains, buses etc had around 50.

I look forward to your answer!

Best Wishes
George Davis

uidesign.net reply...

I'd like to disagree with your comments on RUP and UI design. I've been involved as a consultant with three RUP projects, all of which had a significant UI component, two of which were very large, one small.

Firstly, there are factual errors, omissions and seemingly deliberate misleading statements:

* The OMG does not proffer the Unified Development Process as a standard. The RUP meta-model is being put forward as a possibly standard way of describing processes - the content of the process itself is not.

This was incorrectly reported to me by a Rational Consultant who was poorly informed. I have made the correction to the article. Thanks for pointing this out.


* A more elaborate, detailed process does not mean a more proprietary process
* Rational has not 'recently elaborated RUP' to include the boundary control entity classes. This technique has been around in Objectory; i.e. the precursor to RUP.

This is also strictly true. However, Rational Consultants are actively teaching the technique as part of the elaboration process. As has been pointed out to me by Philippe Krutchen, himself, this does not make it part of RUP. RUP does not define such detail, that is left to the implementation. However, the implementation being taught by Rational does include them. Decide for yourself whether BCE is "in" or "out" of the RUP.


* Stating that UI Design is part of the requirements phase does not make it a 'Poor Cousin'. RUP is obviously trying to get UI Design involved up front, to avoid the issue with BA's or SA's writing the requirements in isolation.

RUP offers no notation for UI design. It also offers no advice on how to undertake UI design as a design process, or how to do analysis for it. It simply states that UI is done as part of the requirements phase. In practical teaching all UI classes are Boundary classes. Not very helpful.

Second, Use Cases as proposed by RUP are *very* user centric, not system centric (hence the name!).

I think, as Constantine also pointed out, this was Jacobson's original intention. This intention has been lost. Viz, the quotes I lifted from Kruchten's latest book on the topic.

Larry recently shared a conference panel chair with Philippe in Sydney Australia about 3 weeks ago. They had a very similar conversation. The reality is, that RUP is NOT about users - it's all about the System.

Specifically, the RUP states that internal actions that the system performs are not part of the use case, but instead provide an observable result to *an actor*.

The problem with this is that anything can be an Actor. Including any other class, sub-system, component, interface, legacy system and so forth.

The RUP puts forward techniques such as storyboarding to complement use cases to help UI design.

Without explanation of how you might use them or how you map them to/from Use Cases.

Again, it also includes the role of UI Designer as part of the requirements workflow to help ensure that UI design is not forgotten.

This is a band aid when a complete rethink was required. As Constantine points out - there is no UI analysis or design process in RUP.

Sure everyone doing RUP needs to do UI analysis and design, but the process doesn't specificy how it is done or how you map it into the process. The only reasonable attempt at solving this problem was presented by Deborah Mayhew in her book The Usability Engineering Lifecycle, and in any event she based her technique on OOSE (the forerunner of Objectory).

The role is important in UI, as your Constantine quote points out. However, this does not mean that actors are any different to a role!

What Larry is after is a separation from the idea of an Actor as a collection of Roles from the altogether different idea of an Actor as another system, sub-system, component, class, interface.

Constantine must never have read the UML definition of an actor; refer to the UML Reference Guide, page 144: "Each actor defines a set of roles that users of a system may assume when interacting with the system" This definition is hardly in conflict.

I believe that I quoted that also. I also believe that Larry is well aware. Remember Larry is the guy who invented Structured Analysis and Design in the 1970s. He ranks in the top 5 IT people of all time alongside Knuth and Yourdon.

Reading RUP it is apparent that the Control class is never intended to include business logic for modifying entity data - it is purely a co-ordination device.

I believe that you are puting the correct interpretation on a Controller. A Jacobson "control" class however, is a flow of control for the application where the application and business logic are tightly coupled. From your description, you believe as I do that the state of the presentation layer (Views and Controllers) must be separated from the state of the business system. This is not the Jacobson approach.

This *is* good OO design, since it separates out different responsibilities - that of co-ordination of events and data manipulation.

On the contrary - it breaks encapsulation. Basically, it is old fashioned procedural programming wrapped in object technology. You could be doing it in Pascal.

This should be no surprise. Use Cases and Use Case modeling / analysis are procedures and procedural decomposition. Don Firesmith pointed this out in a well publicised paper as early as 1995. Ben Kovitz is also a published author who has made similar observations.

You yourself have noticed that Sun have followed this principle with Session and Entity Enterprise Java beans, so Rational is certainly not alone here. Are you therefore suggesting that all the EJB systems are not scalable???

The real issue with EJBs was the lack of re-entrancy in the 1.0 specification. This is partially fixed in the 1.1 specification. As a result of no re-entrancy and the heavy cost of a remote call over http, proper business modeling in Entity Beans was not possible. The logical flow of a business method had to be pushed up to a Session Bean, which made the BCE modeling method empathetic with the EJB 1.0 specification. It is now possible to do proper business layer modeling in EJB 1.1 particularly with Application Servers such as Weblogic which will not invoke a remote call over http between Entity Beans running in the same box.

RUP does not suggest that Control analysis classes end up as a single coded class.

Rational are very much advocating that and teaching in their consultancy classes. Jacobson was also advocating this back in 1994 when he suggested that you code the use case as a class.

It states the very opposite: that when you move to design you have to take into account constraints other than behaviour, which usually always leads to creating many design level classes from individual analysis classes - hence the reuse problems you refer to in reality never eventuate.

I wouldn't agree with this. The reality is that the analysis and decomposition method is procedural. If you do good quality procedural analysis then you may get reasonable re-use in a single application but you have tightly coupled application flow with business logic.

In fact in defence of RUP it is often claimed that "Reuse across applications never really happens anyway". This is fundamentally not the case!

How many applications have you seen where there was a sister Administrators Application which reused the same data? In the web world where we have HTML, cHTML, HDML, ML and VXML versions of web sites, it most definitely is the case, that we have multiple UIs on the same business logic.

In a good OO implementation, multiple UIs would reuse the same business logic. With a BCE implementation it is not possible.

Now consider the 5 user interfaces for a web implementation each with 5 interaction paradigms. If you build that cleanly with a separate business layer encoding all the business logic, then you only have to graft on a different UI - different control flow. It sounds to me that this is what "you" have been doing but it is not what the Rational Consultants are advocating whilst using the latest versions of RUP.

What "you" have been doing is much closer to the model I presented in my MVC papers i.e. only the interaction control flow is captured in a Controller layer - not the business flow. This is a crucial point of difference. With BCE the business flow IS the application. With the Sun reference model for MVC, the presentation layer (Views and Controller) IS the application. The business logic exists on its own.

In your example with the 4 use cases that include a login use case, you state: "But must we also not instanciate a <> class for UseCase1?"

The answer is that the control class would be instantiated for use case 1, but this occurs when the user starts this use case, which in turn would start the login use case, if required. RUP states this rather clearly. Hence multiple control logic for a large number of use cases is not started simulataneously.

I think you are completely missing the point here. How do you know which of the 4 use cases to start when the "Login" button is pressed?

There is no way of knowing unless the user has indicated which task he wishes to conduct. However, in a good a-modal user interface the user shouldn't need to indicate which task he is intending to conduct. That is the difference between a-modal and modal i.e. tasks are modal. If you have to indicate which task is being conducted, you are clearly stating which "mode" the system should switch into. This is crucial point and one which very few Rational people seem to understand.

Furthermore, a large system will never have 400 use cases, unless the author of the use cases has misunderstood the phrase 'a use case provides observable value to an actor'. The largest system I've seen (a national social security system of systems) had around 180 use cases. A public transport ticketing system for trains, buses etc had around 50.

Well I have worked on a bigger system. It had 3500 pages of Use Cases. It turned into 1.5 million lines of Java. It had 600 distinct Views in the UI. The requirements took a team of 18 people over 2 years to write. The Use Case writing effort was led by the IBM Object Consultancy.

I believe that your objections are founded on the fact that you have obtained good results whilst running RUP style projects. What you should ask yourself is, "were these results obtained because of RUP or because we worked around its deficiencies, or indeed because we simply had really great people".

My belief is that RUP is not repeatable at any level over and above basic procedural programming. Where I have seen RUP projects succeed, it has been because of the people who were smart enough to work around the problems.

In other words, they were not dogmatically following RUP. If you reread what I wrote carefully you will see that I stated that I do not believe that dogmatic adherence to RUP is repeatable or for that matter will scale to significantly sized systems.

Thanks for your long and interesting letter. :-)

Cheers
David Anderson
Editor

 
 
Related Articles
Most Recent
Hot Topics
Most Popular
  Comment on this feedback...  
   
uidesign.net
hosted by likk.net
           
 
Copyright uidesign.net, 1999 - 2003.
The UI logo device and uidesign.net wordmark are trademarks of uidesign.net