Blunder Dome Sighting  
privacy 
 
 
 

Hangout for experimental confirmation and demonstration of software, computing, and networking. The exercises don't always work out. The professor is a bumbler and the laboratory assistant is a skanky dufus.



Click for Blog Feed
Blog Feed

Recent Items
 
Republishing before Silence
 
Command Line Utilities: What Would Purr Do?
 
Retiring InfoNuovo.com
 
Confirmable Experience: What a Wideness Gains
 
Confirmable Experience: Consider the Real World
 
Cybersmith: IE 8.0 Mitigation #1: Site-wide Compat...
 
DMware: OK, What's CMIS Exactly?
 
Document Interoperability: The Web Lesson
 
Cybersmith: The IE 8.0 Disruption
 
Cybersmith: The Confirmability of Confirmable Expe...

This page is powered by Blogger. Isn't yours?
  

Locations of visitors to this site
visits to Orcmid's Lair pages

The nfoCentrale Blog Conclave
 
Millennia Antica: The Kiln Sitter's Diary
 
nfoWorks: Pursuing Harmony
 
Numbering Peano
 
Orcmid's Lair
 
Orcmid's Live Hideout
 
Prof. von Clueless in the Blunder Dome
 
Spanner Wingnut's Muddleware Lab (experimental)

nfoCentrale Associated Sites
 
DMA: The Document Management Alliance
 
DMware: Document Management Interoperability Exchange
 
Millennia Antica Pottery
 
The Miser Project
 
nfoCentrale: the Anchor Site
 
nfoWare: Information Processing Technology
 
nfoWorks: Tools for Document Interoperability
 
NuovoDoc: Design for Document System Interoperability
 
ODMA Interoperability Exchange
 
Orcmid's Lair
 
TROST: Open-System Trustworthiness

2006-02-25

 

Blinking at Quarks: Is It an Object that I See Before Me

[I am using this article for serious purpose and also as part of an investigation of the confirmable experience (or lack thereof) of Technorati Tags.  The tags in the earlier article have not been indexed on Technorati and it is unclear why.  This provides a demonstration of the many mysteries that prevent trouble-shooting and verification of a web service where there isn’t anyone at the other end, the intervention of intermediaries is an unknown quantity, and it is not possible for an user to know what happened, only what the consequences are.  All of that will be the subject of other articles.  The mystery is whether the taggings in this article will make it into the Technorati index.]

[update 2006–03–17: I see a place where I used an incorrect name where Deborah Armstrong was intended and want it repaired.  That will also incorporate this page under my visitor map.  I am tightening up a few passages as long as I’m here.]

{tags: }

Professor von Clueless in the Blunder Dome: The Quarks of Object-Oriented Development.  I was discussing Deborah Armstrong’s analysis of fundamental OO concepts in last week’s buddy call with colleague Bill Anderson.  It was easy for us to start challenging the lack of sharpness in the definitions.  I think it is worthwhile to point out a couple of difficulties and also point out how a common practice of software development trips us up.

Descriptive Versus Prescriptive Taxonomies

Before starting, I must emphasize that Armstrong’s classification is meant to be descriptive.  Works of others containing descriptive (or prescriptive) characterizations of object-oriented development were analyzed and summary descriptions of the top eight concepts were then synthesized.  On reflection, it might have been useful to use a lexicographic approach that tolerated different definitions that seemed to cluster out.  That wasn’t done.

To the extent that the result lacks sharpness and may even be confusing, that is evidence for the state of the shared understanding of experts on the matter.

In offering alternatives, although they strike the author as the complete truth of the matter, please ignore the presumption of validity.  These offerings should merely be taken as demonstrative of where clarity is lacking and incoherence can be found.

Reality Versus Computational Representation

If we look at the tabulation for OO Abstraction, OO Class, and OO Object, it is possible to observe that the way the nomenclature is based on somewhat-familiar terms creates pitfalls when it comes to grasping what an application of those concepts is about and how that is manifest in computational artifacts and behaviors. 

In discussion with Bill I noticed that the OO-specialized categories for fundamental concepts are blurred by their suggested connection with (conceptualization of) reality as it figures in human experience.  I didn’t catch that in replicating Armstrong’s taxonomy.  I will redeem myself by capitalizing and prefixing (OO-) my mentions of OO-development concepts.  I am following my own advice with regard to data modeling.  (I won’t go so far as to speak of ooClass and ooObject, as amusing as that could be.)

