FreeCASE Glossary      Amsterdam 24 june 1998.

< < Last Update 3 september 1998 > >

This is a glossary of the vocabulary related to the construction of FreeCASE. If you are looking for terms on the web, take a peek at the web101-glossary.

On 19 june 1998 Pierre Jarillon posted: "I believe it is necessary to have a reference for the all the terms which are used... RCS, SCCS, UML, SGML ... A glossary with links would be a good idea.", just after John Torjo  posted: "Some of the volunteers here are novices in certain areas, so talking in abbreviations [ACE, MOF] doesn’t help us a lot." and Jeff Wolfe replied:
"Good idea!"
Here it is. English is not my native language, so don't choke on every mistaek. Feel free to comment, ask me questions about the list. I'm also doing other things so my response might take a while.


For now most of the terms and abbreviations come from accepted standards for software and communications. As time goes on I think we will need words with agreed upon meanings to effectively discuss the FreeCASE internals. I will try to understand the discussions, ask for clarification if I don't, and edit whatever comes from that into an acceptable  -I hope-  definition and an explanation or reference.

There is a short and a long format. The short format only gives what an acronym stands for, or a short indication of what a term means within the domain of FreeCASE (think about the meaning of the word repository in different settings, for instance). The long format gives an explanation of selected themes and hints at the relevance to the project. Do not hesitate to ask me for clarification. This goes without saying for the text here, but also: if you need some explanation of a remark at the freecase-devel@freecase.seul.org MHonarcmailinglist archive, the discussion board (note: Lately most of the discussion is at the mailinglist, not at the discussion board. I know because I checked. I'll check again, so your contribution will not go unnoticed if you still put it there :-) or somewhere else - as long as it is FreeCASE related -: ask 


Short

 
ACE ADAPTIVE Communication Environment
ACID Atomic, Consistent, Isolated and Durable
AD Application Development/Design
API Application Programming Interface
CRC Class, Responsability and Collaboration
CASE Computer Aided Software Engineering
CRUD Create, Retrieve, Update and Delete
CDIF Case Data Interchange Format
CM Change Management
CORBA Common Object Request Broker Architecture
CDF Common Data Format
CLI Command Line Interpreter
concurrency simultaneous access to resources
critic pessimistic watchdog type of agent with SE knowledge
CVS Concurrent Versions System
DOM Document Object Model
DTD Document Type Definition
entity thing of interest.
E(A)R Entity, (Attribute, )Relationship
FSF Free Software Foundation
GEF Graph Editing Framework
GNU GNU's Not Unix
(L)GPL (Library) General Public License 
GUI Graphical User Interface
IAD Iterative/Incremental/Interactive AD
IDE Integrated Development Environment
IDL Interface Definition Language
IIOP Internet Inter ORB Protocol
inter between
IPC Inter Process Communication
JAD Joint AD
JRP Joint Requirements Planning
KDE 'K' Desktop Environment
meta about
MOF Meta Object Facility
MOM Message Oriented Middleware
OCL Object Constraint Language
OO Object Oriented
OOA&D OO Analysis and Design
OOP OO Programming
OOSE OO SE ;^)
ORB Object Request Broker
object model of an entity, characterised by behaviour and state.
pattern three-part rule, which expresses a relation between a certain context, a problem, and a solution
persistence all that happens to data before and after it is active as an object.
process 1. The layout of activities in the development of software (as opposed to the modelling language). 
2. The execution of (part of a) program.
protocol ruleset to which parties comply to communicate.
RAD Rapid AD
RCS Revision Control System
RDF Resource Description Framework
repository well organized persistent SEdata.
RPC Remote Procedure Call
SCCS Source Code Control System 
SE Software Engineering
SGML Standard Generalized Markup Language
UML Unified Modeling Language
UXF UML eXchange Format
XMI XML Metadata Interchange
XML  Extensible Markup Language

Long


CASE

