 1 SDE
 SDE - Software Development Environment - a concept and
       implementation of a controlled, productive software
       development methodology.
                                          
 Help is available on several SDE topics listed below. Also, most SDE
 commands have separate help sessions that can be invoked as a primary
 topic (e.g. HELP VIEW).
 
 2 CMS_Commands
 Listed below are several of the most commonly used CMS commands:
 
  CMS RESERVE    -  copies a generation of an element file to your
                    current default directory so that it can be edited.
                    CMS marks the element as reserved.
 
  CMS REPLACE    -  returns a reserved element to the library and
                    creates a new generation of the element with the
                    changes.
 
  CMS UNRESERVE  -  cancels the reservation. 
 
  CMS FETCH      -  copies an element into your current default
                    directory as a read_only version, therefore it
                    cannot be returned to the library with the CMS
                    REPLACE command.
 
  CMS SHOW ELEMENT -  displays an alphabetical list of the elements in
                      your directory.
                  
  CMS SHOW 
  RESERVATIONS   -  displays a list of the elements that are reserved.
 
 Type HELP CMS for more information on cms. 
  
 2 Terms 
 Listed below are several terms that apply to SDE:
 
  Component - An identifiable single entity that is part of the 
              building of a software system.  Components are
              always files.
  
  Source    - A component that is used to create another component.
 
  Target    - A component created from a source or sources.
 
  Module    - A vertical grouping of components that participate in a 
              software system as a specific functional area.
 
  Dependency Rule  - The relationship between source and target, and
 		        the list of actions required to produce the
                     target.
  
  Description File  - A file that contains a set of dependency rules.
 
  Updated Target    - A target that has a more recent revision date
                      than all of its sources.
 
 2 Concepts
 Listed below are several concepts that apply to SDE:
 
  Viewpoint  - The manner in which the software engineers see the
               software components. There are only two points of
               view for a project; that of the developer and that of 
               the integrator. 
 
  Developer  - Individual whose viewpoint at a given point in time 
               is that of a single module that he or she has written
               or maintains.
 
  Integrator - Individual whose viewpoint is that of the whole software
               system and is concerned about how the pieces fit together.
 
 
  Integration level  - A complete standalone representation of software
                       development for that product at that given level
                       of functionality.  A project may have many
                       integration levels during development.  As soon as
                       development has progressed far enough so that a
                       given integration level is no longer useful,
                       the integrator will obsolete that integration 
                       level.   
 
  Declared Levels - Integration levels to which no further changes can
                    be made. There may be many declared levels in 
                    existence.
 
  Current Level   - The most recently declared level.
 
  Contribution Level - The set of the most recent file versions 
                       for all components. It serves as the working
                       directory in most cases.  Developers may use this
                       viewpoint if their intention is to get the latest
                       level without regard for whether or not the
                       integrator has deemed it functional as a system.
 
  Release Level - A given integration level with sufficient functionality
                  and confidence level to warrant release as a production
                  level.
                
 2 VMS_Tools 
 The following VMS tools are integral parts of the SDE implementation :
  
  Subdirectories - allow a user to separate his or her work into
                   groupings according to whatever classification
                   the user sees fit.  A user will always have a "home"
                   directory from which a tree structure of
                   subdirectories may develop.
 
  Logical Names  - are synonyms for what often are physical device names
                   and/or directory (and subdirectory) names.  They are
                   used to reduce typing, to avoid confusion about the 
                   location of disk volumes, and to keep the physical
                   device names transparent to the user.  In the SDE,
                   logical names make it easy for two users to code
                   and refer to the same logical directory specification
                   relative to their specific viewpoint, but which, in
                   fact, refer to two different physical directories.
 
  Rights identifiers - can be assigned to a particular user to grant 
                       that user security access to a project's viewpoint.
                                                                     
  Access control lists - serve as an alternative to the group/member file
                         protection scheme offered on many operating
                         systems (including VMS).  This method is used
                         in conjunction with the standard UIC-based
                         protection, as a means of fine tuning protection 
                         in special situations.  The Access Control List
                         (or ACL) offers a way to match the specific
                         access to an object to specific users.  At the
                         heart of this method is the rights database that
                         specifies identifiers and holders of those
                         identifiers.  This method permits multiple
                         overlapping "groups" or project areas without
                         having to allow "contagious" access permitted in
                         a group/member scheme.  The advantage of ACL's 
                         in the SDE is to allow a user to have a single 
                         account from which work on all projects is
                         performed, without completely throwing out a
                         protection strategy.
                                         
  CMS   - Digital's CODE MANAGEMENT SYSTEM is a software product that
          is a program library system for software development and
          maintenance.  CMS stores files in a library, keeps track of
          changes made to these files, and records user access to
          the files in the libraries.  Typically, CMS is used to
          provide the following functionality to the developer:
 
      (1)  Place a component into the library.
 
      (2)  Copy a component from the library to your current working
           directory and mark the library copy as reserved by you.
 
      (3)  Return a modified component back to the library.
 
      (4)  Retrieve a copy of a component from the library for 
           readonly purposes.
 
      (5)  Display a list of components controlled by CMS.
 
      (6)  List all generations of a component.
 
      (7)  Display the library status or history.
 
      (8)  Control concurrent modifications to the same component.
 
      (9)  Compare versions of components.
 
      (10) Annotate source or listings of the component with the
           modification history.         
 
  MMS   - MODULE MANAGEMENT SYSTEM is a tool that updates files by
          comparing the revision times of files you specify in a
          description file.
  
 2 SDE_Commands
 SUPPORT SDE must be issued prior to using any SDE command. 
   
   VIEW      Establishes the user's viewpoint
 
   LEVELS    Displays information about extant integration levels
