You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Ke...@sunlife.com on 2002/10/14 22:18:43 UTC

Origin of MVC design pattern - was RE: DAO or ... ?



Interestingly enough - MVC was already around even back then.

Below is an e-mail I received from a Professor Trygve Reenskaug who is
based in Norway now but who is widely credited as being the inventor of the
MVC pattern while at the Xerox PARC in the 70's.  I traded e-mails with him
while researching the origins of MVC for my book.

----------------

Dear Kevin Bedell,
I was visiting scientist with the Learning Research Group (Alan Kay's
Small talk group) in 1978/79. My main project was to create a human
friendly interface to an activity network. The example was the activity
network for the building of a 400.000 tons tanker at a Norwegian
shipyard.

The popular idea at that time was to make objects visible on the screen
so that the user could manipulate them directly. This was clearly not
practicable with some 450 activity objects. Further, the users were
used
to seeing their plan from several perspectives: individual activities,
activity networks, timing diagrams, resource loading diagrams, etc.

My first idea was to separate presentation from information because the
information structure is reasonably stable while the way we need to see
it and manipulate it varies with the task. (This idea stems from around
1970 when I first became interested in distributed systems.)

My second idea, or hope, was to create general editors that edited
certain aspects of an information objects. E.g. a general graph editor,
a table (property) editor, a text editor, etc. The information objects
would then have to support the various interfaces needed by the
editors.

The third idea was the concept of a *tool*, whatever the user applies
to
accomplish a certain task. In practice, this meant something that
managed and coordinated several editors. (A window with its panes)

The naming of these three concepts was the subject of long discussions,
particularly with Adele Goldberg. Model-Editor-Tool was one
possibility.
We finally ended with Model-View-Controller. TI implemented the first
MVC in Smalltalk-76 as part of my activity network experiments, and
have
later used it for other projects, writing the code in Smalltalk-78 and
Smalltalk-80.

It is worth noting that MVC was modified by Adele Goldberg and her
group
when they developed the Smalltalk-80 library. The original View was an
editor with both input and output. The Smalltalk-80 View is output
only.
The original Controller (Tool) is missing from Smalltalk-80, while the
Controller now is the input device.

There is also some of the MVC background in
http://www.ifi.uio.no/~trygver/documents/9607OOUserInterface/960711-column.pdf


MVC could profitably be split into several patterns. An MVC pattern
language may be needed. Patterns could e.g., be
      Tool - for decoupling user and model (as described above)
      View - for inspecting and editing a model object
      DirectManipulationInterface - refining the View
      Controller - for coordinating a number of views
      Mediator - for loose coupling between View and Model
      Observer - for keeping Model and View in synch
      Facade - for complex models consisting of many objects
etc.

These are just initial thoughts, I may refine them some day. Or may be
somebody else will do it.

I apologize for taking so long with my answer. I hope it still may may
be useful to you.

Best regards
--Trygve

Kevin Bedell wrote:
>
> Distinguished Professor:
>
> I am writing a book now on STRUTS, which is a
> MVC-based framework for developing web applications.
> Struts is an open source project under the Apache
> Software Foundation.
>
> In researching the origins of the MVC design pattern I
> came across a posting to comp.lang.smalltalk from 1994
> in which an Engineer named Carl Swensson mentioned you
> as being "generally cited as being the creator of the
> MVC concept" while working at the XEROX PARC in the
> late 1970's.
>
> Can you share some short thoughts on your memories of
> the original designs? I'm very interested in what
> original problem you used this pattern to solve. Do
> you remember much about the team that you worked with?
>
> Also, did the MVC pattern evolve in parallel with
> Smalltalk? Or did it to some extent drive the
> development of Smalltalk itself?
>
> I appreciate very much any response you have time to
> write.
>
> Thank you very much,
>
> Kevin Bedell
>
> Author of the upcoming book from SAMS, "Struts: Rapid
> Working Knowledge"
>
--

Trygve Reenskaug      mailto: trygve.reenskaug@ifi.uio.no
Morgedalsvn. 5A       http://www.ifi.uio.no/~trygver
N-0378 Oslo           Tel: (+47) 22 49 57 27
Norway









"Jerry Jalenak" <Je...@LABONE.com> on 10/14/2002 04:02:17 PM

Please respond to "Struts Users Mailing List"
       <st...@jakarta.apache.org>