If you don't have an idea what CASE is, you are probably@the.wrong.spot here.
Anyway; CASE is an acronym for Computer Aided Software Engineering, so strictly speaking every activity in software engineering where you use the computer would be Case. However; editors, word-processors, compilers, linkers, in short all aids that were in existence before the term Case was launched, are not considered to be Case-tools.

When people use the term Case-tool, they usually refer to tools that help you in the complex task of administering and visualising the model of the system you are building and tools that generate code and documentation or reconstuct models from code. Examples: Cool:Gen, SA/Object Architect, Rational Rose, Paradigm plus, Forté, ObjectTeam.

Good Case-tools are very expensive. This will be refrased as 'Good Case-tools used to be very expensive.' as soon as FreeCASE hits the ground - somewhat optimistically: in about a week or so. Wether or not the concept of Deadlines will be supported is not yet a topic of discussion. It seems that Jason Elliot Robbinscognitive support concept of critics will, however.

FreeCASE is Jeff Wolfe's bazaar project to create an open source CASE tool for distributed development, to "... be released and developed under the GPL. Interface libraries, sufficient to develop commercial and non-commercial add-on components will be released under the LGPL.  For simplicity, all things are GPL unless stated otherwise." The KDE-site has some valuable remarks on licensing and on the development model.


CM Change Management.

Based on Per Cederqvist's remarks on Configuration Management we need
  There is a site dedicated to Linux Version Control & Configuration
Management Tools.

As soon as I know more about how the project organizes the flows of changes I'll expand on this (but maybe not in the glossary).


CORBA :-)

The Common Object Request Broker Architecture is a/the reference platform for distributed computing. The FAQ is excellent. Though FreeCASE will start with  Linux and Windows, both as the basis of it's own architecture as well as one of it's target platforms, it eventually will have CORBA for both. Why? It is hoped that most multiplatform IPC and RPC issues will be resolved or at least reduced by adopting a software-bus style.

Some important parts are IDL (looks like class and type declarations C++) and the IOP's: G(eneral)IOP and I(nternet)IOP. These are the HTTP-like protocols in between ORB's that makes that they can communicate with a common data format (CDF) wether they are of the same breed or not.

Which CORBA-implementation is a topic of discussion: MICO (MICO is CORBA)OmniOrb, ORBacus? Johan De Wit gave the latter reference and some more: Linux CORBA Reference & Evaluation and The Free CORBA page. Research is needed. Linas gives a good starting point for studying interoperability in the Linux DCE, CORBA and DCOM Guide with examples of client, interface, and server code, emphasizing the differences between several CORBA for Linux-implementations. For high-performance real-time systems we might need to include support for TAO, The ACE ORB. According to the OMG, the MOF is "a key building block in the construction of CORBA based distributed development environments.", definitely a FreeCASE design goal.


CVS Concurrent bubbles 
 Concurrent Versions System is the version control system used by the FreeCASE project. The central database of version control is called repository. Synchronizing local copies gets rather hairy when versions walk alone to long. CVS facilitates keeping a central repository of sources. Pierre Jarillon has set up a CVS for the source code control. Sourcefiles may be checked out by developers, modified, and checked back into the main repository. It helps keeping track of source modifications over time, listing differences between revisions of files and tagging sets of files that constitute a complete software release. ssh (secure shell) access is required for full access to the FreeCASE repository.

Get started with Introduction to CVS by Jim Blandy, peek at the Reference guide, the Reference Web site at Cyclic Software. You can learn how to use CVS with the CVS tutorial at a UML Design Drawing Tool - site and learn some more with CVS training. This is based on remarks by Pierre and some things I found on the web. I still have to learn it.

Some freely redistributable graphical user interfaces for CVS are tkCVSjCVS, gCVS (portable GUI for non-techies), MacCVS Pro, MacCVS/WinCVS,  MacCVSClient, Cvsweb and CVS  for Web Site Projects.         
   
