U.P. Smalltalkers 2011.02.19

From Computer Science Community

Jump to: navigation, search

Contents

Modtalk development notes.

Chalkboard scribble:

Definitions
Specifications

ScopedModules
    Packages
    Clusters

ExecutionEnvironment
    Host context (e.g., Win32, OS X, X11)

Specification
    name
    type
    repository *
    revision *
    inclusionExer (?) *

.dirty

Clusters are not pure containers--they are views.
"These things belong in a cluster because they are related somehow."

              +---+
              | C*|   top-level cluster configuration map
       _______+---+_______
      /      /     \      \
   +---+  +---+  +---+  +---+
   | C |  | C*|  | C*|  | C*|
   +-+-+  +---+  +---+  +---+
     |  \/   |  /     \/  \
     |  /\   | /      / \  \
   +-+-+  +---+  +---+   +---+
   | P |  | P*|  | P |   | P*|
   +---+  +---+  +---+   +---+

[edit] System Context, Actors, and Use Cases

System context—the outer boundary of the system defines the system context.

                                             |
          name type repos rev                |
                                             |
                                             |
   \O/                                       |     __
    | Developer                              |    (__) Repository
   / \ ______.-------.                       |    |__|
           ,'         `.                     |      |
          /             \                    |      |
 ,-.     (   Repository  )                   |      |---------.
(IDE)_____\             /                    |   ,-'           `-.
 `-'       `.         ,'                     |  /                 \
             '-------'                       | (   Smalltalk IDE   )
      Repository Volume | RepositoryAccessor |  \                 /
      Repository        |   FileBased        |   `-.           ,-'
      RevisionTrees     |   FTPBased         |      /---------'
      Revision          |                    |     /
                                             |    \O/
                                             |     | Developer/Tester
                                             |    / \
                                             |

[edit] Repository System

[edit] Use Cases

  • Enumerate Repositories
  • Create Repository
  • Connect Repository (may not have to be explicitly represented; lazy connect)
  • Disconnect Repository (may not have to be explicitly represented; lazy connect)
  • Register Entity Types
  • Enumerate Repository Entities
  • Enumerate Entity Revisions
  • Commit Entity Revision (Create Entity Revision is just the first commit.)
  • Check Out Entity Revision

An entity is the thing that has many revisions. We are talking about multiple revisions of the same entity.

 +---------------------------------+
 | Repository - name               |
 |              accessor           |
 |                                 |
 |    Entity - type                |
 |             name                |
 |                                 |
 |        Revision - revisionNumber|
 |                   major.minor   |
 +---------------------------------+

(At tree depth 1, we have repositories; at tree depth 2, we have entities; at tree depth 3, we have revisions.)

[edit] Candidate Classes

RepositoryInterface
RepositoryPath
Repository
Entity
Revision
RevisionNumber
RepositoryAccessor

  • RepositoryInterface
    • "Front end for access to repository services."
    • Stereotypes: service provider, coordinator (maybe), interfacer
    • Knows:
      • repositoryNames
      • createRepository: aConnectionString
      • openRepository: aConnectionString
      • entityPairsIn: aRepositoryName — entity pair associates type and name, e.g., 'package' → 'myPackage'
      • registerEntityType: aString readerClassName: aClassName writerClassName: aClassName
      • versionsOfEntityPair: anEntityPair inRepositoryNamed: aRepositoryName
      • commit: anObject repositoryName: aRepositoryName entityPair: anEntityPair version: aVersionNumber — throws an exception if messed up; if commit succeeds, anObject should be marked clean; commit should also update the version annotation
      • repositoryName: aRepositoryName entityPair: anEntityPair version: aVersionNumber
  +---------------------+
  | +-+                 |
  | |I|    +----------+ |
  | |n|    |Repository| |
  | |t|    +----------+ |
  | |e|    +----------+ |
  | |r|    |Entity    | |
  | |f|    +----------+ |
  | |a|    +----------+ |
  | |c|    |Revision  | |
  | |e|    +----------+ |
  | +-+                 |
  +---------------------+

[edit] IDE

[edit] Use Cases

(Incomplete)

  • Revert
Personal tools
services