*6I
 
   HISTORY   Displays information about important transactions per-
             formed on an SDE CMS library.
*6E
                                                                 
   UPDATE    Performs updates of components
 
   DECLARE   Used by the integrator to declare an integration level
 
   OBSOLETE  Used by the integrator to eliminate an integration level
 
   SDE_INIT  Used by the integrator to create the SDE for a new 
             project
 
 For help on SDE commands, type "HELP sde_command_name".
 
 
 1 VIEW    
   Establishes the user's viewpoint
 
            $ VIEW [project]
 2 Parameters
 
  project
    
   Specifies which SDE project is to be viewed.  If omitted, 
   the current viewpoint is displayed.
 
 2 Command_Qualifiers
 
*5D
 /DEFAULT_DIRECTORY[=DIR_SPEC]
  /NODEFAULT
 
   Sets the default to the specified directory.  If omitted, the
   default is set to [root.project], if such a directory exists.  If
   a [root.project] directory does not exist, or if /NODEFAULT is 
   specified, the default directory is not changed.
 
*5E
 /COMMAND[=file_spec]
  /NOCOMMAND
 
   When specified, VIEW executes the designated command procedure
   immediately prior to exiting VIEW.  Unless some other command
   procedure is specified, VIEWPOINT.COM is executed, if it exists.
   If VIEWPOINT.COM does not exist, or if /NOCOMMAND is specified,
   no command procedure is executed.                 
 
 /CREATE_LOGICALS 
  
   Causes VIEW to create the project logical name table, if it does
   not already exist.  This is the default.
 
  /NOCREATE_LOGICALS
 
   Specifies that the project logical name table is NOT to be created.
 
*5D
 /REPLACE_LOGICALS
 
   Directs VIEW to delete the current project logical name table and
   create a new one.  This is useful if the project table ever becomes
   corrupted or requires updating.
*5E
*5I
 /DEFAULT_DIRECTORY[=DIR_SPEC]
  /NODEFAULT
*5E
 
*5D
  /NOREPLACE_LOGICALS
*5E
*5I
   Sets the default to the specified directory.  If omitted, the
   default is set to [root.project], if such a directory exists.  If
   a [root.project] directory does not exist, or if /NODEFAULT is 
   specified, the default directory is not changed.