Confusion with Ordinary Abstraction, Class, and Object

It is easy to confirm that OO terms are confused with the ordinary use of abstraction, class, and object.  That confusion aso clashes with the specialized usages in philosophy and (mathematical) logic, including set theory: 

  • OO Abstraction, OO Class, and OO Object are identified as OO Structure concepts, and this is not exactly what one would suppose as sharp for class and object and especially abstraction generally.  There is a sense where structure might hold, but that doesn’t seem to be divorced from behavior.  I don’t want to debate the aptness of the OO Structure category.  I am simply demonstrating that this doesn't seem to refer to the structure of nature or of reality.
        
  • OO Encapsulation and OO Inheritance, lumped into OO Structure with the others, are clearly observations bearing on OO technology and not nature, reality, or the nature of reality.  Notice how the definitions are all about the design of artifacts.  This is further reason for avoiding confusion of OO concepts and anything about nature and reality.

Extensional Versus Intentional Use

 In computation, it is also important to differentiate between the extensional nature of something (the “what it is” in fundamental terms, if we are so bold) and the intentional view of something (the “what it is for” or what it is an instrument or medium of).  The second is always tied to some situation or context and relies on external conditions not that inseparable from the intentional view of thing itself.  (Even what we take as extensional is possibly intentional at a lower level, but we have to start somewhere.  I touch on how we avoid falling down the rabbit hole in a more-recent article.)

For our purposes, we don’t have to worry about the philosophical subtleties here.  (The injunction to concentrate on the extensional is attributed to the philosopher Willard Van Orman Quine).  The cases that stand out in the OO-development taxonomy are much more bare-faced.

Reality Versus Problems

In the definition of OO Abstraction, we see that it is a purposive activity for “creating classes to simplify aspects of reality using distinctions inherent to the problem.”  The more I look at this, the less I understand what it could mean.  I am baffled about the prospect for simplifying aspects of reality.  I am even more concerned that “inherent to the problem” clearly depends on a particular perspective and is certainly highly-contextual.  (I also notice that OO Abstraction is characterized by its purpose and not its nature, whatever its nature might be.)  I have the following questions:

  •  If an OO Abstraction is performed, where is there to be found an account of the simplifications and the problem-inherent distinctions?  Is it evident in the created classes?  Is it to be found elsewhere?
        
  • If OO Classes are reusable as is often claimed, how is this reconciled with the distinctions inherent to different (perhaps-related) problems? 
        
  • It would seem that OO Abstraction captures something that is essential about “reality” concerning a given situation (or “problem”) and that, to use the usual notion of abstraction, one wants to remove the inessential, incidental, or accidental. 
        
  • Of course, OO technologies introduce their own often-extensive incidentals and it seems that we must now deal with those.
             
  • Fred Brooks has addressed this notion of the essential and the accidental (going back to Aristotle) in his progression of articles built on The Mythical Man-Month.  Brooks is also clear that he has in mind the essence of a software entity and that this essence is abstract. 
        
  • I cannot deny and certainly do not wish to refute that software entities are arrived at for some useful purpose.  However, we need to consider the different abstraction that a software entity is and what might be an abstraction of some entity recognized in the world.  How one manifests in one that which is essential of the other is tricky business.  I’m not sure what of that is meant to be distinguished under the concept of OO Abstraction.

The Subject Versus the Representation

 My final example concerns OO Object.  In the definition distilled by Deb Armstrong, it is “an individual, identifiable item … which contains data about itself and the description of its manipulations of the data.”  I must confess that “item” leaves me cold, and I wonder what had the commonplace “entity” be avoided.  My greater concern has to do with this business about data.

  • If an OO Object can be said to contain data, I suggest that the data is not “about itself,” that is to say, the OO Object. 
          
  • If the data is “about something” I’d say it is about (better: related to some aspect of) the abstracted entity of which the OO Object is representing something essential. 
        
  • Having said that, I am willing to stretch a point and concede “description of its manipulations of the data” simply to point out that the OO Object must be what is intended for that because entities in the world (and their abstractions) can hardly be claimed to be objects having such a quality.

Pondering this, I think what’s missing is how OO Objects are organized to preserve some represented invariant in the way that data and procedures (the behaviors the OO Object is said to offer) are constrained and coordinated together.  Furthermore, these constraints, enacted in a computational entity, are what preserves some essential correspondence to something tied to our purposes for the OO Object.  It’s too mischievous to call this entity-of-our-purposes or intension “the object.”  Let’s speak of it as the OO Subject when we need to be so precise.  (I fear this opens up a torrent of refinements and my use of “subject” is already on shaky ground.)