To:    "'Struts Users Mailing List'" <st...@jakarta.apache.org>
cc:     (bcc: Kevin Bedell/Systems/USHO/SunLife)
Subject:    RE: DAO or ... ?


You guys have it lucky to even know what a pattern is.  I graduated with a
C.S. degree in 1983 - object oriented programming barely existed then, let
alone taught.  Matter of fact we were required to learn IBM Assembler, and
either COBOL or PL/1 as a graduation requirement!  If I remember right, my
"Software Engineering" class dealt with writing a basic compiler for a
COBOL-type language (written in assembler, or course).  You ought to be
where I am trying to play catch-up on all of this Java / web / struts /
....
stuff while trying to deliver projects on time and budget!

Jerry

> -----Original Message-----
> From: John Owen [mailto:johnlowen_bham@hotmail.com]
> Sent: Monday, October 14, 2002 2:45 PM
> To: Struts Users Mailing List
> Subject: Re: DAO or ... ?
>
>
> We were taught algorithms and finite state machines, but I
> don't remember
> any design pattern coverage. I graduated in 1994 and other
> than that, they
> perfectly prepared me for my future as a developer. We
> covered many software
> design principles in my Software Engineering classes, but the
> memory is so
> vague that I can't recall if anything was categorized into patterns.
> ----- Original Message -----
> From: "Chappell, Simon P" <Si...@landsend.com>
> To: "Struts Users Mailing List" <st...@jakarta.apache.org>
> Sent: Monday, October 14, 2002 2:33 PM
> Subject: RE: DAO or ... ?
>
>
> I have no idea whether they teach patterns in University. I
> graduated in
> 1990 and we didn't even have the Internet back then let alone
> Patterns!
>
> Jacob: How about it my friend? Do they teach patterns in the UW?
>
> Simon
>
> >-----Original Message-----
> >From: Wendy Smoak [mailto:Wendy.Smoak@asu.edu]
> >Sent: Monday, October 14, 2002 2:29 PM
> >To: 'Struts Users Mailing List'
> >Subject: RE: DAO or ... ?
> >
> >
> >> It's called experience .... it's why they pay us old guys
> >more than you
> >young bucks! ;-)
> >
> >LOL!  It's also called being absolutely CERTAIN that someone
> >has solved this
> >problem before, and not going off reinventing the wheel.  As
> >an aside, are
> >patterns being taught in computer science?  I'm working on a
> >degree and the
> >senior-level course I'm taking this semester has been the
> >first time I've
> >seen a lecture about them.  And then he only covered three (Factory,
> >Abstract Factory and Singleton) and not very in depth at that.
> >
> >I like Applied Java Patterns by Stephen Stelting & Olav
> >Maassen.  While the
> >GoF book is surely timeless, I'm guessing the examples are not
> >written in
> >Java.  With Applied Java Patterns (and Core J2EE Patterns) I
> >can cut and
> >paste and have a head start on the implementation.
> >
> >--
> >Wendy Smoak
> >Applications Systems Analyst, Sr.
> >Arizona State University PA Information Resources Management
> >
>
> --
> To unsubscribe, e-mail:
> <ma...@jakarta.apache.org>
> For additional commands, e-mail:
> <ma...@jakarta.apache.org>
>
>
> --
> To unsubscribe, e-mail:
<ma...@jakarta.apache.org>
For additional commands, e-mail:
<ma...@jakarta.apache.org>


This transmission (and any information attached to it) may be confidential
and is intended solely for the use of the individual or entity to which it
is addressed. If you are not the intended recipient or the person
responsible for delivering the transmission to the intended recipient, be
advised that you have received this transmission in error and that any use,
dissemination, forwarding, printing, or copying of this information is
strictly prohibited. If you have received this transmission in error,
please immediately notify LabOne at (800)388-4675.



--
To unsubscribe, e-mail:   <
mailto:struts-user-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <
mailto:struts-user-help@jakarta.apache.org>







---------------------------------------------------------------------------
This e-mail message (including attachments, if any) is intended for the use
of the individual or entity to which it is addressed and may contain
information that is privileged, proprietary , confidential and exempt from
disclosure.  If you are not the intended recipient, you are notified that
any dissemination, distribution or copying of this communication is
strictly prohibited.  If you have received this communication in error,
please notify the sender and erase this e-mail message immediately.
---------------------------------------------------------------------------



--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>