*5E
 
*5D
   Ensures that the project table is not modified, if it already 
   exists.  This is the default.
*5E
*3I
*5D
   
*5E
*4D
  /[NO]LOG
*4E
*4I
*6I
 /INTEGRATOR
 
   When specified, VIEW will return an error if the user executing
   the VIEW command does not have integrator rights to the specified
   project.
 
*6E
 /LOG
 
   Informational level messages are displayed.  This is the default.
 
  /NOLOG
*4E
 
   Causes informational level messages to be suppressed.
 
*4D
  /LOG
 
   Informational level messages are displayed.  This is the default.
*4E
*3E
*6I
 /PROJECT_COMMAND[=file_spec]
  /NOPROJECT_COMMAND
 
   When specified, VIEW executes the designated project command 
   procedure immediately before executing the command procedure
   specified by the  /COMMAND  qualfiier.   The default project
   command procedure is project$COMMANDS:VIEWPOINT.COM.  If the
   specified procedure (or the default if none is specified) does
   not exist or /NOPROJECT_COMMAND is specified, no project com-
   mand procedure is executed.
 
*6E
 
*5I
 /REPLACE_LOGICALS
 
   Directs VIEW to delete the current project logical name table and
   create a new one.  This is useful if the project table ever becomes
   corrupted or requires updating.
 
  /NOREPLACE_LOGICALS
 
   Ensures that the project table is not modified, if it already 
   exists.  This is the default.
