short notes is a journal on software, systems, engineering practices among other things.
Copyright © 2002-2006 short notes. All rights reserved.    contact address: email to the editor   ISSN 1543-6489

short notes
 

CRC


Ward Cunningham calls his invention CRC or class, responsibilities and collaborators "a way of describing objects". After all, much of OOAD is to think about software inhabited by various roles (or classes), who interact with each other as collaborators, fulfilling their respective responsibilities. The beauty of CRC is its simplicity: Write on small index cards and shuffle them around as needed. Another beauty of CRC is its wide applicability. CRC's usefulness for designing implementation is obvious. Mostly overlooked aspect of CRC is its usefulness for high level activities like requirements analysis, use cases design and even setting up engineering process.

References: The original CRC cards "Object Design: Roles, Responsibilities, and Collaborations" by Rebecca Wirfs-Brock and Alan McKean


 
permalink   
 

UML is UNCOL


Upcoming release of UML 2 will generate interest in "model driven architecture" or MDA. MDA has to be one of the most ambitious ideas from software engineering. It envisions development process as creation and refinement of models expressed in UML. Architects will provide UML models as input to new tools that support UML 2, and the tools will generate code for implementation technologies like J2EE, or .Net. In other words, UML 2 and its tools are programming languages and their compilers taken to higher level of abstraction to bridge the gap between business and IT. Right model means quality software. UML is UNCOL.

Dave Thomas' "UML - Unified or Universal Modeling Language?" helps us build resistance to seduction of top-down mindset. Ted Neward also points out a few pitfalls of "model-first" mentality. We welcome readers' models on the relation between this kind of ambitious deductive reasoning and confusion of nomenclature and phenomena.

Update on 2003-09-13 Martin Fowler (who should get credit for making UML useful and accessible through his books and articles) argues that MDA's claim of platform independence is baseless.


 
permalink   
 

Add one in Java


Do you ever wonder which of the following is the fastest way to increment an integer in Java? i++; ++i; i+=1; i-=-1; Answer here.


 
permalink   
 

Games for enterprise computing


From the latest Contours we find this gem:
The problem: Most software used in large organizations (business, academic, government, etc.) is complex only at the level of implementation -- the real behavior is simple. Invoices are totaled. Invoices are mailed. Accounts are balanced. Appointments are made in a deterministic fashion. ("If exchange server shows her available at 10:20 tomorrow, schedule her to meet with the downsizing committee").
The gaming world frequently addresses more interesting issues. These days game developers study physics [and] (what passes for) AI. The problems of moving a ship through space may have more in common with processing an invoice or an appointment than one might expect.

A limted solution: For example, software that supports workflow is being used for more sophisticated approaches for handling invoices and appointments. (IBM, Microsoft, Bea are working on Business Process Execution Language for Web Services (BPEL4WS) and other flow specifications). The specifications attempt to handle well defined interactions. It’s not clear, however, that ‘well defined’ is good enough to support rich behavior in an organizational context in which personnel,organizational relationships (partners, competitors, etc.), and requirements are constantly shifting.

A deeper solution? Metaphors from the physical world may be more appropriate and the game developers may have a leg up.

See also previous short notes on agents and on business process management (parts one, two and three).

Steven Johnson's essay in Wired about AI in the latest games provides a generalist overview on how AI is changing games.


 
permalink   
 

Objects have failed?


Richard P Gabriel provokes: "Objects have failed."


 
permalink   
 

More intertwingularity


At the end of his essay on intertwingularity or phenomenon of deeply entangled inter-depedent messages and information, Jamie Zawinski writes

This sort of model [of utilizing intertwingularity] is not applicable merely to the domain of [email] messages; it applies equally well to any corpus which has structured, potentially-ambiguous references (or rather, representations of references.)

For example, source code.

[See Intertwingle below.]

Programmers have been making many tools to deal with volumes of source code. One simple way is to format the code in certain convention and use tools like grep or text editor's search commands. Another method is to use simple databases like TAGS or source code browsing tools like cscope to augment text editors. More tools like lxr (Linux Cross Reference) and global that generate web pages came during last several years. These tools however know only of source code text, not its semantics as parsing is done by compilers after editing code is finished.

While people on conventional operating systems deal with files, Smalltalk programmers store their source code as objects in real databases. Because these databases or images are written in Smalltalk and interact with users in Smalltalk (ie images know the semantics and inter-relationships expressed in the source code), users need not bother to disambiguate manually what a piece of text in question may be as they browse the code. Smalltalk browser has been evolving to many interesting directions like Whisker, Refactoring Browser and Star Browser.

Old Lisp Machines (like the ones Zawinski used) had similar features that make an old timer like Kent Pitman nostalgic and it is easy to see why.

Mainstream Java programmers are discovering productivity gains from using an environment that does more than text search but rather understands their code like IntelliJ IDEA. As more attention is focused on making sense of far too many artifacts of software builing, more tools like Hipikat that can find relevent information from "source code, documentation, bug reports and fixes, e-mail, and version information", will receive warm welcome.
 
permalink   
 

Mixing Design by Contract and Java


Interested in Design by Contract and Java? Read "Evaluation of Assertion Support for the Java Programming Language" by Reinhold Plösch.


 
permalink   
 

 
Published since 2002-04-23
Updated: 2010-10-16
status
Youre not logged in ... Login
menu
November 2024
SunMonTueWedThuFriSat
12
3456789
10111213141516
17181920212223
24252627282930
October
recent
recent

RSS Feed

RSS integration

Made with Antville
powered by
Helma Object Publisher