the myth and realities of c.a.s.e. for documentation  hypertext seems to be the major focus of user documentation groups, and even some system documentation people. but system developers, engineers and architects are interested in c.a.s.e. more of our documentation work will be coming from or going into c.a.s.e. solutions and integrated systems, and documentation groups should begin to look very seriously at what c.a.s.e. advertises itself to be, what it is in fact, and what role documentors are likely to play in the face of this touted "software development revolution."  c.a.s.e. is an acronym (and we thought those went out in the 70s) for computer-aided software engineering. very little is new here, except the combination. a c.a.s.e. tool is one of dozens of possible pieces of software, techniques, and documents that were developed since the 70s, and which, theoretically, can be combined to create a black box for system generation. the object of the exercise is to put clear, organized, system documentation into the black box, and out comes a working system, for whichever computer (called a platform) you want, with complete user documentation, both on-line and "manual". the concept should be highly threatening to documentation people, and yet i have not heard a single murmur in the community. the reason, i suspect, is not only that hypertext is more distracting, being perceived as more glamorous, but also that c.a.s.e., in order to sound modern and revolutionary, has enveloped itself with a great deal of new jargon.  the first step of the process, supposedly, needs to be done only the first time you begin using c.a.s.e. actually, it is such an expensive step, that most firms ignore it, hoping for the quick and dirty answer. plus ça change, plus c'est la meme chose. in this first step the system architect analyzes the organization, known as "the enterprise", that wants the computer system. he or she determines the minimum amount of data that the enterprise uses to do its business, and establishes the relations and processes that link pieces of data into meaningful combinations, called "information." the result is "the enterprise model". a system is conceived as a view of the enterprise model, that is, one department's use of the data and processes that really belong to the enterprise.  those of you who are familiar with this material may realize that i am simplifying some of this, but those of you who are not familiar with it are probably already confused, right? for those who are a trifle bewildered, let me get a bit more specific.  we have an analyst who has created a very theoretical model of a corporation that says that a company is just a collection of data, and processes (programs, people, authorizations) that manipulate that data. since most corporations keep more data than they need, and do many processes at least twice, this model can be useful in cutting waste. because the object of the effort is to create systems that are clean, simple, and use a database, you can see why you begin to write your first c.a.s.e. system by doing not only a spring cleaning, but a complete analysis of the foundation of your house!  because this model is so important, and because corporations are always changing, this model must be kept as a large software (and sometimes hardware) system of its own, with a huge database that documents each item of data, each process, and each combination. this work ordinarily takes years, because the data must be reconciled to show that customer name, and ship-to name, are in the end actually the same, and that each of them points to that basic data item called name. i have chosen an easy one, but you can imagine. the crucial thing about the model is that it must be right. and since the documentation is going to be used later for creating working systems and documentation, it should be clear and concise.* some system analysts or software engineers believe that this accuracy means that only they can write this sort of documentation. they completely loose track of the importance of the text for later documents, and for the transfer of knowledge to another group of c.a.s.e. analysts who will build the view or modify it. this is not throw away documentation, and it must be done especially well.  such work is enormously time consuming, as i have already made clear, and so i have seen groups just put in the name of a data item, its length, and its data type (alphanumeric, usually), and ignore description, aliases, and other information not important now, but vital to a succeeding generation of c.a.s.e. tool users.  once the enterprise model is completely documented, system analysis can begin. the system is established as a view, by selecting the data elements it inputs and outputs. if the documentation of the data has been correctly done, all one needs is a list. the system is probably already documented as a high-level process, but the details are designed using "upper c.a.s.e." or front end c.a.s.e. tools. these are microcomputer based drawing tools for ye olde demarco and gane and sarson diagrams, with a little module at the back that makes a small database of the relations and data items. all of this is fun, so this is usually where less far-thinking firms want to begin using c.a.s.e., and it is probably where there is the largest population of c.a.s.e. tools in the spectrum of possibilities. diagrams are sexy, and people who can't draw think that this is all just a game, but can be passed off as hard work. for the user, there are screen mock-ups that fit into this process. these are usually part of a "fourth generation language" for one is either hidden, or very obvious, as part of the bottom level of the diagramming technique, creating pseudo-code for the "primitive" level of diagrams.  the second-largest number of c.a.s.e. tools is probably in this part of the spectrum. they take the pseudocode, which they tell you is not really programming, but documentation, and the data descriptions, and create some form of brute-force computer code. the object of this exercise is to create something nearly foolproof, that is repeatable. some code-generators produce cobol because it is comforting, or c because it is trendy. supposedly, you put this code on your machine, compile it, or simply copy load modules, depending on the sophistication of the tool, and the whole system is supposed to run first go.  what actually happens is that there needs to be real programming done in order to tweak the system. if you have an unusual platform, or one with some unusual devices running on it, or you want to have a real-time system, there must be code written to tailor the brute-force code to fit.  virtually no vendor of c.a.s.e. tools has all of these parts. they may present a unified package by buying the rights to remarket someone else's portion of the spectrum. the big 8 (or are there only four now?) accounting and consulting firms usually just buy the company with the c.a.s.e. tools instead of the marketing rights, but the result is the same: there are some rough edges that need to be smoothed over by more code and perhaps some documentation.  all right, i have been describing a system---one made up of hardware for graphics, such as "mouses", software for diagramming and code generation, and methodology for doing the right steps in the right order. the usual possibilities for documentation are apparent, but what is special about this tool?  in some ways there is nothing special about it. it only brings together the collection of problems that we have been working on for a long time, and are still hoping to solve, such as better on-line help, better system's documentation for tools that can be changed as the user desires, and better procedures and forms. in another way, it is very special and important, because the heart of c.a.s.e. is documentation. but the conglomeration of these documentation tools is now being put into the hands of software engineers and system analysts, and marketed as though no writing of prose were necessary.  to make my point even clearer, let me explain the usual look and feel of c.a.s.e. products:  the data dictionary, encyclopaedia, or central repository (i've heard all of these three names, and there may be many others) is just an on-line glossary. the standard names of data are entered, followed by pseudonyms, type (alphanumeric), and length (4 bytes, packed). following this meager description is some prose to say how the data should be used, how it differs from something similar, if it does, and any other important information to the potential user of this data. if this glossary entry is a composite item, made up of other data items, then there is a list of what it contains, usually provided by the software, e.g. "mailing label" contains "full name", and "address". when you look up address you find it contains adr line1, adr line2…postal code.  what most of the project spends its time doing is looking at these data entries to decide if this is the one they want, and if it is, connecting it to process entries, or other data entries. for instance, an analyst wants to build a system for keeping an inventory of office furniture (there have been thefts lately), so he needs to find some identifier for the office furniture, and he might just use the catalogue number from the purchase order for this furniture. he them builds a new record that attaches that catalogue number with the name of the employee who has been assigned that desk. the employee name, and the catalogue number exist in the glossary, so he must find them, probably by starting a search through the personnel record description, and the purchase order records. he then copies the data names, and creates his new record containing them. he then attaches the record to his new system name. sorting and searching requires some good text, preferably brief, and to the point. there are a great many names in any enterprise. naming data well is a special skill that is best done by someone with a good vocabulary, but only prose will make it clear in the end that this is the right data item, and where it can be copied from.  sorting and searching is fully 50% of any c.a.s.e.-related, system-development project once the glossary is begun. these encyclopaedic data bases can, of course, be searched in any order. so here we have not only the usual problems of on-line documentation---how to put it all on a single screen and make it clear---but also the complications of a hypertext---we know not in what order the information will appear to our reader; and we can give him no clues in terms of position in a book, as to what he might have been expected to read before he began reading here.  once the data has been identified, or more usually, while it is being identified, the children are playing in the demarco, gane-sarson sandbox. here are diagrams that are good tools for the designer, but which are useless without the glossary, and so are often ignored once the preliminary design phase is done. the circles and boxes ordinarily cannot have the well-designed names shown in demarco, et al., because these diagrams are being used by the system to generate linkages for use later in the code generator. in some systems comments are allowed, and are usually ignored. the diagrams are the most attractive part of the process, but they are often cumbersome as they extend past the boundaries of the screen, or, when reduced, are too small to read. so while they are updatable and so on, they are employed much less than the glossary over the life cycle of the system.  imposed on all of this development so far is the notion of life cycle. this is some plan that can only partially be imposed by the system, and involves a good deal of good common sense. everyone, without exception, hated the 1970s system development methodologies that were books of long-winded aphorisms followed by forms to copy a thousand times and fill out, one for each of the one thousand data items to be used in this system. and yet behind all these forms and writing down of mother's reminders to wash behind your ears, there was some important stuff, which cannot be done away with.  most c.a.s.e. tools try to gloss over the methodology by giving you a diagram, and telling you to wing it, hoping that you have learned enough in a course on the subject to do the right thing. teaching planning, good habits and good models on which to base standards is still a job for writing, film or some other, non-software medium. all c.a.s.e. tools give lip-service to the methodology. none addresses it squarely for someone who has never used a c.a.s.e. tool before. the bulk would be bad psychology; the exposure to the real length of time all of this will take, and the effort involved would kill sales.  screen mock-ups begin pretty early on. supposedly this is where user testing begins. the usual 4gl method of mocking up screens is integrated with the glossary and the diagramming tools to put the right data with the right length of field on the screen. text for prompts may be taken from the glossary. it is a rare firm that sees this testing as the first opportunity for usability testing of the documentation and user interface, because the c.a.s.e. myth says that documentation will come as part and parcel of the system development process. this means that the documentation that users will be expected to see will be the prose in the glossary---if anyone could be bothered to write it.  although there is nothing to stop an enlightened system developer from hiring a psychologist to help in the development of the user interface, or a good word monger to put the mot juste in the prompt to keep the screen clear, and easy to use, yet not condescending, there is also nothing in the c.a.s.e. methodology to promote the use of experts here beside the user, who knows his system best.  here i may add that in addition to the myth of c.a.s.e. there is something of a myth that the users knows what they want, meaning what they need. the reality is that they know what they like, and that may just be the best of whatever they have seen so far. shown something better, they usually ask for the system to be redesigned, and the cyclical part of that life cycle comes into play. most c.a.s.e. tools recognize the cyclical problem, and try to take care of it here in the screen development. much time may be wasted here because only software engineers and users are involved rather than experts in user interfaces.  once the screens are accepted, then coding begins. of course this is not supposed to be programming, just the creation of pseudo-code, that last element in the yourdon, demarco, gane-sarson methodology. actually it is programming in some version of a fourth generation language, with some third generation features to take care of "platform" dependencies. since this coding is part of the c.a.s.e. product no system documentation is needed over and above the glossary and diagramming. actually, since the tools are usually separate, either there is some "reverse engineering" to take the code back to the glossary, or the code is really undocumented. as we know from many published papers, 4gls are not easily interpreted without the help of documents.  once the generated code is merged with the platform-dependent modules, the code is supposed to be running. actually, patches may well be required. there is practically no way to document the patches neatly in any of the glossary or diagramming niches, except in text.  some c.a.s.e. tools, which i will carefully not name, then claim that it is possible to use all the documentation that has been accumulated thus far to generate the user documentation automatically. what happens is a long print out of the help screens, which are, in turn, the text from the glossary. reams of text with sgml tags is technically documentation, but of the sordid kind that i, for one, would like to see abolished. there can never be a point to documentation built out of homogenous blocks of object descriptions. there is no place for insight. if the c.a.s.e. tool permits the addition of text for prefaces and the like, then the documentation becomes ancillary to the construction of the system, and all the usual problems of keeping the documentation current will reappear.  having sat through what must seem like a diatribe on the design of c.a.s.e. tools, let me say that i like them, and believe that they are exciting additions to system development. what i decry is the promotion of them as minimizing the need for experts, such as documentation and user interface specialists, and even good programmers who can code in assembler. it is a myth that a few good software engineers, and a few sterling users will necessarily build great systems with c.a.s.e. tools in practically no time.  let me highlight the role of documentation experts in c.a.s.e.  needs document. in order to get any system implemented in any methodology, it is still necessary to have a needs document to ask for money and man power. talent is required to get money where it is tight, and there is lots of scope here for the right sort of expert.  feasibility studies. feasibility studies, now written in plain language, must be made available to users as well as upper management with the new notions of c.a.s.e. talent is once again required.  requests for proposals. many firms will need to hire consultants to develop the enterprise models and systems. good requests for proposal are hard to find, and as a result, estimates for the work are often wildly out of line, and the whole project costs too much. a really good writer would be invaluable for these. there is not sufficient work being done in this area, and i believe that a few text books could be written for this work.  information technology strategies. once the enterprise model is developed, and integrated into what it usually called an "information technology strategy", this plan has to be promulgated in the company, and among potential contractors to develop systems to adhere to it. these documents are either detailed lists of hardware and software, or collections of aphorisms that would do the boy scouts proud. i haven't seen any work done in this area, and there certainly should be.  glossary entries. the texts that appear in the encyclopaedia for modelling are critical. the whole notion of c.a.s.e. stands or falls by them. the wording must be honed to perfection so that it is easy to comprehend in a glance at the screen, and yet perfectly accurate. good writing skills should be complemented by genius in order to make the processes of searching and selecting items just tolerable. to permit the text to be used as user documentation, as well as system documentation, requires heaven-sent revelation beyond the scope of genius. although there is certainly need for, and scope for, research in technique here, i quietly harbor the belief that only art, not science, can deal with this problem. still, real people need to do this, and there should be real training in how to approach the creativity of the effort.  screen design and prompts. the wording on screens, as well as the layout, the typefaces, the amount of reverse video, and the balance of information on one or many screens takes some special expertise. the placement of the context- sensitive help in relation to the fields on the screen, and the manipulation of that help text, all need the same kind of attention as people are now giving to hypertext applications. this kind of help is a version, a variant, or a close cousin to a hypertext application, with special constraints to ensure that the text is concurrent with the glossary text. i have not yet seen anyone advertise hypertext as a c.a.s.e. tool, but this may be my limited acquaintance with the myriad c.a.s.e. products on the market.  code documentation. system documentation of the insightful kind, which i believe still to be in its infancy, is very much needed for these projects.  project documentation. project documentation is also a requirement here as the system development methodologies have been shrunk to a few diagrams--- who is responsible, and who had accomplished what so far? this is an on-going and thankless task, and perhaps rather mechanical, but tactical, as well as strategic, action is necessary.  training materials. training in methodology needs to be done, if not in a fat book, then in a course.  more training materials. user training is still necessary. even for systems that are so carefully designed that the user gets the point immediately, there is always some advanced knowledge, additional policy, or procedure indoctrination necessary to make things come together.  tutorials, procedures and policies. tutorials, and other user documentation needs to be developed that may not easily come from wedges of text used to describe specific data items or program routines. i should point out here that i have mentioned that the better sort of glossary contains documentation about procedural elements of a system as well as programs, but usually there is just a pointer to the policy and procedure manual, not a complete procedure or policy. there is a text about the book containing the procedures and where to get a copy if you are lucky.  policy and philosophy. c.a.s.e. is based on ideas, about information resource management, about reusable code, about strategic planning. all of these ideas may require not only the information technology strategic plan document, but corporate policies to ensure that the plan is followed, and to integrate the plan into the corporate goals. policy writing is not normally considered a documentation function, but it most certainly must be done with the cooperation of the documentation leader of the enterprise model. wording must match, and so on. there is certainly scope for research into how this can best be achieved.  i perhaps have omitted something, and you will see it, and comment on it. documentation, it seems to be me, is made more valuable because of c.a.s.e. tools, and requires more skill than is now given to the training of software engineers and analysts. most computer science programmes do not give any instruction in writing skills for documentation, and throw the wrong kind of professional into the breech of c.a.s.e.  while i have every sympathy for the marketers of c.a.s.e. tools who want to emphasize the good design, the coherence of systems' and corporate goals, and the benefits of simplified maintenance, there is a myth here that all of this can be done without very many people, and those few are system engineers and users. the truth is that a great deal of the value of c.a.s.e. lies in particularly well constructed documentation, and good programming skills in a high-level language. there is no simple black box that eliminates the need for talent, for clear thinking, for programming and for maintenance. the only thing that may have been eliminated is the coding of simple tasks in cobol. none of the documentation is eliminated, rather adroitly constructed texts and supplementary materials are more important than ever before. c.a.s.e. tools require the skills of experts to use, and they challenge us to do much further research to bring the promise of c.as.e. to fruition.  d. patterson