*6I
 
 1 HISTORY
 
  Displays a chronological list of important  transactions performed on an
  SDE CMS library.  You can control the type of transactions that are dis-
  played by specifying different parameters and qualifiers on the command.
  Normally,  the only transactions  shown are those that create or replace
  replace elements, and REMARK remarks. 
 
 	HISTORY [object-name] [qualifiers]
 
  where object-name  specifies the object  for which HISTORY lists  trans-
  action records. Wildcards are allowed. If not specified,  the default is 
  to show history for all objects.
 
 2 Parameters
 
  HISTORY accepts as an optional  parameter the object-name  for which you
  history  records will be  displayed.  The object name may be an element,
  classs, or group. Wildcards are allowed. If no object-name is specified,
  the history records for all objects are displayed.
 
 2 Level_Qualifiers
 
 	/FROM=integration_level /THRU=integration_level
 
  or	/DURING=integration_level
 
  where  integration  level is the integration  level CMS class name (e.g.
  /FROM=IL14).  /FROM and /THRU specify an inclusive  range of integration
  levels for which history is to be displayed.  Alternatively, /DURING=iln
  is equivalent to  /FROM=iln/THRU=iln.  If no level qualifiers are given,
  the default is /DURING the contribution level.
 
  History  records will be shown  beginning with the  date/time  the /FROM
  level was created  (not declared)  through the time that the /THRU level
  was declared.  It does not matter whether or not any of the  integration
  levels have been obsoleted. 
 
  Restriction: For projects migrated to SDE from the integration facility,
  levels prior to the migration are  "prehistoric".  You can do a CMS SHOW
  CLASSES to determine what classes exists. /FROM level - 1 must exist. 
                              
 2 /APPEND
 
  /APPEND
  /NOAPPEND
 
  Controls whether HISTORY appends the history records to a file.   If you
  specify the /APPEND qualifier and do not specify an output file (see the
  description of the /OUTPUT qualifier), the output is appended to
  SYS$OUTPUT.
 
 2 /BEFORE
 
  /BEFORE=[date]
 
  Directs HISTORY to display only those transactions which occurred before
  the specified time.   If either /BEFORE or /SINCE is specified,  you may
  not specify any of the level qualifiers,  /FROM,  /THRU, or /DURING.  If
  no date is  specified with  /BEFORE it defaults to the today's date.  If
  /SINCE is specified but /BEFORE is omitted, /BEFORE defaults to the cur-
  rent time.
 
 2 /DURING
 
  /DURING[=integration_level]
 
  Specifies the integration level for which  HISTORY is to display history
  records.   If no /DURING  (or other level) qualifier is specified or the
  integration level is omitted,  history records will be displayed for the
  the current contribution level.  /DURING level - 1 must exist.   /DURING
  may not appear on the same command line with either /FROM or /THRU.
 
 2 /FROM
 
  /FROM[=integration_level]
 
  Specifies the earliest integration level for which HISTORY is to display
  history records.  History records will be shown beginning with the date/
  time the  /FROM level was created (not declared).  If no /FROM qualifier
  is specified or the  integration level is omitted,  history records will
  be displayed beginning with the current contribution level.  /FROM level
  - 1 must exist.  /FROM  and  /DURING may not  appear on the same command
  line.
 
 2 /OUTPUT
 
  /OUTPUT[=file-specification]
 
  Identifies a file  for the  history  records.  If you  specify an output
  file,  warning  and  error  messages  are  written  to the  terminal and
  SYS$ERROR.   HISTORY creates a new file when you do not specify /APPEND.
  If you  omit  either the  file  name  or file  type  component,  HISTORY
  supplies the missing component from the default specification  SHOW.SHO.
  If you specify  /OUTPUT but do not  provide a file  specification (or if
  you omit the  /OUTPUT qualifier),  HISTORY directs output to the default
  output device (SYS$OUTPUT).
 
 2 /SINCE
 
  /SINCE=[date]
 
  Directs HISTORY to display only those  transactions which occurred after
  the specified time.   If either /BEFORE or /SINCE is specified,  you may
  not specify any of the level qualifiers,  /FROM,  /THRU, or /DURING.  If
  no date is specified  with /SINCE it  defaults to the  today's date.  If
  /BEFORE is specified but /SINCE is omitted,  /SINCE defaults to the pro-
  ject's inception.
 
 2 /THRU
 
  /THRU[=integration_level]
 
  Specifies the latest integration level  for which  HISTORY is to display
  history records.   History records will be  shown thru the date/time the
  /THRU  level  was  declared.  If no /THRU  qualifier is specified or the
  integration level is omitted, history records will be displayed thru the
  current contribution level. /THRU and /DURING may not appear on the same
  command line.
 
 2 /TRANSACTIONS
 
  /TRANSACTIONS=(command,...)
  /TRANSACTIONS=ALL
 
  Displays all  transaction records  generated by a specific command.  You
  can specify the following keywords with this qualifier: 
 
        COPY                     REMARK
        CREATE                   REMOVE
        DELETE                   REPLACE
        FETCH                    RESERVE
        INSERT                   UNRESERVE
        MODIFY                   VERIFY
        ALL
 
 
  If you specify more than one keyword,  you must enclose the keyword list
  in  parentheses.   The  /TRANSACTIONS qualifier  directs HISTORY to list
  transaction records for only the  listed commands.   The /NOTRANSACTIONS
  qualifier directs  HISTORY to list  transaction records for all commands
  except  the  listed  commands.  /TRANSACTIONS=(CREATE,REPLACE,REMARK) is
  default. 
 
 2 /UNUSUAL
 
  /UNUSUAL
  /NOUNUSUAL
 
  Controls whether only those transactions recorded as unusual occurrences
  are displayed.   If you specify /UNUSUAL,  only unusual transactions are
  displayed.   The  following  CMS  transactions  are  defined  as unusual
  occurrences: 
 
  o  A RESERVE command specifying an element that is already reserved.
  o  A concurrent replacement.
  o  A VERIFY/RECOVER command.
  o  A VERIFY/REPAIR command.
 
 2 /USER
 
  /USER=user-name 
 
  Lists the transactions executed by the specified user.
 
 2 Examples
 
  $ VIEW 274BASE
  $ HISTORY /FROM=IL2209 /THRU=IL2210
 
  History of DEC/CMS Library DISK$274DEV:[SDE$274DEV.CMS]
 
   23-JUL-1987 00:07:09 DEAN CREATE CLASS IL2208
 	"274DEV integration level 2208 declared 23-JUL-1987 00:07:07.23"
 
   27-JUL-1987 13:48:59 DEAN REPLACE EPCTRL.MMC(32)
 	"Problem in QSINB dealing with local controllers"
 
   27-JUL-1987 14:14:30 FUSSELL REPLACE ECNFG6.MMC(16)
 	"Made fix, for field problem 86tf27, by replacing erroneous
 	language table values in French Azerty 105, language number 1E.
 	Values changed were: DF, from 47 to 05, 66 from UNDEFINED to no
         difference(47)."
                       
   27-JUL-1987 16:30:40 SCHOMBURG REPLACE ACMON.MMC(26)
 	"PROBLEM #199-87  Added code for DSL ram disk"
 
   27-JUL-1987 16:33:49 SCHOMBURG REPLACE CCTAB6.MMC(10)
 	"PROBLEM #199-87  Added code for DSL ram disk"
                                                      
  *27-JUL-1987 16:45:19 SCHOMBURG REPLACE ECNFG1.MMC(66)
 	"PROBLEM #199-87  Added config code for dsl ram disk and
 	additional dsl device support"
 
   28-JUL-1987 00:51:45 DEAN CREATE CLASS IL2209
 	"274DEV integration level 2209 declared 28-JUL-1987 00:51:43.13"
 
   30-JUL-1987 13:11:38 SCHOMBURG REPLACE ETCTRL.MMC(22)
 	"problem #311-87  If an sscp-lu fmd frame received with
 	expedite bit set in th we reject the frame with a status
 	& sense of 1003, 413 error, while the 3274 accepted it and
 	gave a positive response with expedite bit set in response
 	th.
 
   31-JUL-1987 15:23:40 FUSSELL REPLACE ECNFG6.MMC(17)
 	"Fix for 87sw05.  14 values in translate table were
 	switched in Swiss language, number 15."