2006-02-19

 

The Quarks of Object-Oriented Development

Deborah J. Armstrong provides a valuable conceptual classification of features for object-oriented (OO) development (2006).  Armstrong reviewed the literature for characterizations of essential OO qualities.  She synthesized a taxonomy based on concepts emphasized in a majority of 88 sources.  I recommend the general adoption of the eight fundamental concepts (quarks) and the distinction of structure and behavior that Armstrong recommends.

{tags: }

The Recommended OO Taxonomy

Armstrong is looking for more than identification of fundamental concepts for which there is good agreement.  The proposed taxonomy is organized to show how “these concepts fit together in a coherent scheme.”

Armstrong recognizes two categories (called constructs): structure and behavior.  The structural concepts are focused on the class/object relationship in OO approaches.  Behavioral concepts relate to object actions within an OO system.  In repeating the article’s Table 3, I have added the italicized summaries that are provided as part of the analysis in the text.  If there is anything different in the 2003 version originally submitted for publication, I have added those definitions too.  Definitions that are identical between the text, the table, or the two versions of the paper are not repeated.

ConstructConceptDefinition
StructureAbstraction:the act of creating classes to simplify aspects of reality using distinctions inherent to the problem.
Creating classes to simplify aspects of reality using distinctions inherent to the problem.

2003: the act of representing reality in a simplified form by removing certain distinctions so that we can see the commonalities.
Representing reality in a simplified form by removing certain distinctions so that we can see the commonalities.

Class:a description of the organization and actions shared by one or more similar objects.

2003: a generalized description of one or more similar objects that share a common structure and common behavior.
A generalized description of similar objects that share a common structure and behavior.

Encapsulation:a technique for designing classes and objects that restricts access to the data and behavior by defining a limited set of messages that an object of that class can receive.
Designing classes and objects to restrict access to the data and behavior by defining a limited set of messages that an object can receive.

2003: a technique for designing objects in which attributes and methods are defined within a single object and separated from everything else, thus protecting the internal representation of the object.
Data and behavior are defined within an object and separated from everything else, protecting the internal representation of the object.

Inheritance:a mechanism that allows the data and behavior of one class to be included in or used as the basis for another class.
The data and behavior of one class is included in or used as the basis for another class.

2003: a relationship between classes that allows for the data and behavior of one class to be based on another existing class.
Allows the attributes and methods of one class to be based on another existing class.

Object:an individual, identifiable item, either real or abstract, which contains data about itself and the descriptions of its manipulations of the data.

2003: an individual, identifiable item, either real or abstract, which contains information about itself and the descriptions of its manipulations.

BehaviorMessage Passing:the process by which an object sends data to another object or asks the other object to invoke a method.
An object sends data to another object or asks another object to invoke a method.

2003: the process by which an object sends information to another object or asks the other object to invoke a method.
The process by which an object sends information or invokes a method.

Method:a way to access, set, or manipulate an object's information.

2003: Accessing, setting or manipulating an object's information.

Polymorphism:the ability of different classes to respond to the same message and each implement the message appropriately.
Different classes may respond to the same message and each implement it appropriately.

2003: the ability of different objects to respond to the same message and each implement the method appropriately.
Different objects can respond to the same message and implement it appropriately.

Reflections on Taxonomy

I notice three lessons here:

  1. Armstrong compares her taxonomy with two others.  It appears that it is difficult to translate faithfully between any two of the three.  This is an interesting challenge for those who think differences in ontological schemes can be reconciled mechanically.
        
  2. The definitions still aren’t sharp.  I hadn’t intended to compare the two versions this way, but there is a certain level of equivocation and, I think, weak definitions that are going to require further discussion to shake out.  In the table, Object and Method have changed the least between text, table, submission and publication yet I would still quarrel over them (but not here).
                  
  3. The basic taxonomy of eight fundamental concepts in two categories is a keeper.  Although I would quibble over how to sharpen the definitions, I see no reason to change the selection of concepts.  

Reflections on Object-Oriented Technology

I’m also intrigued by the first level of concepts that did not rise above 50% popularity among the materials that were analyzed. 

I think we should pay special attention to the critically-important manifestation category, including execution architecture, deployment, and instantiation concepts.  I’d like to see that singled out for additional treatment.  