(@@@notes on usability from FreeCASE developers)


GEF

The Graph Editing Framework, from the University of California, Irvine, is a library of Java classes for diagram editing and connected graph editing. As several people favoured Java as the GUI-language, this comes in très handy. Argo/UML, which - if I got it right - may serve as a starting point for FreeCASE, uses it. The Argo/UML v0.3.1 code also comes with a UML metamodel.


UML

The The Unified Modeling Language is a series of notational conventions to express aspects and parts of systems, deviced by Grady Booch, Ivar Jacobson and James Rumbaugh. It is meant as the integrating successor to the zillion (seemingly, or mainly in the details) differing OOA&D methods that arose after OOP found acceptance with (pure OO) Smalltalk and (hybrid) C++. FreeCASE targets to support all notations of the UML and more. Kendall Scott has made a dictionary of the UML.

An important part of the UML is the Object Constraint Language to specify pre- and postconditions. The language is purely expressional, i.e. has no side-effects; an OCL-expression just returns a value and does not affect data in any way. The UML does not say how UML-models can be transmitted. That's what the UXF is for.

One of the UML-notations is the class diagram. Dia is a GPL'ed gtk+ based program to create UML class diagrams by Alexander Larsson


UXF

The UML eXchange Format is intended as the internet way (XML) to communicate models that can be expressed with UML. In the words of Junichi Suzuki, one of the UXF DTD authors, it "... is based on UML1.1, but not complete. I omitted some elements that are not used frequently ...". FreeCASE needs a way to communicate models with other tools. My guess / suggestion is: userchoices like File.Save As and File.Open will eventually support several formats, amongst which UXFCDIF (accepted by most high-brow CASE-tools) and XMI, a SMIF proposal. Uche Ogbuji likes the UXF"All such docs could be transparently compressed for efficiency, and we'd have an open format until an industry standard emerges."

XML

The Extensible Markup Language  is a data format for structured document interchange on the Web. The World Wide Web Consortium set this standard for defining, validating and sharing document formats on the Web. It is a subset of the SGML. There is a <?XML!> FAQ. Tim Berners Lee wrote: "XML is becoming increasingly adopted as a common syntax for expressing structure in data. Now the Resource Description Framework, a layer on top of XML, provides a common basis for expressing semantics."

The Mozillateam is busy building a code library for RDF. You 'll want to contact Guha, Robert Churchill and John Giannandrea if you are going to use it.

Any serious development I know uses some form of scripting. Will the perl-XML effort help us? There seems to be radio-silence on this subject. Your comments, please.



Do we really need all those acronyms and obscure lingo to communicate the problems we face designing a set of aids for truly distributed cooperative development? I don't know, really. Only the 'Language' count is a dazzling 5, not counting Java, C++ and Perl. And what about 'Format'.

Sometimes people seem to be only using big words to keep the people who are 'not in the know' out of the discussion. They are helping what John Mallett calls the OO smokescreen conspiracy. While this list will certainly not prevent that from happening, it is meant to help people 'into the know' as quickly as possible. Though I think a glossary is a powerful means of getting started, I just can't explain e.g. all of the UML, CORBA, XML or whatever subject here. Not only because of the obvious time and space constraints, but also because I simply don't know. People asked me to add several things I just can't say anything sensible about.

Yet to be discussed I think (if you don't think a term is relevant please let me know):

Some of these are in Kendall Scott's dictionary of the UML but I'm not so sure those definitions are adequate to our needs.

If you can please do a little looking around yourself, give an explanation and state the relevance to FreeCASE if you want me to add or explain a term. I really need (some more) help with:

yes but ehhhm eh dunno.

Wise gnu Programming Republic of Perl Tux the Linux penguin Zircon Apache Tcl/Tk
 

If you have comments or suggestions,
especially: if you don't think that a reference I gave is the best webreference for further study,
email Danny Werner.