*6E
   
*5E
 1 LEVELS 
   Used by the developer or integrator to display information about 
   extant integration levels for the current viewpoint.
 
            $ LEVELS project
 
 1 UPDATE  
   Used by the developer or integrator to perform updates of 
   components.
           
      The UPDATE command can be issued interactively:
     
            $ UPDATE project component [FROM_SOURCES]
 
      or, it can be submitted as a batch job:
 
            $ SUBMIT/PARAMETER=(project,obj$:test.tof) SYS$SDE:UPDATE
 
 1 DECLARE  
   Used by the integrator to declare an integration level as fixed.
   Specifically, DECLARE wil do an MMS update for the entire project
   (unless NOUPDATE is specified), protect the contribution level from
   further changes, create a CMS class name IL'level' for the latest
   generation of all elements, and make a carbon copy of the newly
   fixed level to be the next contribution level. 
     
      The DECLARE command can be issued interactively:
 
            $ DECLARE project [NOUPDATE]
                              [FROM_SOURCES] 
 
      or, it can be submitted as a batch job: 
 
            $ SUBMIT/PARAMETER=project SYS$SDE:DECLARE
 
 1 OBSOLETE
   Used by the integrator to eliminate an integration level once
   development has progressed such that a level is of little value.
   Neither the last declared level nor the contribution level may be
   obsoleted.  Otherwise, there are no restrictions.
 
      The OBSOLETE command can be issued interactively: 
 
            $ OBSOLETE project level   
 
      or, it can be submitted as a batch job:
    
            $ SUBMIT/PARAMETER=(project,69) SYS$SDE:OBSOLETE
 
 1 SDE_INIT 
   Used by the integrator to create the SDE for a new project.
   Once the SDE administrator has done the system level work
   required for a new project and given the integrator rights,
   then the integrator types
 
            $ SDE_INIT
 
   and responds to the interactive questions about the project.  
   The integrator should be prepared with the project name, short
   description, and a list of components for SDE to maintain.                       
