diff --git a/ColdFrameProfile.html b/ColdFrameProfile.html index 9275753e..f1fc1ee5 100644 --- a/ColdFrameProfile.html +++ b/ColdFrameProfile.html @@ -1,10 +1,8 @@ -
- - +association-class-naming *deprecated* - - | +
|
- This stereotype supports the tags {association-name}, which is used to specify the name to be used for the association part - of an AssociationClass, and {class-name}, which is used to specify the name to be used for the class part. Both can be supplied; - if only one is supplied, the other part retains the name specified in the model; if neither is supplied, the name used is - formed by appending "_Class" to the AssociationClass name. - | +This stereotype supports the tags {association-name}, which is used to specify the + name to be used for the association part of an AssociationClass, and {class-name}, + which is used to specify the name to be used for the class part. Both can be supplied; + if only one is supplied, the other part retains the name specified in the model; if + neither is supplied, the name used is formed by appending "_Class" to the AssociationClass + name. |
|
- The attribute must be read from memory or written to memory each time it is accessed, like «volatile», but additionally in
- such a way that it's proof against concurrent access. The implementation may limit the size of objects that can be treated as atomic. - |
+ The attribute must be read from memory or written to memory each time it is accessed,
+ like «volatile», but additionally in such a way that it's proof against concurrent
+ access. The implementation may limit the size of objects that can be treated as atomic. |
|
@@ -173,7 +170,8 @@
abbreviation | -Normally the abbreviation of a class's name is formed from the initial letters of the words in the name. If there's only one - word, it's formed by prepending "A_" or "An". This tag allows the modeller to override this, if the default behaviour leads - to aliasing. - | +Normally the abbreviation of a class's name is formed from the initial letters of + the words in the name. If there's only one word, it's formed by prepending "A_" or + "An". This tag allows the modeller to override this, if the default behaviour leads + to aliasing. | abbreviation |
access-to-type | -Names the type to which the marked type is an access; it must be a domain type, not one of those that ColdFrame defines (such
- as Integer). Mandatory. - |
+ Names the type to which the marked type is an access; it must be a domain type, not
+ one of those that ColdFrame defines (such as Integer). Mandatory. |
access |
association-name *deprecated* - - | -This tag is used to specify the name to be used for the association part of an AssociationClass. If not supplied, the name - used is the AssociationClass name. - | + +This tag is used to specify the name to be used for the association part of an AssociationClass. + If not supplied, the name used is the AssociationClass name. | association-class-naming |
class-name *deprecated* - - | -This tag is used to specify the name to be used for the class part of an AssociationClass. If neither this tag nor {association-name} - is supplied, the name used is formed by appending "_Class" to the AssociationClass name. - | + +This tag is used to specify the name to be used for the class part of an AssociationClass. + If neither this tag nor {association-name} is supplied, the name used is formed by + appending "_Class" to the AssociationClass name. | association-class-naming |
formalizes | -The marked identifying attribute suffices to formalize the named association. It must be the name of the class at the other - end of the association. - | +The marked identifying attribute suffices to formalize the named association. It must + be the name of the class at the other end of the association. | id |
hash | -Specifies how a renamed type is to be hashed. Currently the only supported styles are: * 'discrete', which will work for imported enumerations or integer ranges but not for private or access types, and * 'enumeration', which is similar but acts as a code generation optimization directive. - |
+ Specifies how a renamed type is to be hashed. Currently the only supported styles
+ are: * 'discrete', which will work for imported enumerations or integer ranges but not + for private or access types, and * 'enumeration', which is similar but acts as a code generation optimization directive. |
renaming |
hash | -Specifies how an imported type is to be hashed. Currently the only supported styles are: * 'discrete', which will work for imported enumerations or integer ranges but not for private or access types, and * 'enumeration', which is similar but acts as a code generation optimization directive. - |
+ Specifies how an imported type is to be hashed. Currently the only supported styles
+ are: * 'discrete', which will work for imported enumerations or integer ranges but not + for private or access types, and * 'enumeration', which is similar but acts as a code generation optimization directive. |
imported |
language | -Specifies the programming language whose conventions are to be used in the translation; mandatory. | +Specifies the programming language whose conventions are to be used in the translation; + mandatory. | convention |
length | -Specifies the maximum length of the «bounded-string» string. | +Specifies the maximum length of the «bounded-string» string. | bounded-string |
length | -Specifies the length of the «fixed-string» string. | +Specifies the length of the «fixed-string» string. | fixed-string |
mod | -If the value is m, the tagged «unsigned type» is to be able to store values 0 .. m - 1. | +If the value is m, the tagged «unsigned type» is to be able to store values 0 .. m + - 1. | unsigned |
name | -The Ada package name to be used, if not the default (the UML package name). Should match the name of the parent «domain» package. - |
+ The Ada package name to be used, if not the default (the UML package name). Should match the name of the parent «domain» package. |
domain-interface |
Autonumber | -Used for automatically-generated instance identifiers. For Ada, translates to Long_Long_Integer (typically 64-bits). - |
+ Used for automatically-generated instance identifiers. For Ada, translates to Long_Long_Integer (typically 64-bits). |
|
Boolean | -The standard boolean type. Corresponds directly to the Ada Boolean. - |
+ The standard boolean type. Corresponds directly to the Ada Boolean. |
|
Character | -The standard character type. Corresponds directly to the Ada Character. - |
+ The standard character type. Corresponds directly to the Ada Character. |
|
Counterpart | -Used for references to instances in other domains (but see «counterpart»). | +Used for references to instances in other domains (but see «counterpart»). | |
Date | -May correspond to a calendar date, but for Ada translates to ColdFrame.Project.Calendar.Time (the same as Time). | +May correspond to a calendar date, but for Ada translates to ColdFrame.Project.Calendar.Time + (the same as Time). | |
Duration | -A time interval. Corresponds directly to the Ada Duration. - |
+ A time interval. Corresponds directly to the Ada Duration. |
|
Float | -The standard short float type. Corresponds directly to the Ada Float. - |
+ The standard short float type. Corresponds directly to the Ada Float. |
|
Integer | -The standard integer type. Corresponds directly to the Ada Integer. - |
+ The standard integer type. Corresponds directly to the Ada Integer. |
|
Long_Float | -The standard long float type. Corresponds directly to the Ada Long_Float. - |
+ The standard long float type. Corresponds directly to the Ada Long_Float. |
|
Natural | -An integer, constrained to be greater than or equal to zero. Corresponds directly to the Ada Natural. - |
+ An integer, constrained to be greater than or equal to zero. Corresponds directly to the Ada Natural. |
|
Positive | -An integer, constrained to be greater than zero. Corresponds directly to the Ada Positive. - |
+ An integer, constrained to be greater than zero. Corresponds directly to the Ada Positive. |
|
Real | -A floating-point value. For Ada, translates to Float. - |
+ A floating-point value. For Ada, translates to Float. |
|
String | -A fixed-length character string, normally used as an operation parameter, when it has the length of the actual. Can only be
- used for an attribute if the attribute is given an initial value. Corresponds directly to the Ada String. |
+ A fixed-length character string, normally used as an operation parameter, when it
+ has the length of the actual. Can only be used for an attribute if the attribute is
+ given an initial value. Corresponds directly to the Ada String. |
|
Text | -An unbounded string. For Ada, translates to Ada.Strings.Unbounded.Unbounded_String. - |
+ An unbounded string. For Ada, translates to Ada.Strings.Unbounded.Unbounded_String. |
|
Time | -May correspond to a time-of-day, but for Ada translates to ColdFrame.Project.Calendar.Time (the same as Date). | +May correspond to a time-of-day, but for Ada translates to ColdFrame.Project.Calendar.Time + (the same as Date). | |
Timer | -Used mainly for timeouts in state machines. A timer can hold at most one event, which is to be released at some future time but which can be cancelled or revoked. - |
+ Used mainly for timeouts in state machines. A timer can hold at most one event, which is to be released at some future time but + which can be cancelled or revoked. |
|
Unbounded_String | -A variable-length string. Corresponds directly to Ada.Strings.Unbounded.Unbounded_String. - |
+ A variable-length string. Corresponds directly to Ada.Strings.Unbounded.Unbounded_String. |
Copyright (C) Simon Wright <simon@pushface.org>
-This package is free software; you can redistribute it and/or modify it under terms of the GNU General Public License - as published by the Free Software Foundation; either version 2, or (at your option) any later version. This package - is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should - have received a copy of the GNU General Public License distributed with this package; see file COPYING. If not, - write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -
-Contains the input-output domain Digital_IO for ColdFrame's House Management demonstration.
+This package is free software; you can redistribute it and/or modify it + under terms of the GNU General Public License as published by the Free Software + Foundation; either version 2, or (at your option) any later version. This package + is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the GNU General Public License for more details. You should have + received a copy of the GNU General Public License distributed with this package; + see file COPYING. If not, write to the Free Software Foundation, 59 Temple Place + - Suite 330, Boston, MA 02111-1307, USA.
+Contains the input-output domain Digital_IO for ColdFrame's House Management + demonstration.
This type is a class-wide pointer to the abstract type Implementation; the required concrete bottom half calls - Register to connect itself to the top half. -
-Imported from Digital_IO_Support. -
+This type is a class-wide pointer to the abstract type Implementation; the + required concrete bottom half calls Register to connect itself to the top half.
+Imported from Digital_IO_Support.
Implementation_Class_P has operations:
Numbers the input (switch) signal pins.
-A constrained version of Integer from 0 to 15. -
+A constrained version of Integer from 0 to 15.
Input_Signal has operations:
Returns the current state of the input signal for pin S.
Parameters:
@@ -105,7 +105,8 @@Provides application domains with callback facilities for input signal state changes.
+Provides application domains with callback facilities for input signal state + changes.
Callback support is provided.
A record type, with attributes:
Numbers the output (lamp) signal pins.
-A constrained version of Integer from 0 to 15. -
+A constrained version of Integer from 0 to 15.
Output_Signal has operations:
Copyright (C) Simon Wright <simon@pushface.org>
-This package is free software; you can redistribute it and/or modify it under terms of the GNU General Public License - as published by the Free Software Foundation; either version 2, or (at your option) any later version. This package - is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should - have received a copy of the GNU General Public License distributed with this package; see file COPYING. If not, - write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -
+This package is free software; you can redistribute it and/or modify it + under terms of the GNU General Public License as published by the Free Software + Foundation; either version 2, or (at your option) any later version. This package + is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the GNU General Public License for more details. You should have + received a copy of the GNU General Public License distributed with this package; + see file COPYING. If not, write to the Free Software Foundation, 59 Temple Place + - Suite 330, Boston, MA 02111-1307, USA.
This domain represents an electronic household control system.
The first release only manages the stairwell lighting system.
Eacb Button controls one or more Lamps; each Lamp is controlled by one or more Buttons.
-There's no association-specific data, but this has to be an association class because it's a many-to-many relationship.
+Eacb Button controls one or more Lamps; each Lamp is controlled by one or more + Buttons.
+There's no association-specific data, but this has to be an association + class because it's a many-to-many relationship.
This is an Association Class.
Button (1..n) Controls (1..n) Lamp
Lamp (1..n) Is_Controlled_By (1..n) Button
-There are one or more pushbuttons on each landing. Each pushbutton controls a number of Lamps; if any of the controlling - Buttons is set, the controlled Lamp is lit. -
+There are one or more pushbuttons on each landing. Each pushbutton controls + a number of Lamps; if any of the controlling Buttons is set, the controlled + Lamp is lit.
Supertype in Button. - -
+Each Button is uniquely identified by its name. The name corresponds to the geographical location of the button.
+Each Button is uniquely identified by its name. The name corresponds to the + geographical location of the button.
Acts as receiver of state changes from Digital IO, via Signal State Callback. Calls the instance Changed so the Button - can take the appropriate action. -
+Acts as receiver of state changes from Digital IO, via Signal State Callback. + Calls the instance Changed so the Button can take the appropriate action.
Parameters:
Called to indicate that the Button has been pushed or released.
Parameters:
@@ -177,23 +149,20 @@There is a lamp between each pair of landings.
-A Lamp is connected to one or more Buttons; it is lit if any of the connected Buttons is set.
+There is a lamp between each pair of landings.
+A Lamp is connected to one or more Buttons; it is lit if any of the + connected Buttons is set.
Each Lamp is uniquely identified by its name. The name corresponds to the geographical location of the lamp.
+Each Lamp is uniquely identified by its name. The name corresponds to the + geographical location of the lamp.
This operation initializes the Lamps and Buttons.
This operation is used by a linked Button to tell the Lamp to evaluate all its linked Buttons to see if any are Set - (in which case the Lamp should be lit) or all are Reset (in which case the Lamp should be off). -
+This operation is used by a linked Button to tell the Lamp to evaluate all + its linked Buttons to see if any are Set (in which case the Lamp should be + lit) or all are Reset (in which case the Lamp should be off).
When a Timed Button is pushed, it remains set for a preset period.
-If it is pushed again while it is still set, the set period is extended by the preset period.
+When a Timed Button is pushed, it remains set for a preset period.
+If it is pushed again while it is still set, the set period is extended + by the preset period.
Subtype of Button in Button. - -
+This ColdFrame Timer is used to reset the Button at the end of its activation period.
+This ColdFrame Timer is used to reset the Button at the end of its activation + period.
This overriding implementation returns the current state of the Timed Button (True => on)
+This overriding implementation returns the current state of the Timed Button + (True => on)
This overriding implementation is called to indicate that the Button has been pushed or released.
-For this kind of Button, actions a Button_Pushed event in case of a push; a release is ignored.
+This overriding implementation is called to indicate that the Button has + been pushed or released.
+For this kind of Button, actions a Button_Pushed event in case of + a push; a release is ignored.
Parameters:
This state entry action sets the instance Timeout to the required activation period.
+This state entry action sets the instance Timeout to the required activation + period.
A Toggle Button is a push-on, push-off toggle.
+A Toggle Button is a push-on, push-off toggle.
Subtype of Button in Button. - -
+This overriding implementation returns the current state of the Toggle Button (from On)
+This overriding implementation returns the current state of the Toggle Button + (from On)
This overriding implementation is called to indicate that the Button has been pushed or released.
-For this kind of Button, toggles On in case of a push; a release is ignored.
+This overriding implementation is called to indicate that the Button has + been pushed or released.
+For this kind of Button, toggles On in case of a push; a release + is ignored.
Notifies connected lamps of the change.
Parameters:
This type is used by the supporting Digital IO domain to report input (switch) state changes.
-Imported from Digital_IO. -
+This type is used by the supporting Digital IO domain to report input (switch) + state changes.
+Imported from Digital_IO.
There is a lamp beween each pair of landings. This type names the lamps; the name is that of the landing on whose ceiling - the lamp is fixed. -
+There is a lamp beween each pair of landings. This type names the lamps; the + name is that of the landing on whose ceiling the lamp is fixed.
An enumeration, with literals:
This type is used by the supporting Digital IO domain to name outputs (lamps).
-Imported from Digital_IO. -
+Imported from Digital_IO.
Some of the pushbuttons are 'timed', that is, the electrical connection is made for a period after the button is pushed. - If the button is pushed again before the period expires, the made period is extended. -
-A constrained version of Button_Name from Basement_Timed to Second_Floor_Timed. -
+Some of the pushbuttons are 'timed', that is, the electrical connection is + made for a period after the button is pushed. If the button is pushed again + before the period expires, the made period is extended.
+A constrained version of Button_Name from Basement_Timed to Second_Floor_Timed.
Some of the pushbuttons are 'toggled', that is, the electrical connection is made when the button is pushed, and remains - made until the Button is pushed again. -
-A constrained version of Button_Name from Basement_Toggle to Second_Floor_Toggle. -
+Some of the pushbuttons are 'toggled', that is, the electrical connection is + made when the button is pushed, and remains made until the Button is pushed + again.
+A constrained version of Button_Name from Basement_Toggle to Second_Floor_Toggle.
\ No newline at end of file diff --git a/House_Management.images/House_Management.A1.class.cmapx b/House_Management.images/House_Management.A1.class.cmapx index 58e31ba4..7f0d29c7 100644 --- a/House_Management.images/House_Management.A1.class.cmapx +++ b/House_Management.images/House_Management.A1.class.cmapx @@ -1,9 +1,9 @@ diff --git a/House_Management.images/House_Management.A1.class.png b/House_Management.images/House_Management.A1.class.png index 01f66344..a4c3cb69 100644 Binary files a/House_Management.images/House_Management.A1.class.png and b/House_Management.images/House_Management.A1.class.png differ diff --git a/House_Management.images/House_Management.Button.class.cmapx b/House_Management.images/House_Management.Button.class.cmapx index d0377766..44df57d7 100644 --- a/House_Management.images/House_Management.Button.class.cmapx +++ b/House_Management.images/House_Management.Button.class.cmapx @@ -1,12 +1,12 @@ diff --git a/House_Management.images/House_Management.Button.class.png b/House_Management.images/House_Management.Button.class.png index 975bc879..1ba4eead 100644 Binary files a/House_Management.images/House_Management.Button.class.png and b/House_Management.images/House_Management.Button.class.png differ diff --git a/House_Management.images/House_Management.Lamp.class.cmapx b/House_Management.images/House_Management.Lamp.class.cmapx index 9025b4ff..7188ab07 100644 --- a/House_Management.images/House_Management.Lamp.class.cmapx +++ b/House_Management.images/House_Management.Lamp.class.cmapx @@ -1,6 +1,6 @@ diff --git a/House_Management.images/House_Management.Lamp.class.png b/House_Management.images/House_Management.Lamp.class.png index 18c0f219..3fb07513 100644 Binary files a/House_Management.images/House_Management.Lamp.class.png and b/House_Management.images/House_Management.Lamp.class.png differ diff --git a/House_Management.images/House_Management.Timed_Button.class.cmapx b/House_Management.images/House_Management.Timed_Button.class.cmapx index 37a9e5b1..6ef93af8 100644 --- a/House_Management.images/House_Management.Timed_Button.class.cmapx +++ b/House_Management.images/House_Management.Timed_Button.class.cmapx @@ -1,6 +1,6 @@ diff --git a/House_Management.images/House_Management.Timed_Button.class.png b/House_Management.images/House_Management.Timed_Button.class.png index 693aee75..b80cf85f 100644 Binary files a/House_Management.images/House_Management.Timed_Button.class.png and b/House_Management.images/House_Management.Timed_Button.class.png differ diff --git a/House_Management.images/House_Management.Timed_Button.state.png b/House_Management.images/House_Management.Timed_Button.state.png index 46303da6..d4e2778f 100644 Binary files a/House_Management.images/House_Management.Timed_Button.state.png and b/House_Management.images/House_Management.Timed_Button.state.png differ diff --git a/House_Management.images/House_Management.Toggle_Button.class.cmapx b/House_Management.images/House_Management.Toggle_Button.class.cmapx index e4ff32d4..dbc6f97d 100644 --- a/House_Management.images/House_Management.Toggle_Button.class.cmapx +++ b/House_Management.images/House_Management.Toggle_Button.class.cmapx @@ -1,6 +1,6 @@ diff --git a/House_Management.images/House_Management.Toggle_Button.class.png b/House_Management.images/House_Management.Toggle_Button.class.png index c3d7b445..6f3008f7 100644 Binary files a/House_Management.images/House_Management.Toggle_Button.class.png and b/House_Management.images/House_Management.Toggle_Button.class.png differ diff --git a/House_Management.images/House_Management.overall.cmapx b/House_Management.images/House_Management.overall.cmapx index 44d981ef..9782a0ef 100644 --- a/House_Management.images/House_Management.overall.cmapx +++ b/House_Management.images/House_Management.overall.cmapx @@ -1,15 +1,15 @@ diff --git a/House_Management.images/House_Management.overall.png b/House_Management.images/House_Management.overall.png index c849ee59..e72498cb 100644 Binary files a/House_Management.images/House_Management.overall.png and b/House_Management.images/House_Management.overall.png differ diff --git a/house-2.gif b/house-2.gif deleted file mode 100644 index 674c8af8..00000000 Binary files a/house-2.gif and /dev/null differ diff --git a/house-2.png b/house-2.png new file mode 100644 index 00000000..014b5728 Binary files /dev/null and b/house-2.png differ diff --git a/self-events.png b/self-events.png index f6bbef06..09d9e2d9 100644 Binary files a/self-events.png and b/self-events.png differ diff --git a/textuml.pdf b/textuml.pdf index b3a9c737..91f2a7ba 100644 Binary files a/textuml.pdf and b/textuml.pdf differ diff --git a/use-cases.html b/use-cases.html index c153c472..0d509201 100644 --- a/use-cases.html +++ b/use-cases.html @@ -1,379 +1,336 @@ - + + + +--- The Detailed Node Listing --- - -
Instances - -
- -Associations - -
- -Inheritance relationships -
- -Glossary +
- - +When code is automatically generated from a model (in the present case, a UML model), there are two approaches: - -
A design model is derived from an analysis model by adding support classes to map the analysis model to the Software Architecture -(see Software Architecture). An example would be a container for all +(see Software Architecture). An example would be a container for all the instances of a given class. - -
A tool which uses this approach is Rational Rose.
-
-
A tool which uses this approach is Rational Rose. +
+An analysis model contains classes and relationships that are part of the subject matter of the analyzed subsystem. Code which supports the execution of the model (for example, navigation from an instance of one class through an association to find the set of corresponding instances of another class) is automatically generated. - -
Tools which use this approach include Software through Pictures from -Aonix, Rhapsody from I-Logix, xUML from -Abstract Solutions (was +
+Tools which use this approach include Software through Pictures from +Aonix, Rhapsody from I-Logix, xUML from +Abstract Solutions (was Kennedy-Carter), BridgePoint from -Mentor Graphics +Mentor Graphics (was Project Technology; now open-sourced), and the present project. +
+Automatically-generated support code comes in several flavours: - -
Automatically-generated support code comes in several flavours: +
+The code generation process writes out new code. An example is the creation of a record structure to correspond to instance attributes. +
+The new code is an instantiation of an existing generic component. +
+The new code is an extension of an existing (base) component. +
+This set of Use Cases (well, that's what I'm calling them!) covers the -requirements to be met by the Software Architecture (see Software Architecture), particularly by supporting components. - -
The Actor concerned is the analyst who specifies the logic of operations +
This set of Use Cases (well, that’s what I’m calling them!) covers the +requirements to be met by the Software Architecture (see Software Architecture), particularly by supporting components. +
+The Actor concerned is the analyst who specifies the logic of operations or actions. The programmer who implements these specifications (or, in an advanced tool such as iUML or BridgePoint, implements the mechanisms which provide full translation) is, rather, concerned with building components to meet the requirements expressed here, and (eventually) with using them. - -
No distinction is made at this point between generic and base +
+No distinction is made at this point between generic and base components. +
- - +It isn't possible to maintain all the invariants of the model (for +
It isn’t possible to maintain all the invariants of the model (for example, constraints on relationships) within any given operation; on the other hand, the analyst must not allow any operation to complete with the model in an inconsistent state. +
- - - -The existence of an Instance must be independent of how many copies of its data are held. One possibility is to have the Class be responsible for the existence of Instances. +
-