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

  HISTORY   Displays information about important transactions per-
            formed on an SDE CMS library.
                                                                
  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

/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.

/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.

/INTEGRATOR

  When specified, VIEW will return an error if the user executing
  the VIEW command does not have integrator rights to the specified
  project.

/LOG

  Informational level messages are displayed.  This is the default.

 /NOLOG

  Causes informational level messages to be suppressed.

/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.


/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.

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."
  
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.                       