I also think this would help us shake out the already-proposed categories.  For example, the notion that it is the classes that respond to messages (see the Polymorphism entry) smacks of a serious implementation assumption.   There are other ways that providing a category for key implementation features would help us expunge residual implementation notions from the top eight fundamental concepts.

The influence of the particular OO technology on how OO development is approached cannot be underestimated overestimated.  In addition, it may be valuable to focus on how the technology has nothing whatsoever to do with “aspects of reality,” positioning us to take a sharper look at just where reality and OO technology in computer software have any connection whatsoever.


Armstrong, Deborah J. (2006)
The Quarks of Object-Oriented Development.  Comm. ACM 49, 2 (February 2006), pp. 123-128.
   The original 2003-03-01 report ITRI-WP034-0303 is available as a free PDF download.  The results are essentially-identical between the original and the updated analysis, although there are intriguing nuances where the two differ. 
    
see also:
Orcmid's Lair 2006-02-03: What Computers Know

  [update 2006-02-19-15:42 Well, I got an idiom wrong (see the last paragraph) and took the opportunity to tie in “What Computers Know.”]

 

Performing in Teams: Where's the Praxis?

FREAKONOMICS BLOG » A Creative NASCAR Incentive.  Stephen J. Dubner’s observations about NASCAR teams has me wonder about how software-development groups excel as teams.  In particular, can high-performance teams function with group rather than individual incentive/compensation?  In the case of the Hendrick Motorsports team bonus for making the Chase for the Nextel Cup, Dubner speculates

“As is often the case with group incentives versus individual ones, the fear of being the guy who holds back the rest of the group is probably a stronger motivation than anything.”

{tags: }

My speculation is that there really must be identification with the group and ownership of the group result for teamwork to happen, whatever explanation the performers offer for the extra effort.   I have seen software “teams” respond with individual cynicism and a fantastic array of undermining passive-aggressive behaviors.  Having practiced most of those in my career I can provide an account of what happens in terms of what I would be doing in those circumstances.  Whatever’s happening, it isn’t pretty and its always “their” fault.

This didn’t come home to me until 2003 when I was in an M.Sc in IT software engineering course where we were called upon to form and work as teams.  This led me to understand that, even in a course where process and teamwork is the point, cowboy behavior tends to be dominant.  The pattern seems to be justified by the view that everyone else is a stupid slacker and by goddess, I am going to get a top grade no matter what.  It was clear in that eight-week experience that we had not constituted ourselves as a team and that it was extremely difficult to do so in a distant-learning team of four spanning 16 time zones.  So I suppose it was remarkable that we produced any result at all.

It also seemed to me that the academic organization had no idea how to deliver a course that relied upon team conduct and team results.  It may be that the forming teams of people who are at best casually related is doomed, but I also think that introducing this into the classroom is likely to be a case of the deaf misleading the blind.  Indeed, for the other courses in which there were group/team projects, the requirement for teamwork was actually far less than in the software engineering course.  Oddly, my greatest experience of teamwork was in a database course where we agreed on our data model in a Netmeeting session spanning eight time zones.  A single episode of shared whiteboard and audio connection provided, for me, more experience of a team than anything else in the entire program.

I have checked around a little bit with others who have performed in or delivered an academic software-engineering program, and the failure of teams and justification of cowboy behavior seems widespread.  When I am most despairing over this, I tend to proclaim that software engineering is too important to be taught by computer scientists.

For those of us raised in a self-styled high-individualism society, I say it takes recurring acts of personal courage to own a team result as our own and also continue to practice achieving powerful results under those conditions.  Oddly, although portrayals of team sports all feature something about fashioning of genuine teamwork, it tends to be a celebration of the coach and the coach’s struggle when not a depiction of the brilliance of a single player.  (The film Tin Cup provides a notable exception and I wonder how many detect that.  The underlying theme of We Were Soldiers is also something to pay attention to, despite its cinematic focus on the commander and on notions of leadership.)

For all of these reasons, I want to know more about this experiment in group incentive that Dubner cites:

The economist Roland Fryer tested this idea not long ago among New York City schoolchildren. He was giving out rewards to kids who did well on their tests. In some classrooms, kids competed individually; in others, they competed as a group. Fryer found that the kids in the groups did better overall.

 
Construction Structure (Hard Hat Area) You are navigating Orcmid's Lair.

template created 2004-06-17-20:01 -0700 (pdt) by orcmid
$$Author: Orcmid $
$$Date: 10-04-30 22:33 $
$$Revision: 21 $